ErdDocs

Symboles du diagramme entité-association

Les diagrammes entité-association utilisent plusieurs familles de symboles. La patte de corbeau (crow’s foot) est celle des outils de base de données. Chen est celle des cours en anglais. UML applique aux données les diagrammes de classes. En France s’ajoute la notation Merise, avec ses cardinalités (0,n). Partout, une table ou une entité est une boîte, et une relation est un trait entre deux boîtes. Ce qui change, c’est la façon d’écrire la cardinalité, c’est-à-dire combien de lignes d’un côté correspondent à une ligne de l’autre. La patte de corbeau la marque aux extrémités du trait. Chaque trait se lit donc deux fois, une fois vers chaque table. Chaque symbole ci-dessous est donné avec sa lecture, dessiné par ErdDocs dans la notation qu’il applique aussi à votre propre schéma, dans l’outil plus bas.

Que signifient les extrémités de la patte de corbeau ?

Avec la patte de corbeau, tout se passe aux extrémités du trait. Chaque extrémité porte jusqu’à deux signes. Le plus proche de la table indique le maximum, l’extérieur le minimum.

SymboleNomLectureExemple
Exactement unExactement unBarre + barre : au moins un, au plus un – (1,1) en Meriseune commande appartient à exactement un client
Zéro ou unZéro ou unCercle + barre : facultatif, au plus un – (0,1)un client a au plus une carte de fidélité
Un ou plusieursUn ou plusieursBarre + patte : au moins un – (1,n)une commande a au moins une ligne
Zéro ou plusieursZéro ou plusieursCercle + patte : n’importe quel nombre, même aucun – (0,n)un client a zéro ou plusieurs commandes
Aide-mémoire de la notation patte de corbeau avec les quatre extrémités : exactement un (barre et barre), zéro ou un (cercle et barre), un ou plusieurs (barre et patte de corbeau), zéro ou plusieurs (cercle et patte de corbeau)Aide-mémoire de la notation patte de corbeau avec les quatre extrémités : exactement un (barre et barre), zéro ou un (cercle et barre), un ou plusieurs (barre et patte de corbeau), zéro ou plusieurs (cercle et patte de corbeau)
Les quatre mêmes extrémités sur une seule fiche. Enregistrez-la, ou téléchargez le SVG en version claire ou sombre.

Lire un trait entier

Un trait de relation se lit deux fois, une fois vers chaque table. L’exemple classique d’une boutique :

Vers orders : un client a zéro ou plusieurs commandes. Vers customers : une commande appartient à exactement un client.customersorders
Vers orders : un client a zéro ou plusieurs commandes. Vers customers : une commande appartient à exactement un client.

Les règles de lecture complètes, y compris le sens des signes quand on ne connaît qu’une partie du schéma, sont sur la page de la notation patte de corbeau. Le choix de la combinaison est une question de cardinalité.

Chen, patte de corbeau, UML et Merise

NotionChenPatte de corbeauUML
Entité / tableRectangleBoîte avec la liste des colonnesBoîte de classe
AttributOvale relié à l’entitéUne ligne dans la boîte de la tableUn champ dans la boîte de classe
RelationLosange entre les entitésUn trait avec des signes de cardinalité aux deux boutsTrait d’association
Cardinalité1, N, M près du losangeBarre, cercle et patte aux extrémitésMultiplicités 1, 0..1, 1..*, *
Clé primaireAttribut soulignéMarque de clé sur la ligne de la colonneStéréotype ou propriété

En Merise, le MCD place les cardinalités (0,1), (1,1), (0,n), (1,n) au bord des associations. Elles se lisent comme les pattes de corbeau, mais côté entité. En pratique, le MCD ou Chen conviennent tant que le modèle n’est qu’une idée. UML convient à côté du code. Dès qu’une base existe, on passe à la patte de corbeau. C’est elle qu’ErdDocs dessine depuis le schéma collé.

Un symbole absent des manuels : le pointillé

Les vrais dumps n’ont souvent pas de clés étrangères. Les applications Rails, Django et Laravel tiennent les relations dans le code, et la base ne déclare rien. Pour ce cas de figure, ErdDocs ajoute son propre symbole. Un trait plein est une relation déclarée par la base. Un pointillé est une relation déduite du nom de colonne, par exemple user_id → users. L’un est une contrainte, l’autre une supposition fondée.

Le pointillé signale qu’il n’y a pas de FOREIGN KEY dans le dump et que le trait vient de la convention de nommage.usersposts
Le pointillé signale qu’il n’y a pas de FOREIGN KEY dans le dump et que le trait vient de la convention de nommage.

Les symboles sur un vrai schéma

Collez votre SQL dans l’outil ci-dessous. Il repère les clés étrangères et les contraintes d’unicité, puis marque d’après elles le côté « plusieurs » de chaque trait.

Votre schéma

Questions fréquentes

Que veulent dire les symboles de la patte de corbeau ?

Chaque extrémité porte jusqu’à deux signes. Le plus proche de la table indique le maximum. Une barre veut dire « au plus un », la patte à trois branches « plusieurs ». Le signe extérieur indique le minimum. Une barre veut dire « au moins un », un cercle « zéro possible ». Cercle + patte se lit donc « zéro ou plusieurs », barre + barre « exactement un ».

Quelle est la correspondance avec les cardinalités Merise ?

Cercle + barre = (0,1), barre + barre = (1,1), cercle + patte = (0,n), barre + patte = (1,n). La différence tient à l’endroit où on les écrit. Merise les note côté entité, sur l’association. La patte de corbeau les dessine au bout du trait, côté table d’arrivée.

Comment représente-t-on une relation plusieurs à plusieurs ?

Par une patte aux deux extrémités. Dans le schéma physique, le plusieurs à plusieurs devient une table d’association, par exemple order_items entre orders et products. Les outils qui dessinent de vraies bases montrent donc deux relations un à plusieurs qui se rejoignent sur cette table.

Pourquoi les outils de base de données ne dessinent-ils pas les losanges et les ovales de Chen ?

Parce que dans une base physique, ce que Chen dessine à part se ramène à des tables et à des colonnes. Un ovale d’attribut est une ligne dans la boîte de la table. Un losange de relation est soit une colonne de clé étrangère, soit une table d’association. Les dessiner comme des formes séparées doublerait la taille du diagramme sans rien montrer de plus. C’est aussi pourquoi ErdDocs montre le MLD et non le MCD.

Pages liées