Quelle est la différence entre la contrainte d'intégrité et l'intégrité référentielle? https://en.wikipedia.org/wiki/Referential_integrity


Réponse 1:

Lorsqu'une table contient des données qui «se réfèrent» à une autre dans la base de données, la précision de ces références est appelée intégrité référentielle. Si vous avez une table appelée CLASSES qui stocke des lignes avec des classes qui ont été enseignées et une deuxième table appelée CLASS_ROSTERS avec des lignes contenant des données sur les étudiants qui ont été inscrits dans ces classes, alors CLASS_ROSTERS fait référence à CLASSES. Vous ne devriez jamais avoir un enregistrement d'élève dans CLASS_ROSTERS pour lequel un enregistrement de classe correspondant n'existe pas dans la table CLASSES. Si cela se produit, alors l'intégrité référentielle a été perdue entre les deux tables.

L'un des mécanismes permettant de faire respecter l'intégrité est une contrainte de clé étrangère. Il s'agit d'un mécanisme de base de données qui pourrait être utilisé pour empêcher la saisie des enregistrements d'élève dans CLASS_ROSTERS lorsqu'un enregistrement de classe correspondant n'existe pas dans CLASSES. Une contrainte de clé étrangère est associée à plusieurs types de contraintes d'intégrité.

D'autres types de contraintes d'intégrité incluent les contraintes de clé primaire, les contraintes de clé uniques et les contraintes NOT NULL. Ce sont tous des mécanismes de base de données conçus pour maintenir l'intégrité des données. Leur rôle est d'empêcher l'insertion (ou la modification) de données dans la base de données qui enfreindraient les règles intégrées dans le modèle de données.


Réponse 2:

En termes simples.

Une contrainte d'intégrité est spécifique à l'instance d'élément de données telle qu'une restriction de type (doit être un nombre), ou une plage de valeurs, etc.

L'intégrité référentielle concerne la relation de cette instance d'élément de données avec d'autres données. Cela se voit le plus souvent avec des clés «étrangères». Par exemple, vous ne pouvez pas autoriser la facturation d'une facture pour un compte qui n'existe pas.