Transformation des associations 1:1 (approche générale)

Il existe deux solutions pour transformer une association 1:1 :

  • Avec deux relations : on traite l'association 1:1 comme une association 1:N, puis l'on ajoute une contrainte UNIQUE sur la clé étrangère pour limiter la cardinalité maximale à 1 ;

  • Avec une seule relation : on fusionne les deux classes en une seule relation.

Association 1:1

MéthodeAvec deux relations (clé étrangère)

  • Une des deux relations est choisie pour porter la clé étrangère ;

  • on ajoute les contraintes : UNIQUE ou KEY (clé candidate) sur la clé étrangère ; et si nécessaire une contrainte imposant l'instanciation simultanée des deux relations.

Classe1(#a,b,c=>Classe2) avec c UNIQUE ou KEY

Classe2(#c,d)

Contrainte (éventuellement) : PROJ(Classe1,c)=PROJ(Classe2,c)

ou

Classe1(#a,b)

Classe2(#c,d,a=>Classe1) avec a UNIQUE ou KEY

Contrainte (éventuellement) : PROJ(Classe1,a)=PROJ(Classe2,a)

MéthodeAvec une relation (fusion)

  • On créé une seule relation contenant l'ensemble des attributs des deux classes ;

  • on choisit une clé parmi les clés candidates.

Classe12(#a,b,c,d) avec c UNIQUE ou KEY

ou

Classe21(#c,d,a,b) avec a UNIQUE ou KEY

RemarqueFusion des relations dans le cas de la traduction de l'association 1:1

Ce choix entre les deux méthodes sera conduit par une appréciation du rapport entre :

  • La complexité introduite par le fait d'avoir deux relations là ou une suffit

  • La pertinence de la séparation des deux relations d'un point de vue sémantique

  • Les pertes de performance dues à l'éclatement des relations

  • Les pertes de performance dues au fait d'avoir une grande relation

  • Les questions de sécurité et de sûreté factorisées ou non au niveau des deux relations

  • ...