Archyno
Data modellingGrundlagen

Entity-Relationship-Diagramme

Ein Bild der Dinge, die ein System speichert, und wie sie zusammenhängen. Alt, klein, und immer noch der schnellste Weg herauszufinden, dass zwei Leute mit dem Wort "Bestellung" Verschiedenes meinen.

9 Min. LesezeitER - crow's foot1 von 3

Die kurze Antwort

  • Konzeptionell benennt nur Entitäten und Beziehungen; logisch ergänzt Attribute, Schlüssel und aufgelöste n:m; physisch ergänzt Typen und Indizes für eine Engine.
  • Ein Primärschlüssel identifiziert eine Zeile in der eigenen Tabelle; ein Fremdschlüssel hält den Primärschlüssel einer anderen und setzt die Beziehung erst um.
  • Ein ER-Diagramm hat keine Operationen, seine Beziehungen bilden auf Fremdschlüssel ab. Ein Klassendiagramm modelliert Verhalten und kann ausdrücken, was ein Schema nicht kann.
  • Krähenfuss ist der De-facto-Standard und das, was fast jedes moderne Werkzeug zeichnet. Die Chen-Notation sagt dasselbe und braucht mehr Platz.
Ein Entity-Relationship-Diagramm mit vier Entitäten. Customer hat den Primärschlüssel customer_id; Order hat den Schlüssel order_id und den Fremdschlüssel customer_id; OrderLine hat den Schlüssel order_line_id mit den Fremdschlüsseln order_id und product_id; Product hat den Schlüssel product_id. Ein Kunde gibt null oder mehr Bestellungen auf, eine Bestellung enthält eine oder mehrere Positionen, und ein Produkt erscheint auf null oder mehr Positionen.
Vier Entitäten und drei Beziehungen. Jede Linie lässt sich in beide Richtungen laut vorlesen, und genau das ist die schnellste Review-Technik, die es gibt.

01Was es zeigt#

Ein ER-Diagramm beschreibt die Dinge, die ein System speichert, und die Verbindungen dazwischen. Drei Zutaten, mehr nicht:

ElementNotationWas es bedeutet
Entitätein benannter KastenEine Art Ding, die es wert ist gespeichert zu werden. Substantiv im Singular - Customer, nicht Customers - denn der Kasten steht für den Typ und jede Zeile ist eines davon.
Attributeine Zeile im KastenEine Tatsache über die Entität. In der Krähenfuß-Notation stehen sie im Kasten; in der älteren Chen-Notation hängen sie in Ovalen daran.
BeziehungEine Verbindung, mit der Kardinalität an jedem Ende. Die Symbole sagen, wie viele der Entität an diesem Ende beteiligt sein können.

Der Wert steckt fast vollständig in der dritten. Die Entitäten seiner Domäne kann jeder aufzählen; der Streit beginnt bei „kann eine Bestellung ohne Kunden existieren?“ - und ein ER-Diagramm zwingt diese Frage in ein Symbol, statt sie bequem vage in einem Dokument stehen zu lassen.

02Die Schlüssel sind der Teil, auf den es ankommt#

Attribute sind leicht. Bei den Schlüsseln verdient sich ein ER-Modell seinen Platz, denn ein Schlüssel ist eine Aussage über Identität - und in der Identität verstecken sich die fachlichen Missverständnisse.

ElementNotationWas es bedeutet
Primärschlüssel (PK)als PK markiert, zuerst gelistetDas Attribut oder die Attributmenge, die eine Zeile identifiziert. Jede Entität hat genau einen.
Fremdschlüssel (FK)als FK markiertEin Attribut, das den Schlüssel einer anderen Entität hält. Zu jeder Beziehungslinie gehört irgendwo ein Fremdschlüssel, und zwar auf der „viele“-Seite.
Natürlicher Schlüsselein Attribut aus der echten WeltEine ISBN, eine IBAN, eine E-Mail-Adresse. Bedeutungsvoll - und Geisel davon, dass die Außenwelt es sich anders überlegt.
Surrogatschlüsselgenerierte idEine Zahl oder UUID ohne Bedeutung. Stabil per Konstruktion, und genau deshalb in den meisten Systemen die Standardwahl.
Zusammengesetzter Schlüsselzwei oder mehr AttributeIdentität, die mehr als eine Spalte braucht. Häufig bei Verknüpfungsentitäten, wo das Fremdschlüsselpaar die Identität ist.

