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
fka OR fkb
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
Classe4.fka ne référence que des enregistrements tels que Classe1.t=3
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
fka ne référence que des enregistrements tels que t=2 ; si fka alors t=3
Contraintes en UML
Liste des contraintes en R