Archyno
Data modellingFondamentaux

Diagrammes entité-association

Une image des choses qu'un système stocke et de la façon dont elles se rapportent les unes aux autres. Ancien, petit, et toujours le moyen le plus rapide de découvrir que deux personnes n'entendent pas la même chose par le mot "commande".

9 min de lectureER - crow's foot1 sur 3

La réponse courte

  • Le conceptuel ne nomme qu'entités et relations ; le logique ajoute attributs, clés et plusieurs-à-plusieurs résolus ; le physique ajoute types et index pour un moteur.
  • Une clé primaire identifie une ligne dans sa propre table ; une clé étrangère porte la clé primaire d'une autre et met réellement la relation en oeuvre.
  • Un diagramme ER n'a pas d'opérations et ses relations se traduisent en clés étrangères. Un diagramme de classes modélise le comportement et exprime ce qu'un schéma ne peut pas.
  • Le pied de corbeau est le standard de fait et ce que dessine presque tout outil moderne. La notation de Chen dit la même chose en prenant plus de place.
Un diagramme entité-association à quatre entités. Customer a une clé primaire customer_id ; Order a une clé order_id et une clé étrangère customer_id ; OrderLine a une clé order_line_id avec les clés étrangères order_id et product_id ; Product a une clé product_id. Un client passe zéro ou plusieurs commandes, une commande contient une ou plusieurs lignes, et un produit apparaît sur zéro ou plusieurs lignes.
Quatre entités et trois relations. Chaque trait se lit à voix haute dans les deux sens, et le faire est la technique de relecture la plus rapide qui soit.

01Ce qu'il montre#

Un diagramme entité-association décrit les choses qu'un système stocke et les liens entre elles. Trois ingrédients, pas davantage :

ÉlémentNotationCe que cela signifie
Entitéune boîte nomméeUne sorte de chose qui mérite d'être stockée. Nom au singulier - Customer, pas Customers - parce que la boîte représente le type et que chaque ligne en est une occurrence.
Attributune ligne dans la boîteUn fait à propos de l'entité. En notation pied-de-corbeau ils vivent dans la boîte ; dans l'ancienne notation de Chen ils y pendent dans des ovales.
RelationUn lien, avec sa cardinalité tracée à chaque extrémité. Les symboles disent combien d'occurrences de l'entité de ce côté peuvent participer.

La valeur tient presque entièrement dans le troisième. Tout le monde sait énumérer les entités de son domaine ; la discussion commence à « une commande peut-elle exister sans client ? », et un diagramme entité-association force cette question à être répondue par un symbole plutôt que laissée confortablement vague dans un document.

02Les clés sont la partie qui compte#

Les attributs sont faciles. C'est avec les clés qu'un modèle entité-association gagne sa place, car une clé est une affirmation sur l'identité - et c'est dans l'identité que se cachent les malentendus métier.

ÉlémentNotationCe que cela signifie
Clé primaire (PK)marquée PK, listée en premierL'attribut, ou l'ensemble d'attributs, qui identifie une ligne. Chaque entité en a exactement une.
Clé étrangère (FK)marquée FKUn attribut qui contient la clé d'une autre entité. À chaque trait de relation correspond une clé étrangère quelque part, du côté « plusieurs ».
Clé naturelleun attribut du monde réelUn ISBN, un IBAN, une adresse e-mail. Porteuse de sens, et otage du monde extérieur qui change d'avis.
Clé de substitutionidentifiant généréUn nombre ou un UUID sans signification. Stable par construction, et pour cette raison exactement le choix par défaut dans la plupart des systèmes.
Clé compositedeux attributs ou plusUne identité qui demande plus d'une colonne. Fréquente sur les entités de jonction, où la paire de clés étrangères est l'identité.

03La cardinalité, en bref#

Chaque extrémité d'une relation porte deux symboles : celui de l'extérieur dit combien et celui de l'intérieur dit si c'est optionnel. Une barre vaut un, un pied-de-corbeau vaut plusieurs, un cercle vaut zéro.

ÉlémentNotationCe que cela signifie
Exactement unBarre, barre. Obligatoire et unique aux deux bouts.
Zéro ou unCercle puis barre. Optionnel et unique.
Un ou plusieursBarre puis pied-de-corbeau. Obligatoire et multiple.
Zéro ou plusieursCercle puis pied-de-corbeau. L'extrémité la plus fréquente en pratique.

Le symbole se lit à l'extrémité la plus proche de l'entité qu'il contraint, ce qui est l'inverse de ce que la plupart des gens devinent.

Ce dernier point attrape presque tout le monde et a son propre article - la notation pied-de-corbeau - sur quelle extrémité est laquelle, les relations identifiantes ou non, et la résolution d'un plusieurs-à-plusieurs.

04Conceptuel, logique, physique#

La même entité client à trois niveaux. Conceptuel : une boîte nommée Customer sans attributs. Logique : Customer avec une clé primaire customer_id et les attributs name et email. Physique : une table customer avec les colonnes customer_id bigint, full_name text et email citext.
Une entité, trois niveaux. Le modèle conceptuel est pour le métier, le logique pour la discussion de conception, le physique pour la base de données.

La plupart des diagrammes entité-association confus sont deux niveaux sous un même manteau. Décider lequel vous tracez règle une douzaine de petites disputes avant qu'elles ne commencent.

