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.
01Was es zeigt#
Ein ER-Diagramm beschreibt die Dinge, die ein System speichert, und die Verbindungen dazwischen. Drei Zutaten, mehr nicht:
| Element | Notation | Was es bedeutet |
|---|---|---|
| Entität | ein benannter Kasten | Eine 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. |
| Attribut | eine Zeile im Kasten | Eine 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. |
| Beziehung | Eine 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.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Primärschlüssel (PK) | als PK markiert, zuerst gelistet | Das Attribut oder die Attributmenge, die eine Zeile identifiziert. Jede Entität hat genau einen. |
| Fremdschlüssel (FK) | als FK markiert | Ein 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üssel | ein Attribut aus der echten Welt | Eine ISBN, eine IBAN, eine E-Mail-Adresse. Bedeutungsvoll - und Geisel davon, dass die Außenwelt es sich anders überlegt. |
| Surrogatschlüssel | generierte id | Eine Zahl oder UUID ohne Bedeutung. Stabil per Konstruktion, und genau deshalb in den meisten Systemen die Standardwahl. |
| Zusammengesetzter Schlüssel | zwei oder mehr Attribute | Identitä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.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Genau eins | Strich, Strich. An beiden Enden verpflichtend und einfach. | |
| Null oder eins | Kreis, dann Strich. Optional und einfach. | |
| Eins oder mehr | Strich, dann Krähenfuß. Verpflichtend und mehrfach. | |
| Null oder mehr | Kreis, 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#
Die meisten verwirrenden ER-Diagramme sind zwei Ebenen in einem Mantel. Zu entscheiden, welche Sie zeichnen, schlichtet ein Dutzend kleiner Streitigkeiten, bevor sie beginnen.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Konzeptionell | nur Kästen und Linien | Entitä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. |
| Logisch | Attribute und Schlüssel, keine Typen | Normalisiert, verschlüsselt und unabhängig von einer konkreten Datenbank. n:m-Beziehungen aufgelöst. Das ist der Entwurf. |
| Physisch | Tabellen, Spalten, Typen | So 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.
| Element | Notation | Was es bedeutet |
|---|---|---|
| Operationen | nur Klassendiagramm | Entitäten haben keine Methoden. Zeilen tun nichts. |
| Schlüssel | nur ER | Ein Klassendiagramm bekommt Objektidentität geschenkt; einer Datenbank muss man sagen, was Identität ist. |
| Vererbung | Klassendiagramm nativ | ER modelliert sie als Supertyp-Subtyp-Struktur, und das physische Modell muss eine von drei Tabellenanordnungen zur Umsetzung wählen. |
| n:m | in beiden zeichenbar | Ein 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#
- Entitätsnamen im Plural.
Customerist die Entität;customersist die Tabelle. Beides zu vermischen macht Beziehungssätze unlesbar. - 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, nichtStudentCourse. - Jede Beziehung optional. Ein Modell, in dem nichts verpflichtend ist, kodiert überhaupt keine Regeln, und die Constraints landen stattdessen verstreut im Anwendungscode.
- Attribute, die eigentlich Entitäten sind. Braucht „Adresse“ fünf Unterfelder und kann zweimal vorkommen, ist sie eine Entität.
- 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
- 01Entitäten, Attribute, Beziehungen - und der Wert liegt in den Beziehungen.
- 02Ein Schlüssel ist eine Aussage über Identität; bevorzugen Sie Surrogatschlüssel und constrainen Sie den natürlichen.
- 03Die Kardinalität wird an dem Ende gelesen, das der eingeschränkten Entität am nächsten liegt.
- 04Konzeptionell, logisch und physisch beantworten verschiedene Fragen für verschiedene Leute.
- 05Ein Klassendiagramm beschreibt Typen in einem Programm; ein ER-Diagramm Daten im Ruhezustand.
- 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
- 01ER-Diagramme
- 02Krähenfuss-Notation
- 03Schemaentwurf
Passend dazu
Notationsreferenz
Modellierungspraxis
Strukturdiagramme
Strukturdiagramme
Strukturdiagramme
Modellierungspraxis