Aller au contenu
MCD → MLD

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

Modèle
(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

Exemple concret
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

  1. 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.
  2. 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).
  3. prix_vente est volontairement recopié depuis produit : il fige le prix payé, alors que prix_unitaire peut changer demain.
  4. 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