Contraintes de l'héritage par référence

MéthodeHéritage exclusif (cas général)

Dans le cas général d'un héritage exclusif, il faut ajouter une contrainte pour que les même tuples ne se trouvent pas à la fois dans R2 et R3

Héritage exclusif (non complet)

R1(#a,b)

R2(#a=>R1,c,d) avec c KEY

R3(#a=>R1,e,f) avec e KEY

Contrainte : INTERSECTION (PROJECTION(R2,a), PROJECTION(R3,a)) = {}

MéthodeHéritage par référence avec classe mère abstraite

Si la classe mère est abstraite, il faut ajouter la contrainte que tous les tuples de R1 sont référencés par un tuple de R2 ou de R3.

Héritage (classe mère abstraite)

R1(#a,b)

R2(#a=>R1,c,d) avec c KEY

R3(#a=>R1,e,f) avec e KEY

Contraintes : PROJECTION(R1,a) = PROJECTION(R2,a) UNION PROJECTION(R3,a)

Exemple

Soit la classe A avec la clé K et les attributs A1 et A2. Soit la classe B, classe fille de A, comprenant la clé K' et les attributs B1 et B2. Le modèle relationnel correspondant selon cette transformation est :

1
A (#K, A1, A2)
2
B (#K=>A, K', B1, B2)

Cette solution est particulièrement adaptée lorsque la classe mère n'est pas abstraite, car cela en autorise l'instanciation sans aucun bruit dans la relation lié aux classes filles. Par contre si la classe mère est abstraite il faut introduire une contrainte dynamique complexe pour imposer la présence d'un tuple référençant dans une des classes filles.

Ainsi dans l'exemple précédent, un A peut être instancié en toute indépendance par rapport à la relation B.