Gestion d'informations. Mutation vers les bases de données relationnelles et le langage SQL.par Jacques MUDUMBI Université de Yaoundé 1 - Master 2017 |
III.6. Intégrité structurelleIII.6.1. Notion et classificationEst appelé contrainte d'intégrité (CI), une propriété ou une règle que doivent satisfaire les données de la base pour être considérées comme correctes (sans ambiguïtés ni incohérences). Une base de données est dite intègre ou cohérente si ses contraintes d'intégrité sont satisfaites. Cela dit, qu'en pratique, ces contraintes ont pour effet de limiter les occurrences possibles des structures d'informations. La conception d'une base de données relationnelle se compose du schéma relationnel même et d'un ensemble de CIs. De cette présentation faite, il convient de classer les contraintes selon les valeurs d'attributs à savoir: ? Les contraintes d'intégrité statiques sont des propriétés qui doivent être vérifiées à tout moment : ? Les contraintes individuelles imposent un type de donnée (ex. entier long), un ensemble de valeurs (par exemple,
AnnéeEmbauche={2010..2017}, ? Les contraintes intra-relation portent sur les valeurs des attributs : unicité devaleur, cardinalité, dépendances entre les valeurs d'attributs différents (ex. "les espèces e3 et e6 ne peuvent cohabiter"). ? Les contraintes inter-relations sont des dépendances référentielles ou existentielles (ex. "tout vol doit avoir comme commandant de bord une personne référencée dans la table des pilotes"). 63 ? Les contraintes d'intégrité dynamiques sont des propriétés que doit respecter tout changement d'état de la base de données; elles en définissent les séquences possibles de changement d'état. (ex. "le salaire d'un employé ne peut qu'augmenter") Il s'ensuit que trois catégories de contraintes d'intégrité structurelles sont particulièrement importantes dans le modèle relationnel : les contraintes d'unicité (chaque table possède une clé d'identification qui en identifie les tuples de manière unique), les contraintes de domaine (les valeurs possibles d'un attribut sont restreintes à un ensemble de valeurs prédéfinies) et les contraintes d'intégrité référentielle (chaque valeur d'une clé étrangère doit exister comme valeur de la clé d'identification dans la table référencée). III.6.2. Intégrité référentielleCes choses étant dites, un avantage demeure, car le mécanisme d'intégrité référentielle impose que chaque valeur d'une clé étrangère existe comme valeur de la clé d'identification dans la table référencée. Tout SGBDR digne de ce nom attire et supporte ce concept fondamental ; prenons un exemple pour l'illustrer. Prenons le cas de la normalisation en 3NF de la table ELEVE, dans laquelle figure la classe d'inscription, ait fourni la table de la figure III.14. On remarque qu'aucune valeur de la clé étrangère _Class ne viole l'intégrité référentielle. Mais l'insertion d'un tuple tel que "0005, Mader, DESSDC" serait rejetée si la clé primaire de la table CLASSE ne contient pas la valeur "DESSDC". Partant de ces figures, l'on remarque que le respect de l'intégrité référentielle implique certaines actions. On a vu que le SGBDR vérifiait l'existence d'une valeur de clé étrangère lors de l'insertion d'un nouveau tuple ; mais que se passe-t-il si l'on supprime ou si 64 l'on modifie une valeur de la clé primaire dont dépendent d'autres valeurs dans une clé étrangère ? Plusieurs stratégies sont possibles: Tout d'abord, la suppression (ou la mise à jour) interdite : l'opération est tout simplement refusée ( ex. la suppression de la ligne "MEEA, Maîtrise EEA" est impossible car des tuples d'ELEVE y font référence), Ensuite, la suppression(ou la mise à jour) en cascade: dans ce mode, lorsqu'un tuple de la table référencée est supprimé (ou, respectivement, modifié dans ses attributs clés), tous les tuples dépendants sont aussi supprimés (resp. modifiés). Par exemple, la suppression du tuple "MEEA, Maîtrise EEA" entraîne celle des élèves portant les numéros 0001 et 0003 ; le changement de clé "MEEA" en "MEA" affecte de la même façon les valeurs de la clé étrangère pour ces élèves. Enfin, la suppression avec initialisation: toutes les clés étrangères égales à la clé primaire supprimée sont mises à la valeur nulle ( ex. la suppression du tuple "MEEA, Maîtrise EEA" entraîne la mise à NULL de l'attribut _Class des élèves portant les numéros 0001 et 0003). |
|