ÉlémentNotationCe que cela signifie
Conceptuelboîtes et traits seulementEntités et relations dans les mots du métier. Pas de clés, pas de types, souvent pas d'attributs. Tient sur une page, et c'est celui qu'un décideur relit.
Logiqueattributs et clés, sans typesNormalisé, doté de clés, et indépendant de toute base de données particulière. Relations plusieurs-à-plusieurs résolues. C'est la conception.
Physiquetables, colonnes, typesNommé comme la base nomme les choses, avec types, index et la dénormalisation que la charge justifie réellement.

Vous n'avez pas toujours besoin des trois. Un petit service peut aller droit au logique. Ce qui ne marche jamais, c'est de montrer un diagramme conceptuel à un développeur qui a besoin du physique, ou un physique à un décideur métier qui voulait vérifier si un client peut avoir deux adresses.

05Diagramme entité-association ou de classes ?#

Ils se ressemblent et disent des choses différentes. Un diagramme de classes décrit des types dans un programme : comportement, héritage, visibilité, navigabilité. Un diagramme entité-association décrit les données au repos : clés, cardinalité, intégrité référentielle. Le recouvrement est réel, la divergence aussi.

ÉlémentNotationCe que cela signifie
Opérationsdiagramme de classes seulementLes entités n'ont pas de méthodes. Les lignes ne font rien.
Clésentité-association seulementUn diagramme de classes a l'identité d'objet gratuitement ; à une base de données, il faut dire ce qu'est l'identité.
Héritagenativement en classesL'entité-association le modélise en structure surtype-sous-type, et le modèle physique doit choisir l'une des trois dispositions de tables pour l'implémenter.
Plusieurs-à-plusieurstraçable dans les deuxUn diagramme de classes peut le laisser en un seul trait pour toujours. Un modèle entité-association logique doit le résoudre en entité de jonction, car une base ne sait pas le stocker autrement.

À utiliser quand

  • Le sujet est ce qui est stocké, et le public inclut un DBA
  • Il faut trancher précisément l'optionalité et la cardinalité
  • La sortie est un schéma, une migration ou un ensemble de contraintes
  • Un référent métier doit confirmer le vocabulaire du domaine

Préférer autre chose quand

  • Le sujet est le comportement ou une hiérarchie de types - prenez un diagramme de classes
  • Vous documentez les charges utiles d'une API plutôt que le stockage
  • Le stockage n'a pas de schéma et la forme varie réellement d'un document à l'autre
  • Ce sont trois tables et le DDL est plus court que le diagramme

06Erreurs courantes#

  1. Des noms d'entités au pluriel. Customer est l'entité ; customers est la table. Les mélanger rend les phrases de relation illisibles.
  2. Un plusieurs-à-plusieurs non résolu dans un modèle logique. Aucune base ne sait le stocker. Résolvez-le et nommez l'entité de jonction d'après ce qu'elle signifie - Enrolment, pas StudentCourse.
  3. Toutes les relations optionnelles. Un modèle où rien n'est obligatoire n'encode aucune règle, et les contraintes finissent éparpillées dans le code applicatif.
  4. Des attributs qui sont en fait des entités. Si « adresse » a besoin de cinq sous-champs et peut apparaître deux fois, c'est une entité.
  5. Modéliser les tables de reporting. Un modèle de lecture dénormalisé appartient au modèle physique avec une note expliquant pourquoi, pas au logique où on le prendra pour le domaine.

En une ligne chacun

  1. 01Entités, attributs, relations - et la valeur est dans les relations.
  2. 02Une clé est une affirmation sur l'identité ; préférez les clés de substitution et contraignez la naturelle.
  3. 03La cardinalité se lit à l'extrémité la plus proche de l'entité qu'elle contraint.
  4. 04Conceptuel, logique et physique répondent à des questions différentes pour des gens différents.
  5. 05Un diagramme de classes décrit des types dans un programme ; un ER décrit les données au repos.
  6. 06Lisez chaque trait à voix haute dans les deux sens - la relecture la moins chère qui existe.

07Questions fréquentes#

Qu'est-ce qu'un diagramme entité-association ?

Une image des choses qu'un système stocke et de leurs rapports : les entités en boîtes, leurs attributs dedans, et des lignes entre elles portant la cardinalité. C'est la façon standard de s'accorder sur un modèle de données avant qu'aucune table n'existe.

Quelle différence entre modèles conceptuel, logique et physique ?

Un modèle conceptuel nomme les entités et les relations et rien d'autre : c'est un vocabulaire partagé. Un modèle logique ajoute attributs, clés et relations plusieurs-à-plusieurs résolues, tout en restant indépendant de toute base. Un modèle physique ajoute les types, les index et ce qu'exige un moteur précis.

Quelle différence entre une clé primaire et une clé étrangère ?

Une clé primaire identifie une ligne de façon unique dans sa propre table. Une clé étrangère est une colonne contenant une valeur de clé primaire d'une autre table, et c'est elle qui met réellement en oeuvre une relation dans une base relationnelle.

En quoi un diagramme ER diffère-t-il d'un diagramme de classes UML ?

Un diagramme ER modélise des données stockées : il n'a pas d'opérations et ses relations se traduisent en clés étrangères. Un diagramme de classes modélise des types dotés de comportement et peut exprimer ce qu'un schéma relationnel ne peut pas, comme les interfaces et le polymorphisme. Les deux décrivent souvent le même domaine sans correspondance élément pour élément.

Quelle notation utiliser pour les diagrammes ER ?

Le pied de corbeau est le standard de fait, et c'est ce que dessine presque tout outil moderne. La notation de Chen, qui met les relations dans des losanges, reste courante dans les manuels. Ce que l'on peut exprimer est pour l'essentiel le même, et le pied de corbeau est plus compact.

Dans cette série

À lire aussi

Tous les articles