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 interculturale ovvero una proprietà dei dati che, se soddisfatta, richiede che ogni parametro di un campo (riga) di una relazione (tabella) esista come valore di un altro attributo in un'altra (o nella stessa) relazione.[1]

In parole povere, nei database relazionali, affinché sia rispettata l'integrità referenziale, ogni record di una query che sia stato dichiarato come foreign key può contenere solo valori della chiave primaria o chiave candidata di una tabella "madre" indentata.

Per esempio, cancellare un record che contiene un valore a cui fa riferimento una chiave primaria di un'altra tabella violerebbe l'integrità referenziale. Alcuni RDBMS possono garantire l'integrità relazionale, o cancellando le rispettive colonne di foreign key, oppure fermando tutto e non effettuando la cancellazione. Spesso si può scegliere quale metodo usare attraverso una "diga" di integrità relazionale definito in un data dictionary.

Note[modifica | modifica wikitesto]

  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.».