03Kardinalität, kurz#

Jedes Ende einer Beziehung trägt zwei Symbole: das äußere sagt wie viele und das innere, ob es optional ist. Ein Strich ist eins, ein Krähenfuß ist viele, ein Kreis ist null.

ElementNotationWas es bedeutet
Genau einsStrich, Strich. An beiden Enden verpflichtend und einfach.
Null oder einsKreis, dann Strich. Optional und einfach.
Eins oder mehrStrich, dann Krähenfuß. Verpflichtend und mehrfach.
Null oder mehrKreis, dann Krähenfuß. In der Praxis das häufigste Ende.

Das Symbol wird an dem Ende gelesen, das der Entität am nächsten ist, die es einschränkt - das Gegenteil dessen, was die meisten raten.

Genau dieser letzte Punkt erwischt fast jeden und hat einen eigenen Artikel - Krähenfuß-Notation - darüber, welches Ende welches ist, über identifizierende gegen nicht identifizierende Beziehungen und darüber, wie man ein n:m auflöst.

04Konzeptionell, logisch, physisch#

Dieselbe Kundenentität auf drei Ebenen. Konzeptionell: ein Kasten namens Customer ohne Attribute. Logisch: Customer mit dem Primärschlüssel customer_id und den Attributen name und email. Physisch: eine Tabelle customer mit den Spalten customer_id bigint, full_name text und email citext.
Eine Entität, drei Ebenen. Das konzeptionelle Modell ist für den Fachbereich, das logische für die Entwurfsdiskussion, das physische für die Datenbank.

Die meisten verwirrenden ER-Diagramme sind zwei Ebenen in einem Mantel. Zu entscheiden, welche Sie zeichnen, schlichtet ein Dutzend kleiner Streitigkeiten, bevor sie beginnen.

ElementNotationWas es bedeutet
Konzeptionellnur Kästen und LinienEntitäten und Beziehungen in den Worten des Fachbereichs. Keine Schlüssel, keine Typen, oft keine Attribute. Passt auf eine Seite, und es ist das, was ein Stakeholder prüft.
LogischAttribute und Schlüssel, keine TypenNormalisiert, verschlüsselt und unabhängig von einer konkreten Datenbank. n:m-Beziehungen aufgelöst. Das ist der Entwurf.
PhysischTabellen, Spalten, TypenSo benannt, wie die Datenbank Dinge benennt, mit Typen, Indizes und der Denormalisierung, die die Last tatsächlich rechtfertigt.

Sie brauchen nicht immer alle drei. Ein kleiner Service kann direkt zum logischen gehen. Was nie funktioniert, ist einem Entwickler, der das physische braucht, das konzeptionelle zu zeigen - oder einem Fach-Stakeholder das physische, der prüfen wollte, ob ein Kunde zwei Adressen haben kann.

05ER-Diagramm oder Klassendiagramm?#

Sie sehen ähnlich aus und bedeuten Verschiedenes. Ein Klassendiagramm beschreibt Typen in einem Programm: Verhalten, Vererbung, Sichtbarkeit, Navigierbarkeit. Ein ER-Diagramm beschreibt Daten im Ruhezustand: Schlüssel, Kardinalität, referenzielle Integrität. Die Überschneidung ist echt, die Abweichung auch.

ElementNotationWas es bedeutet
Operationennur KlassendiagrammEntitäten haben keine Methoden. Zeilen tun nichts.
Schlüsselnur EREin Klassendiagramm bekommt Objektidentität geschenkt; einer Datenbank muss man sagen, was Identität ist.
VererbungKlassendiagramm nativER modelliert sie als Supertyp-Subtyp-Struktur, und das physische Modell muss eine von drei Tabellenanordnungen zur Umsetzung wählen.
n:min beiden zeichenbarEin Klassendiagramm darf es für immer als eine Linie stehen lassen. Ein logisches ER-Modell muss es in eine Verknüpfungsentität auflösen, weil eine Datenbank es sonst nicht speichern kann.

Dazu greifen, wenn

  • Das Thema ist, was gespeichert wird, und im Publikum sitzt ein DBA
  • Optionalität und Kardinalität müssen genau geklärt werden
  • Das Ergebnis ist ein Schema, eine Migration oder eine Menge von Constraints
  • Ein Fach-Stakeholder soll das Domänenvokabular bestätigen

