Contraintes de l'héritage par les classes filles

MéthodeHéritage par les classes filles avec clé au niveau de la classe classe mère

Dès lors que la classe mère possède un attribut unique :

  • on ajoute une contrainte pour vérifier cette unicité au niveau des classes filles.

Héritage (classe mère abstraite)

R2(#a,b,c,d) avec c KEY

R3(#a,b,e,f) avec e KEY

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

MéthodeHéritage par les classes filles avec classe mère non abstraite

Si la classe mère n'est pas abstraite :

  • On créé une relation supplémentaire pour gérer les objets de la classe mère

  • On ajoute une contrainte qui exprime que les tuples de la classe mère ne peuvent pas exister dans les classes filles

Héritage

R1(#a,b)

R2(#a,b,c,d) avec c KEY

R3(#a,b,e,f) avec e KEY

Contraintes :

  • INTERSECTION (PROJECTION(R2,a), PROJECTION(R3,a)) = {}

  • INTERSECTION (PROJECTION(R1,a), (PROJECTION(R2,a) UNION PROJECTION(R3,a)) = {}

ExempleHéritage absorbé par les classes filles

Soit la classe abstraite A avec la clé K et les attributs A1 et A2. Soit la classe B, classe fille de A avec les attributs B1 et B2. Soit la classe C, classe fille de A avec les attributs C1 et C2.

Le modèle relationnel correspondant selon cette transformation est :

1
B (#K, A1, A2, B1, B2)
2
C (#K, A1, A2, C1, C2)
3
Contrainte : INTERSECTION (PROJECTION(B,K), PROJECTION(C,K)) = {}

Si A n'avait pas été abstraite elle aurait donné naissance à une relation A possédant les attributs A1 et A2 et qui n'aurait alors contenu que les tuples qui ne sont ni des B ni des C.