Te la spiego in 5 minuti che si fa prima. L'integrita' referenziale e' uno strumento che serve essenzialmente per mantenere la consistenza dei dati. Il classico esempio e' questo:
Tabella categoria prodotti:
codice:
IDCategoria
DescrizioneCategoria
Tabella prodotto
codice:
IDProdotto
IDCategoria
DescrizioneProdotto
Per creare un legame fra i due, non fai altro che fare:
codice:
ALTER TABLE PRODOTTO
ADD CONSTRAINT nomeConstraintATuaScelta FOREIGN KEY (`IDCategoria`) REFERENCES CATEGORIAPRODOTTI (IDCATEGORIA)
Adesso il database sa che c'e' un legame fra questi due campi.
Se tu adesso provi a inserire un prodotto con un IDCategoria che non esiste, la query fallisce.
Se provi a eliminare una categoria per cui esiste almeno un prodotto, la query fallisce.
Se vuoi cancellare una categoria e tutti i suoi prodotti, fai:
codice:
DELETE FROM CATEGORIAPRODOTTI WHERE ID=4 CASCADE
Cosi' tutti i prodotti con categoria=4 vengono cancellati in cascata.
Analogamente:
codice:
UPDATE CATEGORIAPRODOTTI SET ID=5 WHERE ID=4 CASCADE
fa si' che il DBMS faccia un update automatico a tutti i prodotti con IDCategoria=5 e lo imposti pari a 4.
Se quando crei la FOREIGN KEY aggiungi la clausola ON DELETE CASCADE e/o ON UPDATE CASCADE, il cascade e' automatico. Non sempre questo e' desiderabile: e' possibile che uno preferisca nella query specificare il CASCADE a mano, a seconda delle scelte e delle necessita'.