Chapitre 513 minIntermédiaire
Les cardinalités du MCD : lire et poser
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- lire une cardinalité dans le bon sens ;
- poser les cardinalités d'une association à partir des règles de gestion ;
- reconnaître une association un à plusieurs, plusieurs à plusieurs ou un à un ;
- éviter les pièges du minimum et de l'historique.
4 exercices corrigés1 schéma
Une cardinalité est un couple (minimum, maximum) écrit sur chaque patte d'une association, du côté d'une entité : elle indique combien de fois une occurrence de cette entité participe au moins et au plus à l'association. Les quatre couples usuels sont 0,1 ; 1,1 ; 0,n et 1,n. Les cardinalités traduisent les règles de gestion, et ce sont elles qui décident, au moment du passage aux tables, où vont les clés étrangères : c'est le point le plus évalué d'un MCD.
Minimum et maximum
Le minimum vaut 0 ou 1. Il répond à la question : une occurrence de l'entité peut-elle exister sans participer à l'association ?
- 0 : oui, la participation est facultative. Un site vient d'ouvrir et n'a encore aucun exemplaire.
- 1 : non, la participation est obligatoire. Un exemplaire est toujours rattaché à un site.
Le maximum vaut 1 ou n. Il répond à la question : une occurrence peut-elle participer plusieurs fois ?
- 1 : au plus une fois. Un exemplaire est rattaché à un seul site.
- n : plusieurs fois, sans limite fixée. Un site possède de nombreux exemplaires.
| Cardinalité | Se lit | Exemple à Rivelire |
|---|---|---|
| 0,1 | zéro ou un | un adhérent a zéro ou un responsable légal |
| 1,1 | exactement un | un exemplaire correspond à un seul document |
| 0,n | zéro, un ou plusieurs | un adhérent fait zéro, un ou plusieurs emprunts |
| 1,n | au moins un | un contributeur a participé à au moins un document |
Un maximum précis (« au plus 10 emprunts ») ne s'écrit pas dans un MCD classique : on met n, et on note la limite comme une règle de contrainte, vérifiée par un trigger ou par le code.
La méthode de la question
Pour chaque patte d'association, pose cette question, à voix haute si besoin :
« Un [entité] [verbe] combien de [autre entité], au minimum ? au maximum ? »
Puis écris la réponse sur la patte, du côté de l'entité de départ. Recommence de l'autre côté.
Pour l'association CORRESPONDRE :
- « Un exemplaire correspond à combien de documents ? » Au minimum 1 (un exemplaire est toujours l'exemplaire de quelque chose), au maximum 1. On écrit 1,1 du côté d'EXEMPLAIRE.
- « Un document a combien d'exemplaires ? » Au minimum 0 (un document commandé n'en a pas encore, RG5), au maximum n. On écrit 0,n du côté de DOCUMENT.
EXEMPLAIRE 1,1 ──── CORRESPONDRE ──── 0,n DOCUMENT
Les mots de l'énoncé qui donnent la cardinalité
Les énoncés sont écrits en français ordinaire. Certains mots trahissent la cardinalité :
| Dans l'énoncé | Donne | Exemple |
|---|---|---|
| « peut », « éventuellement », « pas encore », « certains » | minimum 0 | « un adhérent peut réserver des documents » |
| « doit », « chaque », « toujours », « obligatoirement » | minimum 1 | « chaque exemplaire est rattaché à un site » |
| « un seul », « au plus un », « son », « sa » | maximum 1 | « un document appartient à un seul genre » |
| « plusieurs », « des », « au moins un », « un ou plusieurs » | maximum n | « un document peut avoir plusieurs contributeurs » |
Quand l'énoncé se tait sur un minimum, choisis la valeur la plus réaliste et écris ton hypothèse à côté du schéma : « un genre peut exister sans document, par exemple quand on vient de le créer ». Un correcteur accepte une hypothèse défendable et explicite ; il sanctionne une cardinalité absurde (« un patient a une seule ordonnance dans sa vie »).
Les trois types d'associations binaires
En ne regardant que les maximums, une association binaire est de l'un de ces trois types. Le type décide de la traduction en tables.
| Type | Maximums | Exemple | Dans le MLD |
|---|---|---|---|
| Un à plusieurs (dite aussi « père-fils ») | 1 d'un côté, n de l'autre | EXEMPLAIRE 1,1 — RATTACHER — 0,n SITE | Une clé étrangère du côté du maximum 1 |
| Plusieurs à plusieurs | n des deux côtés | ADHERENT 0,n — RESERVER — 0,n DOCUMENT | Une nouvelle table |
| Un à un | 1 des deux côtés | SALARIE 0,1 — DISPOSER — 1,1 VOITURE_FONCTION | Une clé étrangère unique, ou une fusion |
Les associations un à plusieurs sont de loin les plus nombreuses. Les associations un à un sont rares : vérifie qu'il ne s'agit pas de deux vues d'une même entité, qu'il faudrait fusionner.
Les cardinalités de Rivelire, justifiées
Voici chaque association du MCD de Rivelire, avec la phrase qui justifie chaque cardinalité. C'est ce que tu dois savoir faire pour chaque association d'un sujet.
| Association | Côté gauche | Côté droit |
|---|---|---|
| DOCUMENT 1,1 — APPARTENIR — 0,n GENRE | Un document appartient à un seul genre (RG3). | Un genre regroupe zéro ou plusieurs documents : zéro s'il vient d'être créé. |
| DOCUMENT 0,n — CONTRIBUER — 1,n CONTRIBUTEUR | Un document a zéro ou plusieurs contributeurs : certains n'en ont pas de connu (RG4). | Un contributeur n'est enregistré que s'il a participé à au moins un document (RG4). |
| EXEMPLAIRE 1,1 — CORRESPONDRE — 0,n DOCUMENT | Un exemplaire est la copie d'un seul document. | Un document commandé n'a pas encore d'exemplaire (RG5). |
| EXEMPLAIRE 1,1 — RATTACHER — 0,n SITE | Un exemplaire est rattaché à un seul site (RG6). | Un site possède zéro ou plusieurs exemplaires (RG6). |
| EMPRUNT 1,1 — EFFECTUER — 0,n ADHERENT | Un emprunt est fait par un seul adhérent (RG9). | Un adhérent qui vient de s'inscrire n'a encore rien emprunté. |
| EMPRUNT 1,1 — PORTER_SUR — 0,n EXEMPLAIRE | Un emprunt porte sur un seul exemplaire (RG9). | Un exemplaire peut être emprunté plusieurs fois, ou jamais. |
| ADHERENT 0,n — RESERVER — 0,n DOCUMENT | Un adhérent peut réserver plusieurs documents, ou aucun (RG12). | Un document peut être réservé par plusieurs adhérents, ou par aucun. |
| ADHERENT 0,1 (représenté) — REPRESENTER — 0,n ADHERENT (responsable) | Un adhérent a au plus un responsable légal : aucun s'il est majeur (RG8). | Un adhérent peut être responsable de plusieurs mineurs, ou d'aucun (RG8). |
La RG8 dit qu'un mineur doit avoir un responsable. Le minimum 0 vient de ce que la cardinalité vaut pour tous les adhérents, majeurs compris. L'obligation pour les seuls mineurs ne s'exprime pas par une cardinalité : c'est une contrainte, qu'on vérifiera dans la base par un trigger ou dans l'application.
Ce que le minimum change dans la base
Le minimum n'est pas un détail : il décide si une colonne accepte une valeur vide.
- Un 1,1 du côté d'EXEMPLAIRE donne une clé étrangère
code_siteobligatoire (NOT NULL) dans la tableexemplaire. - Un 0,1 du côté du mineur donne une clé étrangère
num_responsablefacultative : elle vautNULLpour un adulte. - Un 1,n (comme du côté de CONTRIBUTEUR) est plus délicat : aucune déclaration SQL simple n'oblige un contributeur à avoir au moins une ligne dans la table
contribuer. On le garantit dans l'application, ou dans une transaction qui crée le contributeur et sa première contribution ensemble. C'est l'une des rares règles du MCD que le SGBD ne fait pas respecter tout seul.
La contrainte d'intégrité fonctionnelle (CIF)
Une association dont une patte porte un maximum 1 exprime une dépendance fonctionnelle entre les identifiants : connaissant l'exemplaire, on connaît son site (code_barre → code_site). On dit qu'il y a une contrainte d'intégrité fonctionnelle, ou CIF. Certains logiciels la dessinent par une flèche « CIF » qui part de l'entité au maximum 1.
Retiens surtout la conséquence : chaque CIF deviendra une clé étrangère, rangée dans la table de l'entité du côté du maximum 1. C'est la règle du chapitre 8 que tu appliqueras le plus souvent.
Les pièges classiques
- Écrire la cardinalité du mauvais côté. « Un genre regroupe plusieurs documents » donne 0,n près de GENRE, pas près de DOCUMENT.
- Inverser minimum et maximum. « n,1 » n'existe pas : le minimum vient toujours en premier.
- Confondre l'état actuel et l'historique. « Un exemplaire est emprunté par un seul adhérent » est vrai à un instant donné ; sur toute la vie de l'exemplaire, il est emprunté par de nombreux adhérents. Demande-toi toujours si l'on garde l'historique : c'est presque toujours le cas.
- Mettre 1 au minimum par excès de zèle. « Un client passe au moins une commande » est faux si l'on enregistre le client dès la création de son compte.
- Oublier qu'une cardinalité vaut pour toutes les occurrences. Si seuls certains adhérents ont un responsable, le minimum est 0, même si la règle est obligatoire pour une partie d'entre eux.
Exercices
Exercice 1 sur 4 Huit associations à compléter Réussi À revoir
Écris les deux cardinalités de chaque association, sous la forme ENTITE1 ?,? ── VERBE ── ?,? ENTITE2.
- Un client passe des commandes ; une commande est passée par un seul client ; un client est enregistré dès la création de son compte.
- Un livre est écrit par un ou plusieurs auteurs ; on n'enregistre que les auteurs d'au moins un livre.
- Un ticket d'incident concerne au plus un poste (certains tickets portent sur le réseau) ; un poste fait l'objet de zéro ou plusieurs tickets.
- Un pays a une seule capitale, qui est une ville ; une ville est la capitale d'au plus un pays.
- Un salarié appartient à un seul service ; un service compte au moins un salarié.
- Un étudiant suit zéro ou plusieurs options ; une option n'ouvre que si au moins cinq étudiants la suivent.
- Un vol est assuré par un seul avion ; un avion neuf n'a encore assuré aucun vol.
- Un salarié dispose au plus d'une voiture de fonction ; chaque voiture de fonction est attribuée à un salarié.
Voir la réponseMasquer la réponse de l'exercice 1
CLIENT 0,n ── PASSER ── 1,1 COMMANDELIVRE 1,n ── ECRIRE ── 1,n AUTEURTICKET 0,1 ── CONCERNER ── 0,n POSTEPAYS 1,1 ── AVOIR_POUR_CAPITALE ── 0,1 VILLE: une ville est la capitale de zéro ou un pays.SALARIE 1,1 ── APPARTENIR ── 1,n SERVICEETUDIANT 0,n ── SUIVRE ── 1,n OPTION: une option ouverte a au moins un étudiant ; le seuil de cinq est une règle de contrainte, qui ne s'écrit pas dans la cardinalité.VOL 1,1 ── ASSURER ── 0,n AVIONSALARIE 0,1 ── DISPOSER ── 1,1 VOITURE_FONCTION: c'est une association un à un.
Tu avais trouvé ?
Exercice 2 sur 4 Lire un MCD Réussi À revoir
Voici une association : PATIENT 0,n ── CONSULTER ── 1,n MEDECIN. Pour chaque phrase, dis si elle est vraie ou fausse.
- Un patient peut n'avoir consulté aucun médecin.
- Un médecin a consulté au moins un patient.
- Un patient consulte un seul médecin.
- On peut enregistrer un médecin qui n'a encore vu personne.
- Cette association deviendra une table.
Voir la réponseMasquer la réponse de l'exercice 2
- Vrai : 0,n près de PATIENT, le minimum est 0.
- Vrai : 1,n près de MEDECIN, chaque médecin participe au moins une fois.
- Faux : le maximum côté PATIENT est n.
- Faux : le minimum côté MEDECIN est 1. Si la règle réelle le permet, il faut corriger en 0,n.
- Vrai : les deux maximums valent n, c'est une association plusieurs à plusieurs (règle 3 du passage au MLD).
Tu avais trouvé ?
Exercice 3 sur 4 Les cardinalités des stages Réussi À revoir
Reprends le MCD des stages du chapitre 4. Pose et justifie les cardinalités des quatre associations : APPARTENIR (ETUDIANT, CLASSE), EFFECTUER (STAGE, ETUDIANT), ENCADRER (STAGE, TUTEUR) et TRAVAILLER (TUTEUR, ENTREPRISE).
Voir la réponseMasquer la réponse de l'exercice 3
ETUDIANT 1,1 ── APPARTENIR ── 0,n CLASSE: un étudiant est dans une seule classe ; une classe peut être vide en début d'année, avant les inscriptions (1,n se défend si l'on ne crée une classe qu'avec ses étudiants).STAGE 1,1 ── EFFECTUER ── 0,n ETUDIANT: un stage concerne un seul étudiant ; un étudiant peut n'avoir encore fait aucun stage.STAGE 1,1 ── ENCADRER ── 0,n TUTEUR: un stage a un seul tuteur ; un tuteur peut encadrer plusieurs stages, et 0 s'il est enregistré avant son premier stagiaire (1,n se défend aussi).TUTEUR 1,1 ── TRAVAILLER ── 0,n ENTREPRISE: un tuteur travaille pour une seule entreprise ; une entreprise peut avoir plusieurs tuteurs, ou aucun encore enregistré.
Tu avais trouvé ?
Exercice 4 sur 4 Avec ou sans historique Réussi À revoir
Une entreprise affecte chaque ordinateur portable à un salarié.
- Si l'on ne garde que l'affectation actuelle, quelles sont les cardinalités entre PORTABLE et SALARIE (un portable est affecté à un salarié au plus, un salarié peut avoir plusieurs portables) ?
- Le service informatique veut maintenant savoir qui a eu chaque portable, et quand. L'association suffit-elle encore ?
Voir la réponseMasquer la réponse de l'exercice 4
PORTABLE 0,1 ── AFFECTER ── 0,n SALARIE: un portable en stock n'est affecté à personne. Dans les tables,portablereçoit une clé étrangère facultative verssalarie.- Non. Sur toute sa vie, un portable est affecté à plusieurs salariés : le maximum côté PORTABLE devient n. Et un même salarié peut récupérer le même portable deux fois : le couple (portable, salarié) ne suffit plus à identifier une affectation. Il faut une entité AFFECTATION (num_affectation, date_debut, date_fin), reliée à PORTABLE et à SALARIE par deux associations 1,1 — 0,n. Le chapitre 7 détaille cette technique d'historisation.
Tu avais trouvé ?