Aller au contenu
MCD → MLD

Cardinalités (x,n) — (x,1) : association fonctionnelle

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

  • 1,n
  • 0,n
  • 1,1
  • 0,1
  • FK
  • fonctionnelle
  • CIF

Syntaxe

Modèle
A (x,n) ── ASSOC ── (1,1) B   →  b(cle_b PK, …, cle_a FK → a)   NOT NULLA (x,n) ── ASSOC ── (0,1) B   →  b(cle_b PK, …, cle_a FK → a)   nullablex vaut 0 ou 1 ; les attributs éventuels de ASSOC migrent dans b

Exemple

Exemple concret
MCD : CLIENT (0,n) ── PASSER ── (1,1) COMMANDEMLD : client(num_client PK, nom, email)      commande(num_commande PK, date_commande,               num_client FK → client)          NOT NULLPourquoi dans commande ? Une commande a un seul client :une colonne suffit. Un client a n commandes : il faudraitn colonnes dans client.Variante (0,1) : SALARIE (0,1) ── OCCUPER ── (0,n) BUREAU  un salarié en télétravail complet n'a pas de bureau  → salarie(num_salarie PK, nom, num_bureau FK → bureau)   nullable

À retenir

  1. Le côté qui reçoit la clé étrangère est celui de la cardinalité (0,1) ou (1,1), jamais celui du (x,n) : chaque ligne y pointe vers une seule ligne de l'autre table.
  2. Les attributs éventuels de l'association migrent avec la clé étrangère dans la même table ; le plus souvent, ils auraient dû être placés sur l'entité dès le MCD.
  3. Le minimum du côté (x,n) ne se traduit pas : « un client a au moins une commande », noté (1,n), ne s'impose pas par une clé et relève d'un contrôle applicatif ou d'un déclencheur.
  4. Piège : placer la clé étrangère du côté (x,n), par exemple num_commande dans client. Un client ne pourrait avoir qu'une commande, ou il faudrait le dupliquer à chaque nouvelle commande.

Voir aussi