Petit rappel: un type-association réflexif matérialise une relation entre un type-entité et lui même. (ici le type-entité SOCIETE)
Nous sommes dans le cas d’un type association non symétrique. Il peut y avoir une société qui est donneur d’ordre d’une autre, et il peut également y avoir une société qui est sous-traitante d’une autre. Il y a donc bien une notion de hiérarchie !
Dans notre cas, on peut être sous-traitant de 0 à n sociétés (cardinalité 0,n), et on peut être donneur d’ordre de 0 à n sous-traitants (cardinalité 0,n).
Un type association n,n se transforme au passage au modèle relationnel en type-entité.
TRAVAILLER_AVEC(#idDonneurOrdre, #idSousTraitant)
La clé primaire du type-entité TRAVAILLER_AVEC sera composée de deux clés étrangères (clé composite) qui référencent toutes les deux idSociété mais qui ne porteront pas le même nom.
Allez, petite implémentation dans MySQL pour la forme :
A vous de jouer !