Cas problématiques

AttentionHéritage par les classes filles avec association M:N ou 1:N sur la classe mère

Héritage avec association x:N sur la classe mère

On traite le cas x=1 (1:N) avec Classe1 abstraite (mais le cas M:N et/ou classe non abstraite ne change rien au problème) :

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

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

Classe4(#g,h,fka=>Classe2, fkb=>Classe3)

Contrainte : fka OR fkb

La seule solution, peu élégante, consiste à ajouter autant de clés étrangères que de classes filles et à gérer le fait que ces clés ne peuvent pas être co-valuées.

AttentionHéritage non complet par la classe mère (association M:N ou 1:N sur une classe fille)

Héritage non complet

On traite le cas x=1 (1:N) (mais le cas M:N ne change rien au problème) :

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

Classe4(#g,h,fka=>Classe1)

Contraintes : Classe4.fka ne référence que des enregistrements tels que Classe1.t=3

On est obligé d'ajouter une contrainte pour limiter la portée de la clé étrangère de Classe4 ; on est sorti ici de ce que l'on sait faire de façon simple en relationnel.

AttentionHéritage non complet par la classe mère (association entre classes filles)

Héritage non complet

Classe1(#a,b,c,d,e,f,fka=>Classe1,t:{1,2,3})

Contraintes : fka ne référence que des enregistrements tels que t=2 ; si fka alors t=3

Dans ce cas la solution est encore plus problématique, elle permettra en l'état des associations entre Classe1 et Classe3, et même entre Classe3 et Classe3, on est très loin de la modélisation conceptuelle initiale.

Conseil

Afin de déterminer si un héritage est presque complet ou non, il faut donc surtout regarder les associations, ce sont elles qui poseront le plus de problème un fois en relationnel (à cause de l'intégrité référentielle).

ComplémentHéritage non exclusif

L'héritage non exclusif ne doit pas être traité par les classes filles, sous peine d'introduire de la redondance.

ComplémentHéritage multiple

L'héritage multiple sera généralement mieux géré avec un héritage par référence.

ComplémentLes cas problématiques obligent à ajouter des contraintes