Zu etwas anderem greifen, wenn

  • Das Thema ist Verhalten oder eine Typhierarchie - nehmen Sie ein Klassendiagramm
  • Sie dokumentieren die Payloads einer API und nicht die Speicherung
  • Der Speicher hat kein Schema und die Form variiert wirklich je Dokument
  • Es sind drei Tabellen und das DDL ist kürzer als das Diagramm

06Häufige Fehler#

  1. Entitätsnamen im Plural. Customer ist die Entität; customers ist die Tabelle. Beides zu vermischen macht Beziehungssätze unlesbar.
  2. Unaufgelöstes n:m im logischen Modell. Keine Datenbank kann es speichern. Lösen Sie es auf und benennen Sie die Verknüpfungsentität nach ihrer Bedeutung - Enrolment, nicht StudentCourse.
  3. Jede Beziehung optional. Ein Modell, in dem nichts verpflichtend ist, kodiert überhaupt keine Regeln, und die Constraints landen stattdessen verstreut im Anwendungscode.
  4. Attribute, die eigentlich Entitäten sind. Braucht „Adresse“ fünf Unterfelder und kann zweimal vorkommen, ist sie eine Entität.
  5. Reporting-Tabellen modellieren. Ein denormalisiertes Lesemodell gehört mit einer Begründung ins physische Modell, nicht ins logische, wo es für die Domäne gehalten wird.

In je einer Zeile

  1. 01Entitäten, Attribute, Beziehungen - und der Wert liegt in den Beziehungen.
  2. 02Ein Schlüssel ist eine Aussage über Identität; bevorzugen Sie Surrogatschlüssel und constrainen Sie den natürlichen.
  3. 03Die Kardinalität wird an dem Ende gelesen, das der eingeschränkten Entität am nächsten liegt.
  4. 04Konzeptionell, logisch und physisch beantworten verschiedene Fragen für verschiedene Leute.
  5. 05Ein Klassendiagramm beschreibt Typen in einem Programm; ein ER-Diagramm Daten im Ruhezustand.
  6. 06Lesen Sie jede Linie in beide Richtungen laut - das billigste Review, das es gibt.

07Häufige Fragen#

Was ist ein Entity-Relationship-Diagramm?

Ein Bild der Dinge, die ein System speichert, und wie sie zusammenhängen: Entitäten als Kästen, ihre Attribute darin, und Linien dazwischen, die Kardinalität tragen. Es ist der übliche Weg, sich auf ein Datenmodell zu einigen, bevor irgendeine Tabelle existiert.

Was unterscheidet konzeptionelles, logisches und physisches Datenmodell?

Ein konzeptionelles Modell benennt Entitäten und Beziehungen und sonst nichts, es ist also ein gemeinsames Vokabular. Ein logisches Modell ergänzt Attribute, Schlüssel und aufgelöste n:m-Beziehungen und bleibt dabei datenbankunabhängig. Ein physisches Modell ergänzt Typen, Indizes und alles, was eine bestimmte Engine braucht.

Was unterscheidet Primär- und Fremdschlüssel?

Ein Primärschlüssel identifiziert eine Zeile eindeutig innerhalb ihrer eigenen Tabelle. Ein Fremdschlüssel ist eine Spalte, die einen Primärschlüsselwert einer anderen Tabelle hält, und er ist es, der eine Beziehung in einer relationalen Datenbank tatsächlich umsetzt.

Wie unterscheidet sich ein ER- von einem UML-Klassendiagramm?

Ein ER-Diagramm modelliert gespeicherte Daten, hat also keine Operationen, und seine Beziehungen bilden auf Fremdschlüssel ab. Ein Klassendiagramm modelliert Typen mit Verhalten und kann Dinge ausdrücken, die ein relationales Schema nicht kann, etwa Schnittstellen und Polymorphie. Beide beschreiben oft dieselbe Domäne, ohne Element für Element übereinzustimmen.

Welche Notation soll ich für ER-Diagramme nutzen?

Krähenfuss ist der De-facto-Standard und das, was nahezu jedes moderne Werkzeug zeichnet. Die Chen-Notation, die Beziehungen in Rauten setzt, ist in Lehrbüchern weiterhin verbreitet. Ausdrücken lässt sich im Wesentlichen dasselbe, und Krähenfuss ist kompakter.

In dieser Reihe

Passend dazu

Alle Artikel