Les contrainesles dépendances d'inclusion

Seconde catégorie des contraintes d'intégrité, les dépendances d'inclusion (DI) sont un concept clé pour la conception de schémas de bases de données.
Elles sont comparables aux DF, c'est-àdire qu'elles permettent de dissocier les bons des mauvais schémas

Mais alors que les DF se concentraient sur les contraintes intra-relations, les DI se concentrent elles sur les contraintes inter-relations.

On a coutume de dire que les DF généralisent le concept des clés primaires, tandis que les DI généralisent le concept des clés étrangères, elles sont aussi appelées les contraintes d'intégrité référentielle.

"Un exemple, un exemple, un exemple!"

Revenons sur notre base de données. Sans violer aucune DF, on peut donner une note à un étudiant qui n'existe pas et ce, dans un cours qui n'existe pas non plus !!!

⇒ L'idée est à nouveau de restreindre les insertions permises en spécifiant deux nouvelles contraintes : "une note ne peut être saisie que pour un étudiant qui existe dans la relation Etudiants et un cours qui existe dans la relation Cours".

Syntaxe et sémantique des DI

Soient R un schéma de base de données R1 et R2 deux schémas de relation de R.
Une dépendance d'inclusion sur R est une déclaration de la forme R1[X] ⊆ R2[Y], avec X et Y des séquences d'attributs distincts appartenant à schema(R1) et schema(R2) respectivement.
On est repartis en bon français. Ca veut tout simplement dire que si on veut mettre une valeur pour un attribut X dans la table R1, alors il faut qu'on retrouve cette valeur dans la liste des valeurs pour l'attribut Y de la table R2.

Affectation[id] ⊆ Etudiant[id]
Affectation[cnum] ⊄ Cours[cnum]

Définition: Soient d une base de données sur R et r1, r2 ∈ d définies sur R1, R2 ∈ R respectivement.
Une dépendance d’inclusion R1[X] ⊆ R2[Y] est satisfaite par d, noté d ╞ R1[X] ⊆ R2[Y], si et seulement si ∀ t1 ∈ r1, ∃ t2 ∈ r2 tq t1[X] = t2[Y]

Que pensez vous des assertions suivantes ?
{ Affectations, Etudiants } ╞ Affectation[id] ⊆ Etudiant[id]
{ Affectations, Cours } ╞ Affectation[cnum] ⊆ Cours[cnum]

⇒ Les clés étrangères sont des cas particuliers de dépendances d'inclusion, c'est-à-dire une clé étrangère est une partie gauche d'une DI dont la partie droite est une clé.