Intégrité des données

L'application de l'intégrité des données garantit la qualité des données stockées dans la base. Par exemple, si un employé est défini avec un ID d'employé égal à 123, la base de données ne doit pas autoriser qu'un autre employé ait la même valeur d'ID. Si une colonne employee_rating est destinée à accueillir des valeurs comprises entre 1 et 5, la base de données ne doit pas accepter de valeur en dehors de cette plage. Si la table contient une colonne dept_id qui stocke le numéro de service de l'employé, la base de données ne doit accepter que des valeurs correspondant bien aux identificateurs de service de la société.

Lors de la planification des tables, deux étapes importantes consistent d'une part à identifier les valeurs valides pour une colonne et d'autre part à décider de la façon d'appliquer l'intégrité des données dans cette colonne. L'intégrité des données se répartit entre les catégories suivantes :

  • Intégrité d'entité

  • Intégrité de domaine

  • Intégrité référentielle

  • Intégrité définie par l'utilisateur.

Intégrité d'entité

L'intégrité d'entité définit une ligne comme étant une entité unique pour une table particulière. Elle garantit l'intégrité des colonnes d'identification ou de la clé primaire d'une table, par le biais d'index UNIQUE, de contraintes UNIQUE ou de contraintes PRIMARY KEY.

Intégrité de domaine

L'intégrité de domaine fait référence à la fourchette (au domaine) des entrées valides pour une colonne spécifique. Vous pouvez mettre en application l'intégrité de domaine pour restreindre le type, à l'aide des types de données, le format, à l'aide des contraintes CHECK et des règles, ou la fourchette des valeurs possibles, à l'aide des contraintes FOREIGN KEY et CHECK, des définitions DEFAULT et NOT NULL, et des règles.

Intégrité référentielle

L'intégrité référentielle préserve les relations définies entre les tables lors de l'insertion ou de la suppression de lignes. Dans SQL Server, l'intégrité référentielle est fondée sur les relations entre les clés étrangères et les clés primaires ou entre les clés étrangères et les clés uniques, via les contraintes FOREIGN KEY et CHECK. Elle garantit la cohérence des valeurs de clés entre les tables. Ce type de cohérence impose qu'il n'y ait aucune référence à des valeurs inexistantes et que, si la valeur d'une clé change, toutes les références qui y sont faites soient modifiées en conséquence dans l'ensemble de la base de données.

Lorsque vous mettez en application l'intégrité référentielle, SQL Server interdit aux utilisateurs d'effectuer les opérations suivantes :

  • ajouter ou modifier des lignes dans une table connexe lorsqu'il n'y a aucune ligne associée dans la table primaire ;

  • changer des valeurs dans une table primaire qui engendreraient des lignes orphelines dans une table connexe ;

  • supprimer des lignes dans une table primaire si des lignes connexes correspondantes existent.

Par exemple, avec les tables Sales.SalesOrderDetail et Production.Product de la base de données AdventureWorks2008R2, l'intégrité référentielle est basée sur la relation entre la clé étrangère (ProductID) de la table Sales.SalesOrderDetail et la clé primaire (ProductID) de la table Production.Product. Grâce à cette relation, une commande ne peut jamais référencer un produit qui n'existe pas dans la table Production.Product.

Intégrité référentielle utilisant des clés étrangères/primaires

Intégrité définie par l'utilisateur

L'intégrité définie par l'utilisateur vous permet de définir des règles propres à l'entreprise, qui n'appartiennent à aucune des autres catégories d'intégrité. Toutes les catégories d'intégrité acceptent l'intégrité définie par l'utilisateur. Cela englobe toutes les contraintes au niveau de la colonne ou de la table dans CREATE TABLE, les procédures stockées et les déclencheurs.