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
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 bExemple
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
- 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.
- 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.
- 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.
- 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
- Clé étrangère (FK)Une clé étrangère est une colonne qui reprend la clé primaire d'une autre table pour matérialiser un lien du MCD. Le SGBD vérifie alors que la ligne référencée existe bien.
- 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 (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.
- 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.