Bonjour,
Ce n'est pas dû à la normalisation (qui est une conséquence de ce qui suit). C'est dû au fait qu'au niveau logique (MLD) une association de type 2b se transforme en lien référentiel et non pas en table or un lien ne peut pas contenir d'attribut.
Voici un exemple typique. Une ligne de commande porte sur un et un seul article pour une certaine quantité.
Le MCD :
[ LigneCommande ]--1,1----( porte_sur )----0,n--[ Article ]
- LigneCommande est identifiée par Id_LC
- Article est identifié par Id_AR
- "porte_sur" contient la propriété Quantité
Le MLD issu de ce MCD (clés soulignées, clé étrangères suffixées par #) :
LigneCommande (Id_LC, ..., Id_AR#)
Article (Id_AR, ...)
Où placer l'attribut Quantité ?
L'association (la CIF) "porte_sur" s'est transformée en lien référentiel matérialisé par la clé étrangère Id_AR dans la table LigneCommande. Il est évident que ce lien se résumant à un attribut ne peut pas "contenir" un autre attribut. Quantité trouve sa place dans la table LigneCommande.
LigneCommande (Id_LC, Quantité, ..., Id_AR#)
Si l'on procède maintenant à une rétro-conception consistant à retrouver le MCD à partir du MLD ci-dessus. L'attribut Quantité se trouvera affecté non pas à l'association mais à l'entité LigneCommande. C'est la raison pour laquelle j'ai précisé :
(en réalité 1,1 car les cardinalités 0,1 donnent lieu à une table intermédiaire)
Partager