Aller au contenu
MCD → MLD

Cardinalités (1,1) — (1,1) et (0,1) — (1,1)

Les associations un-à-un sont rares. En (0,1)–(1,1), la clé étrangère va du côté (1,1), avec UNIQUE NOT NULL ; en (1,1)–(1,1), on fusionne le plus souvent les deux entités en une table.

  • 1,1
  • 0,1
  • un-à-un
  • fusion
  • UNIQUE

Syntaxe

Modèle
A (0,1) ── ASSOC ── (1,1) B  →  b(…, cle_a FK → a)   UNIQUE NOT NULLA (1,1) ── ASSOC ── (1,1) B  →  fusion en une seule table,                                ou FK UNIQUE NOT NULL dans l'une des deuxA (0,1) ── ASSOC ── (0,1) B  →  FK UNIQUE nullable du côté le plus souvent renseigné

Exemple

Exemple concret
(0,1)–(1,1) : EMPLOYE (0,1) ── DIRIGER ── (1,1) DEPARTEMENT  Un département a exactement un directeur ;  un employé dirige au plus un département.  → departement(num_dept PK, nom, num_directeur FK → employe)    num_directeur : UNIQUE NOT NULL(1,1)–(1,1) : CONTRAT (1,1) ── DETAILLER ── (1,1) CONDITIONS  Chaque contrat a exactement ses conditions particulières,  et des conditions n'existent que pour leur contrat.  → contrat(num_contrat PK, date_signature, franchise, plafond)    (fusion : les attributs de CONDITIONS rejoignent contrat)

À retenir

  1. UNIQUE distingue un lien un-à-un d'un lien un-à-plusieurs : sans lui, un même employé pourrait diriger deux départements.
  2. En (0,1)–(1,1), la clé étrangère va du côté (1,1), departement, où elle est toujours renseignée ; placée dans employe, elle resterait vide pour presque tous les employés.
  3. Gardez deux tables en (1,1)–(1,1) quand les cycles de vie, les droits d'accès ou les volumes diffèrent, par exemple des données médicales séparées du dossier administratif.
  4. Piège : poser la clé étrangère sans UNIQUE et croire le modèle un-à-un. Rien n'empêche alors plusieurs lignes de pointer vers la même cible.

Voir aussi