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
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
(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
- UNIQUE distingue un lien un-à-un d'un lien un-à-plusieurs : sans lui, un même employé pourrait diriger deux départements.
- 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.
- 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.
- 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
- Cardinalités (x,n) — (x,1) : association fonctionnelleDans 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.
- 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.
- Contraintes d'intégritéNOT NULL, UNIQUE, CHECK et les clés étrangères traduisent les règles de gestion dans le SGBD, qui refuse alors les données incohérentes quelle que soit l'application qui les écrit.