Mermaid ER Diagramm Syntax
Entity-Relationship-Diagramme bilden visuell Datenbankschemata ab. Jede Entität ist eine Tabelle, jedes Attribut ist eine Spalte, und Linien zwischen Entitäten zeigen, wie Tabellen durch Fremdschlüssel verbunden sind. Mermaids ER Syntax ermöglicht es, dies alles als Klartext zu definieren und das gerenderte Diagramm während der Eingabe aktualisiert zu sehen.
Entitäten und Attribute
Definiere eine Entität mit ihren Attributen in geschweiften Klammern:
erDiagram
USER {
int id PK
string email UK
string name
string password_hash
timestamp created_at
}
Jede Attributzeile hat drei Teile: typ name einschränkung. Die Einschränkung (PK, FK, UK) ist optional.
Beziehungen
Beziehungen verbinden Entitäten und spezifizieren die Kardinalität:
CUSTOMER ||--o{ ORDER : "places"
Das bedeutet: ein KUNDE gibt null oder mehr BESTELLUNGEN auf. Die Beschriftung nach dem Doppelpunkt beschreibt das Verb der Beziehung.
Kardinalitätssymbole
| Linke Seite | Symbol | Bedeutung |
|---|---|---|
| Genau eins | ` | |
| Null oder eins | `o | ` |
| Eins oder mehr | `} | ` |
| Null oder mehr | }o | Optional, beliebig viele |
Die Beziehungslinie ist -- zwischen den beiden Seiten. Also bedeutet ||--o{ “genau eins auf der linken Seite, null oder mehr auf der rechten Seite.”
Häufige Muster
| Beziehung | Syntax | Beispiel |
|---|---|---|
| Eins zu viele | ` | |
| Viele zu eins | `}o— | |
| Eins zu eins | ` | |
| Viele zu viele (via Junction) | Zwei ` |
Modellierungsmuster
Eins zu viele (am häufigsten)
erDiagram
AUTHOR ||--o{ BOOK : writes
AUTHOR {
int id PK
string name
}
BOOK {
int id PK
string title
date published
int author_id FK
}
Der Fremdschlüssel author_id in BOOK ist der Mechanismus, der diese Beziehung in der Datenbank implementiert. Entitäten enthalten normalerweise den FK als Attribut; das ER Diagramm zeigt beides: die Beziehungslinie für das konzeptuelle Modell und das FK Attribut für die Implementierung.
Viele zu viele (mit Junction)
erDiagram
STUDENT ||--o{ ENROLLMENT : registers
ENROLLMENT ||--o{ COURSE : for
STUDENT {
int student_id PK
string name
}
COURSE {
int course_id PK
string title
}
ENROLLMENT {
int student_id PK, FK
int course_id PK, FK
date enrolled_on
string grade
}
Die ENROLLMENT Tabelle ist die Junction-Tabelle. Der zusammengesetzte Primärschlüssel besteht aus beiden Fremdschlüsseln. Die Attributspalte grade wäre in den Tabellen STUDENT oder COURSE nicht sinnvoll, daher ist die Junction-Tabelle der richtige Ort.
Erstelle andere Diagrammtypen mit dem Mermaid Editor oder sieh dir den Flussdiagramm Generator für Prozessabläufe an.