Dans la séquence précédente, tu as appris à identifier les entités d'un système et à les représenter sous forme de boîtes. Tu as aussi tracé des traits pour indiquer quelles entités sont liées. Mais ces traits ne disaient pas grand-chose : ils montraient qu'un lien existe, sans préciser sa nature ni son étendue. C'est exactement ce que cette séquence va creuser. On va donner un nom à ces liens, les représenter correctement, et surtout répondre à une question essentielle : dans ce lien, combien d'éléments peuvent être concernés de chaque côté ?
À la fin de cette séquence, tu seras capable de :
Dans la séquence 2, on avait ce schéma :
┌──────────────────┐ ┌──────────────────┐
│ CLIENT │ │ ÉVÉNEMENT │
└────────┬─────────┘ └────────┬─────────┘
│ │
└──────────────┬─────────────────┘
│
┌────┴─────────────┐
│ TICKET │
└──────────────────┘
Les traits disaient juste : ces entités ont un lien. Mais quel lien, exactement ? Que se passe-t-il concrètement entre un client et un ticket ? Entre un événement et un ticket ?
La réponse, c'est la relation.
Une relation, c'est le verbe qui unit deux entités. Elle décrit ce qui se passe entre elles dans la réalité du système :
Ce n'est pas anodin : nommer la relation oblige à comprendre ce que le système fait vraiment.
Pour modéliser une base de données, on dessine un schéma entité-association : les entités, les liens entre elles, et — on le verra plus loin — les cardinalités. Le schéma qu'on produit s'appelle le MCD : Modèle Conceptuel de Données.
La représentation est volontairement simple :
| Élément | Forme | Rôle |
|---|---|---|
| Entité | Rectangle | Un objet du système |
| Relation | Une ligne entre deux entités, étiquetée par un verbe | Le lien entre deux entités |
| Attribut | Texte listé dans le rectangle | Une information d'une entité |
En appliquant ces conventions à notre système de billetterie, on obtient :
┌──────────────────┐ ┌──────────────────┐
│ CLIENT │──────── achète ──────│ TICKET │
│──────────────────│ │──────────────────│
│ nom │ │ prix │
│ prénom │ │ statut │
│ email │ │ date_achat │
│ téléphone │ └─────────┬────────┘
└──────────────────┘ │
concerne
│
┌────────────┴─────────┐
│ ÉVÉNEMENT │
│──────────────────────│
│ titre │
│ date │
│ lieu │
│ prix_base │
└──────────────────────┘
Chaque relation est une simple ligne reliant deux entités, portant un verbe qui décrit le lien. C'est ce verbe qui donne du sens au trait.
💡 Choisir un bon verbe n'est pas un détail : "achète", "réserve", "possède" ne décrivent pas la même chose. Avant de nommer une relation, demande-toi ce qui se passe réellement dans le système.
On sait maintenant qu'un client achète un ticket, et qu'un ticket concerne un événement. Mais ces liens ne disent encore pas tout. Dans la réalité du système :
Les réponses à ces questions s'appellent les cardinalités. Une cardinalité indique combien d'occurrences d'une entité peuvent être impliquées dans la relation.
On écrit la cardinalité sous la forme minimum, maximum de chaque côté de la ligne.
Les valeurs utilisées sont :
0 : aucune occurrence n'est obligatoire1 : exactement une occurrencen : plusieurs occurrences possibles (sans limite fixée)Les paires les plus courantes :
| Notation | Signification |
|---|---|
1,1 |
Exactement un — ni plus, ni moins |
0,1 |
Zéro ou un — facultatif mais pas multiple |
1,n |
Au moins un, potentiellement plusieurs |
0,n |
Zéro ou plusieurs — aucune contrainte |
La cardinalité se lit du côté opposé : le nombre écrit à côté d'une entité indique combien d'occurrences de cette entité correspondent à une seule occurrence de l'entité d'en face.
🧠 L'image de la corde
Imagine que tu attrapes une occurrence d'une entité et que tu tires sur la corde : combien d'occurrences de l'autre entité viennent avec ? Ce nombre s'écrit du côté de l'autre entité.
Exemple avec CLIENT — achète — TICKET :
CLIENT, on écrit 1,1 : pour un ticket, il y a exactement un client.TICKET, on écrit 0,n : pour un client, il y a zéro ou plusieurs tickets.┌──────────────────┐ 1,1 0,n ┌──────────────────┐
│ CLIENT │──────── achète ──────│ TICKET │
│──────────────────│ │──────────────────│
│ nom │ │ prix │
│ prénom │ │ statut │
│ email │ │ date_achat │
│ téléphone │ └─────────┬────────┘
└──────────────────┘ 0,n │
concerne
1,1 │
┌────────────┴─────────┐
│ ÉVÉNEMENT │
│──────────────────────│
│ titre │
│ date │
│ lieu │
│ prix_base │
└──────────────────────┘
💡 Lis la billetterie à voix haute : «
1,1côté CLIENT → un ticket appartient à un seul client ;0,ncôté TICKET → un client peut avoir zéro ou plusieurs tickets. » Les nombres sont toujours du côté de l'entité que l'on compte.
En observant le schéma ci-dessus, réponds aux questions suivantes :
Pour construire un MCD, on suit toujours le même ordre :
Avant de dessiner quoi que ce soit, réponds d'abord à ces questions pour le système de billetterie :
Entités :
Relations :
CLIENT et TICKET ?TICKET et ÉVÉNEMENT ?Cardinalités :
Complète le tableau :
| Relation | Côté gauche | Cardinalité gauche | Cardinalité droite | Côté droit |
|---|---|---|---|---|
| achète | CLIENT | … | … | TICKET |
| concerne | TICKET | … | … | ÉVÉNEMENT |
À partir de tes réponses à l'exercice 2, dessine le MCD complet sur papier.
Tu dois faire apparaître :
Reprends le système que tu avais choisi en séquence 2 (garage, centre de formation ou serveur Discord) et construis son MCD complet.
Étapes :
⚠️ Avant de dessiner, remplis toujours le tableau d'analyse (comme dans l'exercice 2). Un MCD dessiné sans réflexion préalable contient presque toujours des erreurs de cardinalité.
Une relation est le lien nommé entre deux entités. On la représente par une ligne reliant les deux entités, étiquetée par un verbe.
Les cardinalités expriment le "combien" de chaque côté d'une relation. On les note sous la forme minimum,maximum.
| Paire | Sens |
|---|---|
1,1 |
Exactement un |
0,1 |
Zéro ou un |
1,n |
Au moins un |
0,n |
Zéro ou plusieurs |
La règle pour lire une cardinalité : on la lit du côté opposé. Le nombre écrit à côté d'une entité dit, pour une occurrence de l'entité d'en face, combien de fois cette entité-ci intervient.
Dans la prochaine séquence, tu apprendras à transformer ce MCD en modèle logique : les entités deviennent des tables, les relations se traduisent en colonnes spéciales appelées clés étrangères, et les cardinalités dictent comment ces colonnes s'organisent.