Vincolo di integrità referenziale

Da Wikipedia, l'enciclopedia libera.
Un esempio di database che non ha garantito integrità relazionale. In questo esempio c'è un valore di foreign key (artist_id) nella tabella album che fa riferimento ad un artista inesistente — in altre parole c'è un valore di una foreign key senza un corrispondente valore di primary key nella tabella di riferimento. Quello che è successo in questo esempio è che un artista chiamato "Aerosmith", con un'artist_id di 4, è stato cancellato dalla tabella artist. Però, l'album "Eat the Rich" faceva riferimento a questo artista. Se fosse stata imposta l'integrità relazionale, questa cancellazione non avrebbe potuto avere luogo.

Nell'ambito dei RDBMS, l'integrità referenziale è un vincolo di integrità di tipo interrelazionale ovvero una proprietà dei dati che, se soddisfatta, richiede che ogni valore di un attributo (colonna) di una relazione (tabella) esista come valore di un altro attributo in un'altra (o nella stessa) relazione.[1]

Meno formalmente, nei database relazionali, affinché sia rispettata l'integrità referenziale, ogni campo in una tabella che sia stato dichiarato come foreign key può contenere solo valori della chiave primaria o chiave candidata di una tabella "madre" relazionata.

Per esempio, cancellare un record che contiene un valore a cui fa riferimento una foreign key di un'altra tabella violerebbe l'integrità relazionale. Alcuni RDBMS possono garantire l'integrità relazionale, o cancellando le rispettive righe di foreign key, ovvero interrompendo l'operazione e non effettuando la cancellazione. Spesso si può scegliere quale metodo usare attraverso un vincolo di integrità relazionale definito in un data dictionary.

Note[modifica | modifica sorgente]

  1. ^ Mike Chapple, Referential Integrity, http://databases.about.com/, About.com. URL consultato il 17 marzo 2011.
    «Definition: Referential integrity is a database concept that ensures that relationships between tables remain consistent. When one table has a foreign key to another table, the concept of referential integrity states that you may not add a record to the table that contains the foreign key unless there is a corresponding record in the linked table.».