⌂ Bases de données
Fiche 3 sur 12

Les relations et les cardinalités

Relier les entités entre elles, et dire combien.

Après cette fiche, vous saurez :

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.

AUTEUR num_auteur écrit LIVRE num_livre

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.

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 n veut dire « plusieurs, sans limite fixée ».

Les quatre cardinalités

NotationSe litExemple
0,1zéro ou un, au plus unUn employé occupe au plus un bureau
1,1exactement un, ni plus ni moinsUn livre appartient à exactement une catégorie
0,nde zéro à plusieursUn lecteur a emprunté zéro, un ou plusieurs livres
1,nau moins un, et peut-être plusieursUne 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.

  1. 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
  2. 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.

AUTEUR num_auteur écrit 1,1 1,n LIVRE num_livre

Ce schéma se lit dans les deux sens :

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.

LECTEUR num_lecteur emprunte 0,n 0,n LIVRE num_livre

À 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.

AUTEUR num_auteur nom écrit 1,1 1,n LIVRE num_livre titre 0,n emprunte LECTEUR num_lecteur nom telephone 0,n

Deux relations, deux natures différentes :

À la fiche 4, nous verrons que ces deux natures se traduisent très différemment en tables.

→Exercices

1Lire un schémaRecopier

Voici un schéma d'école.

CLASSE num_classe accueille 1,1 1,n ÉLÈVE num_eleve
  1. Traduisez ce schéma en deux phrases françaises.
  2. Un élève peut-il être dans deux classes ?
  3. Une classe peut-elle être vide ?
  4. 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.

2Trouver les cardinalitésModifier

Pour chaque situation, posez les deux questions et donnez les deux cardinalités.

  1. COMMUNE — héberge — HABITANT
  2. MÉDECIN — reçoit — PATIENT
  3. VOITURE — possède — MOTEUR
  4. 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é.

3Votre schéma completCréer

Reprenez vos entités de la fiche 2.

  1. Reliez-les par des traits, avec un verbe sur chaque trait.
  2. Pour chaque trait, posez les deux questions et notez les cardinalités.
  3. Indiquez lesquelles sont des 1-n et lesquelles sont des n-n.
  4. Pour chaque n-n, demandez-vous si la relation porte des informations à elle.

Solution

Exemple avec le cabinet médical.

PATIENT num_patient consulte 0,n 0,n MÉDECIN num_medecin

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

Une case qui coince ? Relisez la partie concernée avant de passer à la fiche suivante.

← Fiche 2 Fiche 4 : Du schéma aux tables →