La notation pied de corbeau
Deux symboles à chaque bout d'une ligne, et ensemble ils encodent toutes les cardinalités qu'une base relationnelle peut faire respecter. Toute la notation tient dans un paragraphe ; mettre les bouts dans le bon sens prend un peu plus longtemps.
8 min de lectureER - crow's foot2 sur 3
La réponse courte
- Deux symboles par bout : l'intérieur est le minimum (cercle zéro, barre un), l'extérieur est le maximum (barre un, pied de corbeau plusieurs).
- Les symboles se placent à un bout et contraignent ce bout, mais on les lit depuis l'autre. Les lire à l'envers est l'erreur la plus fréquente.
- Un trait plein est une relation identifiante : la clé du parent fait partie de celle de l'enfant. En pointillés, la clé étrangère est un attribut ordinaire.
- Une base relationnelle ne peut pas stocker le plusieurs-à-plusieurs. Toute ligne de ce genre sur un modèle logique signale qu'une table de jonction manque.
01Trois symboles, quatre combinaisons#
Le pied-de-corbeau - proprement, la notation Information Engineering - place deux marques à chaque extrémité de chaque trait de relation. Celle qui est la plus éloignée de l'entité est le maximum, celle qui est la plus proche est le minimum.
| Élément | Notation | Ce que cela signifie |
|---|---|---|
| Barre | un trait en travers de la ligne | Un. Comme marque extérieure elle veut dire « au plus un » ; comme marque intérieure, « au moins un ». |
| Pied-de-corbeau | trois branches | Plusieurs. Toujours la marque extérieure - un maximum sans plafond. |
| Cercle | un petit anneau | Zéro. Toujours la marque intérieure - la relation est optionnelle. |
Combinez-les et il y a exactement quatre possibilités, ce qui est toute la notation :
| Élément | Notation | Ce que cela signifie |
|---|---|---|
| Exactement un | Barre et barre. Obligatoire, unique. | |
| Zéro ou un | Cercle puis barre. Optionnel, unique. | |
| Un ou plusieurs | Barre puis pied-de-corbeau. Obligatoire, multiple. | |
| Zéro ou plusieurs | Cercle puis pied-de-corbeau. Optionnel, multiple. |
02Quelle extrémité le symbole décrit#
C'est la seule chose vraiment contre-intuitive du pied-de-corbeau, et elle explique la plupart des diagrammes mal lus. Les symboles d'une extrémité décrivent l'entité de cette extrémité, et on les lit en se déplaçant vers elle.
Sur le quatrième trait du diagramme ci-dessus, le pied-de-corbeau est du côté Order. Il ne veut pas dire « plusieurs clients ». Il veut dire : pour un client, il y a zéro ou plusieurs commandes. Dites-le comme un trajet - « je pars d'un client, je suis le trait, et j'arrive à zéro ou plusieurs commandes » - et la direction cesse d'être ambiguë.
Une habitude qui supprime entièrement le problème : écrivez la locution verbale sur le trait dans le sens de lecture, et relisez la lecture inverse à voix haute avant de passer à la suite. Trente secondes par relation, et cela attrape des erreurs qui survivent des mois dans un document.
03Identifiante et non identifiante#
Le style du trait porte une seconde information, et elle concerne les clés, pas les comptes.
| Élément | Notation | Ce que cela signifie |
|---|---|---|
| Non identifiante | Pointillés. L'enfant a sa propre clé primaire et se contente de détenir une clé étrangère vers le parent. Une Order a un order_id et enregistre séparément à quel client elle appartient. Le cas habituel. | |
| Identifiante | Trait plein. La clé du parent fait partie de la clé primaire de l'enfant, qui ne peut donc ni exister ni être identifié sans elle. Une entité faible. |
Le test tient en une question : cette ligne pourrait-elle être identifiée sans connaître son parent ? Une ligne de commande numéro 3 n'a pas de sens sans savoir de quelle commande - c'est identifiant. Une commande appartenant au client 41 reste la commande 8817 quoi qu'il arrive - c'est non identifiant.
04Résoudre un plusieurs-à-plusieurs#
Un pied-de-corbeau aux deux bouts dit « plusieurs à plusieurs », et aucune base relationnelle ne sait stocker cela en deux tables. La relation devient une entité à part entière - une entité de jonction, associative ou de liaison - portant une clé étrangère vers chaque côté.
Deux choses en découlent, et la seconde est la raison de le faire tôt plutôt qu'au moment de l'implémentation :
- La jonction a généralement ses propres attributs. Une inscription a une date, une note, un statut. Ces attributs n'avaient nulle part où vivre tant que la relation était un trait, et leur absence cachait un trou dans le modèle.
- La jonction mérite un vrai nom.
Enrolment,Booking,Assignment- pasStudentCourse. Un expert métier reconnaît le premier et ne peut pas relire le second, et ce nom est généralement un mot que le métier emploie déjà.
Notez les clés de la jonction ci-dessus : les deux clés étrangères forment ensemble la clé primaire, ce qui empêche le même étudiant de s'inscrire deux fois au même cours. Cette contrainte est venue gratuitement d'une modélisation correcte, et aurait sinon été une validation dont quelqu'un s'est souvenu.
05Face aux alternatives#
| Élément | Notation | Ce que cela signifie |
|---|---|---|
| Notation de Chen | losanges et ovales | L'originale. Les relations sont des losanges et les attributs des ovales accrochés aux entités : expressif, et quatre fois plus encombrant. Courante en enseignement, rare en pratique. |
| Multiplicité UML | 0..1, 1..* | Des nombres écrits au bout des traits au lieu de symboles. Plus précis - il peut dire 2..5 - et plus lent à parcourir sur un mur de tables. |
| IDEF1X | cercles pleins | Une norme fédérale américaine, proche du pied-de-corbeau avec d'autres symboles et des règles plus strictes sur les relations identifiantes. Vous la croiserez dans le public et la défense. |
| Pied-de-corbeau | Compact, lisible de loin, et compris par tous les outils de base de données. Le choix par défaut, pour de bonnes raisons. |
À utiliser quand
- Tout diagramme au-delà d'environ six entités - il reste lisible
- Un public qui comprend des DBA et des ingénieurs data
- Un modèle qui deviendra du DDL, où les quatre cas se traduisent exactement en contraintes
- Le travail au tableau, parce que les symboles survivent à un tracé approximatif
Préférer autre chose quand
- Il vous faut une borne du type « entre deux et cinq » - prenez la multiplicité UML
- Le public est une équipe logicielle native UML et le modèle est le domaine
- L'enseignement des principes, où les losanges de Chen rendent la relation visible
- Une relation ternaire, que le pied-de-corbeau ne trace pas sans entité de jonction
Rien de tout cela n'est exclusif. Beaucoup de projets réels tracent du pied-de-corbeau pour la base et un diagramme de classes pour le modèle du domaine, et gardent les deux, parce qu'ils répondent à des questions différentes sur les mêmes noms.
06Erreurs courantes#
- Symboles à la mauvaise extrémité. L'erreur la plus fréquente de la notation. Lisez les deux phrases à voix haute.
- Tout optionnel. Un cercle à chaque position intérieure signifie que le modèle n'affirme aucune règle, et chacune d'elles devient du code applicatif.
- Plusieurs-à-plusieurs laissé dans un modèle logique. Acceptable conceptuellement, impossible physiquement. Résolvez-le et nommez la jonction.
- Des entités de jonction nommées par concaténation.
OrderProductne dit rien à un relecteur ;OrderLinelui dit tout. - Se fier au seul style de trait pour les relations identifiantes. Les outils divergent. Montrez aussi la clé composite dans la boîte.
- Relations non étiquetées. Le verbe est ce qui rend le trait lisible à voix haute, et lire à voix haute est la relecture.
Une fois la cardinalité réglée, la question suivante est celle des tables elles-mêmes - c'est-à-dire la conception de schéma : clés, normalisation, et le trajet du modèle au DDL.
En une ligne chacun
- 01Le symbole extérieur est le maximum, l'intérieur le minimum.
- 02La barre vaut un, le pied-de-corbeau plusieurs, le cercle zéro.
- 03Les symboles décrivent l'entité de leur propre extrémité - lisez vers elle.
- 04Chaque relation a deux phrases vraies ; vérifiez les deux.
- 05Trait plein : la clé du parent fait partie de celle de l'enfant ; pointillés : elle n'en fait pas partie.
- 06Un plusieurs-à-plusieurs devient une entité de jonction nommée, souvent avec ses propres attributs.
07Questions fréquentes#
Que signifient les symboles du pied de corbeau ?
Il y a deux symboles à chaque bout de la ligne. L'intérieur est le minimum : un cercle pour zéro, donc facultatif, ou une barre pour un, donc obligatoire. L'extérieur est le maximum : une barre pour un, ou le pied de corbeau à trois branches pour plusieurs. Lus ensemble, ils donnent zéro-ou-un, exactement-un, zéro-ou-plus ou un-ou-plus.
À quel bout de la ligne un symbole pied de corbeau s'applique-t-il ?
Les symboles se placent à un bout et contraignent l'entité de ce bout, mais on les lit depuis l'autre. Un pied de corbeau à côté de Commande dans une relation Client vers Commande signifie qu'un client a plusieurs commandes. Le lire à l'envers est de loin l'erreur la plus fréquente.
Quelle différence entre relation identifiante et non identifiante ?
Dans une relation identifiante, l'enfant ne peut exister sans le parent et la clé du parent fait partie de celle de l'enfant, tracée en trait plein. Dans une relation non identifiante, la clé étrangère est un attribut ordinaire et l'enfant tient tout seul, tracée en pointillés.
Comment traiter une relation plusieurs-à-plusieurs ?
On la résout en table de jonction : une troisième entité avec une clé étrangère de chaque côté. Une base relationnelle ne peut pas stocker le plusieurs-à-plusieurs directement, donc toute ligne de ce genre laissée sur un modèle logique signale qu'une table manque encore.
Comment le pied de corbeau se compare-t-il à la multiplicité UML ?
Ils expriment les mêmes contraintes dans une syntaxe différente. UML écrit l'intervalle en texte au bout de l'association, comme 0..1 ou 1..*, là où le pied de corbeau le dessine en paire de symboles. UML place en outre la multiplicité au bout opposé à celui où un lecteur du pied de corbeau l'attend, ce qui mérite vérification quand on passe de l'un à l'autre.
Dans cette série
- 01Diagrammes ER
- 02Notation pied de corbeau
- 03Conception de schéma
À lire aussi
Fondamentaux
Pratique de la modélisation
Diagrammes de structure
Référence de notation