Contraintes de l'héritage par les classes filles avec classe mère non abstraite

Méthode

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 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

Contrainte : PROJECTION(R1,a) INTERSECTION (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)

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.