Passage Type-association réflexif non associatif au modèle relationnel avec MySQL

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).

association-reflexive

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 :

create table TRAVAILLER_AVEC(
FK_TA_SOC_idSOC_DO INT NOT NULL,
FK_TA_SOC_idSOC_ST INT NOT NULL,     
FOREIGN Key (FK_TA_SOC_idSOC_DO) REFERENCES SOCIETE (idSociete),
FOREIGN Key (FK_TA_SOC_idSOC_ST) REFERENCES SOCIETE (idSociete),
PRIMARY KEY (FK_TA_SOC_idSOC_DO, FK_TA_SOC_idSOC_ST))
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Table des relations de travail entres Donneurs d’Ordres et Sous-Traitants';

A vous de jouer !

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *