Aller au contenu
Modélisation avancée

Association porteuse d'attributs

Une association peut porter des attributs qui décrivent le lien lui-même, comme la quantité d'un produit dans une commande. On les y place quand ils dépendent de toutes les entités reliées.

  • attribut porté
  • association enrichie
  • N-N
  • quantité
  • CIF

Syntaxe

Modèle
ENTITE_A (x,n) ── ASSOCIATION ── (x,n) ENTITE_B                       │               attribut_du_lien

Exemple

Exemple concret
Besoin : « Une commande contient plusieurs produits,chacun en une certaine quantité. »CLIENT (0,n) ── PASSER ── (1,1) COMMANDE (num_commande, date_commande)COMMANDE (1,n) ── CONTENIR ── (0,n) PRODUIT                     │             quantite, prix_ventequantite dépend du couple (commande, produit) :elle ne peut aller ni dans COMMANDE ni dans PRODUIT.date_commande dépend de la seule commande : elle va dans COMMANDE.

À retenir

  1. Test : un attribut va sur l'association s'il dépend de l'ensemble des entités reliées ; la quantité dépend de la commande et du produit.
  2. Sur une association plusieurs-à-plusieurs, les attributs deviennent des colonnes de la table de liaison au MLD : contenir(num_commande, ref_produit, quantite, prix_vente).
  3. Une association fonctionnelle (une patte en (x,1)) ne devrait pas porter d'attribut : il dépend de la seule entité côté (x,1) et se place sur elle. S'il reste sur l'association, il migre avec la clé étrangère dans la table de ce côté ; il ne crée jamais de table.
  4. Piège : garder le modèle simplifié CLIENT ── COMMANDER(date, quantite) ── PRODUIT dès qu'une commande regroupe plusieurs produits. Deux achats du même produit le même jour se confondent ; l'entité COMMANDE reliée par PASSER et CONTENIR règle le problème.

Voir aussi