Les relations et les cardinalités
Relier les entités entre elles, et dire combien.
Après cette fiche, vous saurez :
- relier deux entités par une association
- lire et écrire les cardinalités 0,1 - 1,1 - 0,n - 1,n
- reconnaître une relation un-à-plusieurs et plusieurs-à-plusieurs
1Relier les entités
À la fiche 2, nous avons dessiné quatre entités isolées. Or elles ne le sont pas : un livre est écrit par un auteur, un lecteur emprunte un livre.
Ce lien s'appelle une association (on dit aussi une relation). On la dessine par un trait entre les deux entités, avec un verbe écrit dessus.
Le verbe compte. Il vous force à dire à voix haute ce que le trait signifie : « un auteur écrit un livre ». Si vous n'arrivez pas à trouver un verbe, c'est probablement qu'il n'y a pas de relation.
2Le trait ne suffit pas : il faut dire combien
Le trait dit qu'il y a un lien. Il ne dit pas combien.
- Un auteur peut-il écrire plusieurs livres ? Oui, bien sûr.
- Un livre peut-il avoir plusieurs auteurs ? Ça dépend de la bibliothèque.
- Un livre doit-il obligatoirement avoir un auteur ? Et un auteur anonyme ?
Ces réponses changent complètement la base de données qu'on va construire. On les note sur le schéma : ce sont les cardinalités.
À retenir
Une cardinalité s'écrit avec deux nombres séparés par une virgule.
- Le premier = le minimum. Presque toujours 0 ou 1.
- Le second = le maximum. Presque toujours 1 ou n.
Le n veut dire « plusieurs, sans limite fixée ».
Les quatre cardinalités
| Notation | Se lit | Exemple |
|---|---|---|
| 0,1 | zéro ou un, au plus un | Un employé occupe au plus un bureau |
| 1,1 | exactement un, ni plus ni moins | Un livre appartient à exactement une catégorie |
| 0,n | de zéro à plusieurs | Un lecteur a emprunté zéro, un ou plusieurs livres |
| 1,n | au moins un, et peut-être plusieurs | Une commande contient au moins une ligne |
3Comment les trouver
Il faut poser deux questions, une pour chaque côté du trait. Et il faut les poser en partant d'un seul élément.
Prenons AUTEUR — écrit → LIVRE.
- Je pars d'UN auteur
« Un auteur écrit combien de livres, au minimum et au maximum ? »
Au minimum 1 (sinon on ne l'enregistrerait pas), au maximum plusieurs. → cardinalité 1,n - Je pars d'UN livre
« Un livre est écrit par combien d'auteurs, au minimum et au maximum ? »
Dans notre bibliothèque : exactement un. → cardinalité 1,1
Attention
La cardinalité se pose du côté OPPOSÉ à la question.
C'est le point qui fait trébucher tout le monde. La réponse à « un auteur écrit combien de livres ? » s'écrit du côté du livre, pas du côté de l'auteur.
Regardez le schéma ci-dessous : le 1,n touche LIVRE, parce qu'il parle du nombre de livres.
Attention : certains manuels font l'inverse. Nous utiliserons cette convention-ci toute l'année.
Ce schéma se lit dans les deux sens :
- de gauche à droite : un auteur écrit de 1 à n livres ;
- de droite à gauche : un livre est écrit par exactement 1 auteur.
4Les deux grandes familles
Un-à-plusieurs (1-n)
C'est le cas le plus fréquent. D'un côté 1, de l'autre n.
Un auteur écrit plusieurs livres, mais un livre n'a qu'un auteur.
Autres exemples : une catégorie contient plusieurs livres ; un client passe plusieurs commandes ; une classe accueille plusieurs élèves.
Plusieurs-à-plusieurs (n-n)
Des deux côtés, n. C'est le cas dès qu'aucun des deux ne limite l'autre.
Un lecteur emprunte plusieurs livres, et un livre est emprunté par plusieurs lecteurs au fil du temps.
À retenir
Une relation n-n porte souvent des informations à elle.
Ici : la date de l'emprunt, la date de retour prévue, la date de retour réelle.
Ces informations n'appartiennent ni au lecteur ni au livre. Elles appartiennent à l'emprunt lui-même. C'est le signe qu'il faudra en faire une entité à part entière — nous le ferons à la fiche 4.
5Le schéma complet de la bibliothèque
Voici les quatre entités reliées, avec leurs cardinalités.
Deux relations, deux natures différentes :
- AUTEUR — LIVRE est du 1-n ;
- LECTEUR — LIVRE est du n-n, et porte des dates.
À la fiche 4, nous verrons que ces deux natures se traduisent très différemment en tables.
→Exercices
Voici un schéma d'école.
- Traduisez ce schéma en deux phrases françaises.
- Un élève peut-il être dans deux classes ?
- Une classe peut-elle être vide ?
- S'agit-il d'une relation 1-n ou n-n ?
Solution
1. Les deux phrases
- Une classe accueille de 1 à n élèves.
- Un élève appartient à exactement 1 classe.
2. Non. La cardinalité 1,1 du côté de la classe l'interdit :
un élève appartient à une classe et une seule.
3. Non. Le minimum du côté élève est 1. Une classe doit donc avoir au moins un élève inscrit.
C'est un choix contestable, d'ailleurs. En pratique, une classe existe souvent
avant que les inscriptions ne soient faites. On mettrait alors 0,n.
C'est typiquement une question à poser au client.
4. Une relation 1-n : un côté à 1, l'autre à n.
Pour chaque situation, posez les deux questions et donnez les deux cardinalités.
- COMMUNE — héberge — HABITANT
- MÉDECIN — reçoit — PATIENT
- VOITURE — possède — MOTEUR
- ACTEUR — joue dans — FILM
Pour chacune, dites aussi s'il s'agit d'un 1-n ou d'un n-n.
Solution
1. COMMUNE — HABITANT
- Une commune héberge de 0 à n habitants (une commune nouvelle peut être vide).
- Un habitant vit dans exactement 1 commune. → 1,1
Relation 1-n.
2. MÉDECIN — PATIENT
- Un médecin reçoit de 0 à n patients.
- Un patient consulte de 0 à n médecins — rien ne l'empêche d'aller voir un généraliste et un dermatologue.
Relation n-n. Et elle portera sûrement des informations à elle : la date de consultation, le motif, le montant.
3. VOITURE — MOTEUR
- Une voiture possède exactement 1 moteur. → 1,1
- Un moteur équipe exactement 1 voiture. → 1,1
C'est un cas particulier, le un-à-un. Il est rare. Quand il apparaît, il faut se demander si les deux entités ne devraient pas n'en faire qu'une seule.
4. ACTEUR — FILM
- Un acteur joue dans de 1 à n films.
- Un film emploie de 1 à n acteurs.
Relation n-n, et elle porte une information : le rôle joué.
Reprenez vos entités de la fiche 2.
- Reliez-les par des traits, avec un verbe sur chaque trait.
- Pour chaque trait, posez les deux questions et notez les cardinalités.
- Indiquez lesquelles sont des 1-n et lesquelles sont des n-n.
- Pour chaque n-n, demandez-vous si la relation porte des informations à elle.
Solution
Exemple avec le cabinet médical.
Relation n-n, et elle porte bien des informations : date, heure, motif, montant. Ces données n'appartiennent ni au patient ni au médecin.
Comment vérifier votre travail :
- Chaque trait a-t-il un verbe ? Si vous n'en trouvez pas, le lien n'existe peut-être pas.
- Chaque trait a-t-il deux cardinalités, une à chaque bout ?
- Avez-vous bien posé les questions en partant d'un seul élément ?
- Vos n-n portent-elles des informations ? Notez-les de côté, la fiche 4 en aura besoin.
Je sais faire
- Je sais relier deux entités par une association.
- Je sais poser les deux questions qui donnent les cardinalités.
- Je sais lire un schéma avec ses cardinalités.
- Je fais la différence entre 1-n et n-n.
Une case qui coince ? Relisez la partie concernée avant de passer à la fiche suivante.