ERD (Entity-Relationship-Diagramm)

Über ERDs

Ein Entity-Relationship-Diagramm (ERD) dokumentiert die Struktur einer relationalen Datenbank: Tabellen (Entitäten), deren Spalten (Attribute) und die Fremdschlüsselbeziehungen zwischen ihnen — einschließlich Kardinalität (1..1 / 0..1 / 1..N / 0..N). Backend-Entwicklerinnen und -Entwickler zeichnen sie, um neue Teammitglieder in eine Codebasis einzuarbeiten. Datenarchitektinnen und -architekten skizzieren sie auf einem Whiteboard, bevor sie DDL schreiben. Datenbank-Lehrende (Elmasri & Navathe; Silberschatz / Korth / Sudarshan) stellen sie in jeder CS-Datenbankvorlesung in den Mittelpunkt der konzeptuellen Designeinheit.

Schematex implementiert die Crow's-Foot-Notation — den de-facto modernen Stil, der von MySQL Workbench, dbdiagram.io, ERDPlus, Lucidchart, draw.io, Mermaid erDiagram und Oracle SQL Developer Data Modeler verwendet wird. Der DSL ist DBML-kompatibel-ähnlich, sodass Ingenieurinnen und Ingenieure ihn per Copy-paste übernehmen können; er akzeptiert auch den vollständigen Mermaid-erDiagram-Dialekt — beginnen Sie mit dem erDiagram-Header und fügen Sie Mermaid-Beziehungen (CUSTOMER ||--o{ ORDER : places) und typ-erste Entity-Blöcke (ORDER { int id PK }) unverändert ein; Entitäten werden automatisch aus Beziehungen erstellt. Die Chen-1976-Notation (Rechtecke + Rauten + Ovale + ISA-Hierarchien) und Barker-Overlay sind auf v0.2 verschoben; heute wird jedes Diagramm als Crow's Foot gerendert.

Hinweis — Dies ist nicht dasselbe wie die entity-Engine. entity (Gesellschaftsstruktur) dient Unternehmens- / Rechtsebenen-Eigentumshierarchien (Tochtergesellschaften, Beteiligungsübersichten, Trusts). erd ist für Datenbankschemata (Tabellen, Spalten, Fremdschlüssel). Unterschiedliche Domäne, unterschiedliches Layout, unterschiedliche Zielgruppe.

erd·§
↘ preview
100%
University Schema Entity-Relationship Diagram with 4 entities and 3 relationships. University Schema majors in Major major_id int PK name varchar Course course_id int PK title varchar credits int Student student_id int PK name varchar email varchar UK major_id int FK Enrollment student_id int PK FK course_id int PK FK grade char
UTF-8 · LF · 30 lines · 674 chars✓ parsed·4.8 ms·8.1 KB SVG

1. Ihr erstes ERD

Das kleinste sinnvolle ERD: eine übergeordnete Tabelle, die von einer untergeordneten Tabelle über einen Fremdschlüssel referenziert wird.

erd·§
↘ preview
100%
Schematex ERD Entity-Relationship Diagram with 2 entities and 1 relationships. places Customer customer_id int PK email varchar UK Order order_id int PK customer_id int FK
UTF-8 · LF · 10 lines · 252 chars✓ parsed·0.7 ms·4.3 KB SVG

Vier Regeln decken 80 % der Nutzungsfälle ab:

  1. Beginnen Sie mit erd. Optionale Header: title:, direction: LR | TB.
  2. Jede Tabelle ist ein Block: table Name { spalte typ markierung }. Markierungen sind PK, FK, UK, NN (oder *) für NOT NULL.
  3. Inline-Fremdschlüsselziel: hängen Sie FK -> Andere.spalte an eine Spalte an. Der Renderer fügt automatisch ein FK-Pill hinzu.
  4. Verbinden Sie Tabellen mit einer ref-Zeile: ref Quelle <links-kard> -- <rechts-kard> Ziel [: "beschriftung"]. Kardinalität ist eines von one-mandatory, one-optional, many-mandatory, many-optional (benannte Form), 1..1 / 0..1 / 1..N / 0..N (Min-Max) oder Mermaid-Glyphen (}o--|| usw.) als Alias.

Kommentare verwenden // oder #. Blockformen können mehrzeilig (eine Spalte pro Zeile) oder inline sein (table A { id int PK; name varchar }).


2. Kardinalitäts-Glyphen

Crow's Foot kodiert die Kardinalität an jedem Ende der Beziehungslinie:

GlypheLesartMin..MaxBenanntes Token
─┃ (senkrechter Balken)Genau eins (zwingend eins)1..1one-mandatory
─○ (offener Kreis)Null oder eins (optional eins)0..1one-optional
─┃< (Balken + Hahnenfuß)Eins oder mehr (zwingend viele)1..Nmany-mandatory
─○< (Kreis + Hahnenfuß)Null oder mehr (optional viele)0..Nmany-optional

Jedes Ende einer Linie wird unabhängig annotiert. Eine typische 1:N-Beziehung lautet „genau ein CUSTOMER gibt null oder mehr ORDERS auf":

ref Order.customer_id many-mandatory -- one-mandatory Customer.customer_id : "places"

Von rechts nach links gelesen: Das rechte Ende der Linie ist an Customer mit einem einfachen Balken befestigt (one-mandatory); das linke Ende ist an Order mit einem Balken + Hahnenfuß befestigt (many-mandatory).


3. Mermaid-Alias

Wenn Sie bereits Mermaid erDiagram verwenden, funktionieren dieselben Glyphen als Eingabe:

