Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

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 litExemple à Rivelire
0,1zéro ou unun adhérent a zéro ou un responsable légal
1,1exactement unun exemplaire correspond à un seul document
0,nzéro, un ou plusieursun adhérent fait zéro, un ou plusieurs emprunts
1,nau moins unun 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é.

EXEMPLAIREcode_barreetatDOCUMENTnum_documenttitreCORRESPONDRE1,10,nUn exemplaire correspond à combien de documents ?au moins 1, au plus 1 : 1,1Un document a combien d'exemplaires ?au moins 0, au plus n : 0,n
La cardinalité s'écrit du côté de l'entité dont on part

Pour l'association CORRESPONDRE :

  1. « 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.
  2. « 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.
text
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éDonneExemple
« 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.

TypeMaximumsExempleDans le MLD
Un à plusieurs (dite aussi « père-fils »)1 d'un côté, n de l'autreEXEMPLAIRE 1,1 — RATTACHER — 0,n SITEUne clé étrangère du côté du maximum 1
Plusieurs à plusieursn des deux côtésADHERENT 0,n — RESERVER — 0,n DOCUMENTUne nouvelle table
Un à un1 des deux côtésSALARIE 0,1 — DISPOSER — 1,1 VOITURE_FONCTIONUne 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.

AssociationCôté gaucheCôté droit
DOCUMENT 1,1 — APPARTENIR — 0,n GENREUn 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 CONTRIBUTEURUn 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 DOCUMENTUn exemplaire est la copie d'un seul document.Un document commandé n'a pas encore d'exemplaire (RG5).
EXEMPLAIRE 1,1 — RATTACHER — 0,n SITEUn exemplaire est rattaché à un seul site (RG6).Un site possède zéro ou plusieurs exemplaires (RG6).
EMPRUNT 1,1 — EFFECTUER — 0,n ADHERENTUn 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 EXEMPLAIREUn emprunt porte sur un seul exemplaire (RG9).Un exemplaire peut être emprunté plusieurs fois, ou jamais.
ADHERENT 0,n — RESERVER — 0,n DOCUMENTUn 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_site obligatoire (NOT NULL) dans la table exemplaire.
  • Un 0,1 du côté du mineur donne une clé étrangère num_responsable facultative : elle vaut NULL pour 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

  1. Écrire la cardinalité du mauvais côté. « Un genre regroupe plusieurs documents » donne 0,n près de GENRE, pas près de DOCUMENT.
  2. Inverser minimum et maximum. « n,1 » n'existe pas : le minimum vient toujours en premier.
  3. 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.
  4. 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.
  5. 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.

  1. 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.
  2. Un livre est écrit par un ou plusieurs auteurs ; on n'enregistre que les auteurs d'au moins un livre.
  3. 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.
  4. Un pays a une seule capitale, qui est une ville ; une ville est la capitale d'au plus un pays.
  5. Un salarié appartient à un seul service ; un service compte au moins un salarié.
  6. Un étudiant suit zéro ou plusieurs options ; une option n'ouvre que si au moins cinq étudiants la suivent.
  7. Un vol est assuré par un seul avion ; un avion neuf n'a encore assuré aucun vol.
  8. 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
  1. CLIENT 0,n ── PASSER ── 1,1 COMMANDE
  2. LIVRE 1,n ── ECRIRE ── 1,n AUTEUR
  3. TICKET 0,1 ── CONCERNER ── 0,n POSTE
  4. PAYS 1,1 ── AVOIR_POUR_CAPITALE ── 0,1 VILLE : une ville est la capitale de zéro ou un pays.
  5. SALARIE 1,1 ── APPARTENIR ── 1,n SERVICE
  6. ETUDIANT 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é.
  7. VOL 1,1 ── ASSURER ── 0,n AVION
  8. SALARIE 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.

  1. Un patient peut n'avoir consulté aucun médecin.
  2. Un médecin a consulté au moins un patient.
  3. Un patient consulte un seul médecin.
  4. On peut enregistrer un médecin qui n'a encore vu personne.
  5. Cette association deviendra une table.
Voir la réponseMasquer la réponse de l'exercice 2
  1. Vrai : 0,n près de PATIENT, le minimum est 0.
  2. Vrai : 1,n près de MEDECIN, chaque médecin participe au moins une fois.
  3. Faux : le maximum côté PATIENT est n.
  4. Faux : le minimum côté MEDECIN est 1. Si la règle réelle le permet, il faut corriger en 0,n.
  5. 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é.

  1. 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) ?
  2. 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
  1. PORTABLE 0,1 ── AFFECTER ── 0,n SALARIE : un portable en stock n'est affecté à personne. Dans les tables, portable reçoit une clé étrangère facultative vers salarie.
  2. 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é ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Associations réflexives, ternaires et identifiants relatifsRevoir le sommaire du cours