Association porteuse d'attributs → MLD
Les attributs d'une association suivent sa traduction : colonnes de la table de liaison si elle est n-n ou n-aire, colonnes de la table qui reçoit la clé étrangère si elle est fonctionnelle.
- attribut porté
- contenir
- liaison
- quantité
Syntaxe
(x,n)–(x,n) avec attributs → assoc(cle_a FK, cle_b FK, attributs…)(x,n)–(x,1) avec attributs → table côté (x,1) : (…, cle_a FK, attributs…)Exemple
MCD : CLIENT (0,n) ── PASSER ── (1,1) COMMANDE COMMANDE (1,n) ── CONTENIR ── (0,n) PRODUIT │ quantite, prix_venteMLD : commande(num_commande PK, date_commande, num_client FK → client) produit(ref_produit PK, libelle, prix_unitaire) contenir(num_commande FK → commande, ref_produit FK → produit, quantite, prix_vente) clé primaire = (num_commande, ref_produit)Ligne : (C1001, P042, 2, 37.90) → 2 claviers vendus 37,90 € pièceÀ retenir
- Une association porteuse d'attributs ne devient une table que si elle est plusieurs-à-plusieurs ou ternaire : les attributs ne changent rien à la règle.
- Sur une association fonctionnelle, l'attribut migre avec la clé étrangère : PASSER(mode_paiement) entre CLIENT (0,n) et COMMANDE (1,1) donne commande(…, num_client FK, mode_paiement).
- prix_vente est volontairement recopié depuis produit : il fige le prix payé, alors que prix_unitaire peut changer demain.
- Piège : ajouter date_commande à la clé d'une table commander(num_client, ref_produit, …) pour distinguer deux achats. Le vrai problème est l'absence d'entité COMMANDE ; avec elle, la clé (num_commande, ref_produit) suffit.
Voir aussi
- Cardinalités (x,n) — (x,n) : table de liaisonUne association dont les deux cardinalités maximales valent n devient une table de liaison. Sa clé primaire réunit les deux clés étrangères, et les attributs du lien y deviennent des colonnes.
- Cardinalités (x,n) — (x,1) : association fonctionnelleDans une association (x,n)–(x,1), la clé étrangère va dans la table dont la cardinalité maximale vaut 1. Elle est NOT NULL en (1,1) et nullable en (0,1) : c'est la règle la plus utilisée.
- Entité → TableLe passage du MCD au MLD suit des règles fixes : chaque entité devient une table, son identifiant la clé primaire et ses attributs des colonnes. Les associations se traitent ensuite, une par une.