erd·§
↘ preview
100%
Schematex ERD Entity-Relationship Diagram with 3 entities and 2 relationships. places contains Customer customer_id int PK email varchar UK Order order_id int PK customer_id int FK Product product_id int PK name varchar
UTF-8 · LF · 7 lines · 266 chars✓ parsed·1.1 ms·5.8 KB SVG
Mermaid-TokenSchematex-Bedeutung
|o links / o| rechts0..1
||1..1
}o links / o{ rechts0..N
}| links / |{ rechts1..N
--identifizierend / durchgezogene Linie
..nicht identifizierend / gestrichelte Linie

4. Identifizierend vs. nicht identifizierend

Verwenden Sie -- für identifizierende Beziehungen (durchgezogene Linie) und .. für nicht identifizierende (gestrichelt):

erd·§
↘ preview
100%
Schematex ERD Entity-Relationship Diagram with 2 entities and 1 relationships. logs (optional FK) User id int PK email varchar SessionLog id int PK user_id int FK created_at timestamp
UTF-8 · LF · 5 lines · 214 chars✓ parsed·0.7 ms·4.4 KB SVG

Die gestrichelte Linie folgt der Barker- / IDEF1X-Konvention für nicht identifizierende Beziehungen.


5. Zusammengesetzte Primärschlüssel (Assoziationstabellen)

Assoziations- („Verbindungs-") Tabellen lösen M:N-Beziehungen auf. Markieren Sie jede PK- + FK-Spalte mit sowohl PK als auch FK:

erd·§
↘ preview
100%
Schematex ERD Entity-Relationship Diagram with 3 entities and 2 relationships. Student student_id int PK name varchar Course course_id int PK title varchar Enrollment student_id int PK FK course_id int PK FK grade char
UTF-8 · LF · 10 lines · 381 chars✓ parsed·0.9 ms·5.7 KB SVG

Schematex rendert beide Pills (PK + FK) in derselben Zeile. Die PK-Unterstreichung wird auf den Spaltennamen angewendet, wenn eine PK-Markierung vorhanden ist.


6. Layout-Richtung

direction: LR (Standard) platziert übergeordnete Tabellen links, untergeordnete Tabellen rechts. direction: TB wechselt zu von oben nach unten — nützlich für schmale Einbettungen:

erd·§
↘ preview
100%
Library (top-down) Entity-Relationship Diagram with 3 entities and 2 relationships. Library (top-down) borrowed by of Member id int PK name varchar email varchar UK Book id int PK title varchar author varchar Loan id int PK member_id int FK book_id int FK due_date date
UTF-8 · LF · 10 lines · 409 chars✓ parsed·0.9 ms·6.7 KB SVG

Geschichtetes orthogonales Manhattan-Routing mit einfach gebogenen Kanten. v0.1 verwendet reihenfolgebasiertes Stapeln innerhalb von Schichten; Schwerpunkt-basierte Kreuzungsreduktion ist auf v0.2 verschoben.


7. Notationsmodi

Der DSL-Header kann die Notation festlegen:

erd
notation: crowsfoot     // Standard — einziger in v0.1 unterstützter Modus

notation: chen (Rechteck-Raute-Oval, schwache Entitäten, ternäre, ISA) und notation: barker (per-Hälfte gestrichelt) sind in 27-ERD-STANDARD.md dokumentiert, werden vom Parser jedoch heute abgelehnt. Ziel: v0.2.


8. Einschränkungen von v0.1

  • Nur Crow's Foot. Chen- und Barker-Rendering zurückgestellt.
  • Keine Kantenkreuzungsminimierung. Die geschichtete Platzierung verwendet die Deklarationsreihenfolge innerhalb der Schichten; große ERDs (10+ Tabellen, dichte FKs) werden einige Kreuzungen aufweisen. Ordnen Sie table-Blöcke neu an, wenn ein bestimmtes Layout wichtig ist.
  • Keine selbstreferenziellen C-Schleifen. Rekursive Beziehungen (Employee.manager_id -> Employee.id) werden geparst, aber als gerade orthogonale Linien und nicht als die kanonische C-Form geroutet.
  • Keine M:N-Auto-Auflösung. Drücken Sie die Assoziationsentität explizit aus (dies ist ohnehin die Standardpraxis in Produktionsschemata).

Die vollständige Standardreferenz finden Sie unter docs/reference/27-ERD-STANDARD.md.


Verwandte Beispiele

Sofort verwendbare Szenarien aus der Beispielgalerie:

erd·§ Crow's-foot (Everest 1976) / DBML compatible
University Schema Entity-Relationship Diagram with 4 entities and 3 relationships. University Schema majors in Major major_id int PK name varchar Course course_id int PK title varchar credits int Student student_id int PK name varchar email varchar UK major_id int FK Enrollment student_id int PK FK course_id int PK FK grade char
University schema (academic ERD)
Classic textbook schema with Student / Course / Enrollment associative entity and labelled relationships — the canonical Elmasri & Navathe ch.3 example.
education
erd·§ Crow's-foot (Everest 1976) / DBML compatible
E-commerce Schema Entity-Relationship Diagram with 6 entities and 5 relationships. E-commerce Schema places Customer customer_id int PK email varchar UK name varchar created_at timestamp Category category_id int PK name varchar Address address_id int PK customer_id int FK line1 varchar city varchar zip varchar Order order_id int PK customer_id int FK placed_at timestamp status varchar Product product_id int PK category_id int FK name varchar price decimal OrderLine order_id int PK FK line_no int PK product_id int FK qty int price decimal
E-commerce schema
Production-style schema with Customer / Order / OrderLine / Product / Category — typical mid-complexity backend ERD with composite PK on the line-item table.
software & it

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.