Contraintes de l'héritage par la classe mère avec classe mère abstraite

Méthode

Si la classe mère est abstraite :

  1. sa valeur est ôtée de l'attribut de discrimination ;

  2. une contrainte supplémentaire doit vérifier que soit c soit e est obligatoirement valué (ou les deux).

Héritage (classe mère abstraite)

R1(#a,b,c,d,e,f,t:{2,3})

Contraintes :

  • c UNIQUE et e UNIQUE

  • AND (c NOT NULL OR e NOT NULL)

  • AND t NOT NULL

ExempleHéritage absorbé par la classe mère

Soit la classe 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
A (#K, A1, A2, B1, B2, C1, C2, T:{'B','C'})

Si l'on pose que A n'est pas abstraite, alors un tuple sera un A s'il a la valeur null pour sa propriété D. Si l'on pose que A est abstraite, on ajoutera la contrainte NOT NULL à la propriété T. On peut aussi ajouter 'A' aux valeurs possible de T.

ComplémentHéritage exclusif

Si l'héritage est exclusif, que la classe mère soit abstraite ou non, il faudrait vérifier par des contraintes que l'attribut de discrimination T et les attributs valués sont en correspondance, afin d'empêcher toute incohérence :

  • (T=2 AND c)

  • (T=3 AND e)

  • NOT (c AND e)

  • NOT (c AND f)

  • ...