Ce mot faire parfois peur aux débutants en base de données et il est fondamental en base de données. Lorsque j’étais étudiant, c’était un incontournable (j’ai eu cette question au BAC notamment).
L’intégrité référentielle est un mécanisme qui protège le contenu et les relations d’une base de données. Correctement construite, une base de données fait appel à des données situées dans différents emplacements (les tables). Pour que les données restent utilisables et cohérentes, il ne faut pas que l’on puisse détruire des données qui dépendent les unes des autres. C’est le rôle de l’intégrité référentielle de protéger ces relations.
Dit autrement, l’intégrité référentielle est une contrainte que le concepteur de bases de données s’impose afin de garantir l’intégrité des données stockées.
Techniquement dans une base de données relationnelle, l’intégrité référentielle vérifie qu’une valeur de clé étrangère existe bien en tant que valeur de clé primaire dans une autre table. Quand une clé étrangère est utilisée, elle doit obligatoirement exister en tant que clé primaire dans la table liée.
Exemple : Des factures sont reliées à un client. L’intégrité référentielle empêchera la suppression d’un client si des factures sont déjà stockées dans la base de données. En procédant ainsi, les factures seront toujours reliées à leur client et l’utilisateur ne pourra pas supprimer (involontairement) des données essentielles.
Suivant les bases de données, il existe un ensemble d’actions qui découlent de l’intégrité référentielle : la mise en cascade. On peut ainsi mettre à jour en cascade ou supprimer en cascade. Dans l’exemple précédent, si on supprime un client, on peut choisir de supprimer en cascade les factures qui lui sont liées. Ce système bien pratique évite d’avoir des données orphelines mais nécessite de bien comprendre la logique de suppression en cascade qui en découle.
À savoir que toutes les bases de données ne proposent pas de mécanisme d’intégrité référentielle. Parfois le mécanisme est inhérent au SGBD, parfois c’est au concepteur de le mettre en place.