ER-Diagramme erstellen
Du hast gelernt, wie du Entities, Attribute und Beziehungen identifizierst. Jetzt wird es visuell! Ein ER-Diagramm (Entity-Relationship-Diagramm) ist eine grafische Darstellung deines Datenbank-Designs. In diesem Artikel lernst du, wie du ER-Diagramme erstellst und liest.
Was ist ein ER-Diagramm?
Ein ER-Diagramm zeigt:
- Welche Entities es gibt (als Rechtecke)
- Welche Attribute jede Entity hat (in den Rechtecken)
- Welche Beziehungen zwischen den Entities bestehen (als Linien)
- Welchen Typ diese Beziehungen haben (1:1, 1:n, n:m)
ER-Diagramme sind wie Baupläne für deine Datenbank. Sie helfen dir, das große Ganze zu sehen, bevor du die ersten SQL-Befehle schreibst.
Die Grundelemente
1. Entity (Rechteck)
Entities werden als Rechtecke dargestellt. Der Name der Entity steht oben.
┌─────────────┐
│ Kunde │
├─────────────┤
│ KundenID │
│ Name │
│ Email │
│ Stadt │
└─────────────┘Oben: Entity-Name (z.B. "Kunde")
Unten: Liste der Attribute
2. Primärschlüssel (markiert)
Der Primärschlüssel wird oft unterstrichen oder mit PK markiert:
┌─────────────┐
│ Kunde │
├─────────────┤
│ KundenID PK │ ← Primärschlüssel
│ Name │
│ Email │
└─────────────┘3. Fremdschlüssel (markiert)
Fremdschlüssel werden mit FK markiert:
┌─────────────────┐
│ Bestellung │
├─────────────────┤
│ BestellungID PK │
│ Datum │
│ KundenID FK │ ← Fremdschlüssel
└─────────────────┘Beziehungen zeichnen
Beziehungen werden als Linien zwischen Entities dargestellt. Die Enden der Linien zeigen den Beziehungstyp.
Crow's Foot Notation - Symbole
Die Linienenden haben spezielle Symbole:
- │ (Strich) = "genau einer"
- ○ (Kreis) = "null oder ..." (optional)
- ╫ (Krähenfuß) = "viele"
Diese werden kombiniert:
- │─ = genau einer (Pflicht)
- ○─ = null oder einer (optional)
- │╫ = ein oder viele (mindestens einer)
- ○╫ = null oder viele (kann auch leer sein)
1:n Beziehung zeichnen
Die häufigste Beziehung: Ein Kunde hat viele Bestellungen.
erDiagram
KUNDE ||--o{ BESTELLUNG : "hat"
KUNDE {
int KundenID PK
string Name
string Email
}
BESTELLUNG {
int BestellungID PK
date Datum
int KundenID FK
}Lies von links nach rechts:
- Links bei Kunde: │─ = genau einer
- Rechts bei Bestellung: ○╫ = null oder viele
Bedeutung: Ein Kunde kann null oder viele Bestellungen haben. Eine Bestellung gehört zu genau einem Kunden.
1:1 Beziehung zeichnen
Selten, aber möglich: Eine Person hat genau einen Reisepass.
erDiagram
PERSON ||--|| REISEPASS : "hat"
PERSON {
int PersonID PK
string Name
date Geburt
}
REISEPASS {
int PassID PK
string Nummer
int PersonID FK
}Beide Seiten: │─ = genau einer
n:m Beziehung zeichnen
Viele-zu-Viele mit Zwischentabelle: Studenten und Kurse.
erDiagram
STUDENT ||--o{ EINSCHREIBUNG : "belegt"
KURS ||--o{ EINSCHREIBUNG : "wird_besucht_von"
STUDENT {
int StudentID PK
string Name
string Matrikel
}
EINSCHREIBUNG {
int StudentID FK
int KursID FK
decimal Note
}
KURS {
int KursID PK
string Name
int Credits
}Die Zwischentabelle "Einschreibung" hat:
- Zwei Fremdschlüssel (StudentID, KursID)
- Optional eigene Attribute (Note)
- Zwei 1:n Beziehungen: Student → Einschreibung und Kurs → Einschreibung
Komplettes Beispiel: Bibliothek
Lass uns unser Bibliotheks-Beispiel als ER-Diagramm darstellen:
erDiagram
AUTOR ||--o{ BUCH : "schreibt"
GENRE ||--o{ BUCH : "umfasst"
BUCH ||--o{ AUSLEIHE : "wird_ausgeliehen"
MITGLIED ||--o{ AUSLEIHE : "leiht_aus"
AUTOR {
int AutorID PK
string Name
int Geburtsjahr
}
GENRE {
int GenreID PK
string Name
string Beschreibung
}
BUCH {
int BuchID PK
string Titel
string ISBN
int Erscheinungsjahr
int Seitenzahl
int AutorID FK
int GenreID FK
}
AUSLEIHE {
int AusleihID PK
date Ausleihdatum
date Rueckgabedatum
date TatsaechlicheRueckgabe
int BuchID FK
int MitgliedsID FK
}
MITGLIED {
int MitgliedsID PK
string Vorname
string Nachname
string Email
string Telefon
string Adresse
date Beitrittsdatum
}Das Diagramm zeigt:
- Autor → Buch: 1:n (ein Autor schreibt viele Bücher)
- Genre → Buch: 1:n (ein Genre umfasst viele Bücher)
- Buch ↔ Mitglied: n:m über Ausleihe (viele Bücher, viele Mitglieder)
Optionale vs. Pflicht-Beziehungen
Der Kreis ○ zeigt an, dass eine Beziehung optional ist.
Beispiel: Kunde und Bestellung
○╫ bei Bestellung bedeutet:
- Ein Kunde kann null Bestellungen haben (neuer Kunde)
- Ein Kunde kann viele Bestellungen haben
│─ bei Kunde bedeutet:
- Eine Bestellung muss genau einem Kunden gehören (Pflicht)
Schritt-für-Schritt: ER-Diagramm erstellen
So erstellst du ein ER-Diagramm für dein Projekt:
Schritt 1: Entities zeichnen
Zeichne für jede Entity ein Rechteck mit Namen und Attributen. Markiere Primärschlüssel.
Schritt 2: Beziehungen identifizieren
Frage: Welche Entities hängen zusammen? Wie?
Schritt 3: Beziehungstypen bestimmen
Für jede Beziehung: 1:1, 1:n oder n:m?
Schritt 4: Linien zeichnen
Verbinde die Entities mit Linien. Nutze die richtigen Symbole an den Enden.
Schritt 5: Fremdschlüssel eintragen
Bei 1:n Beziehungen: Trage den Fremdschlüssel auf der "n"-Seite ein.
Bei n:m Beziehungen: Erstelle Zwischentabelle mit beiden Fremdschlüsseln.
Übung: E-Commerce ER-Diagramm
Erstelle ein ER-Diagramm für einen Online-Shop mit diesen Entities:
- Kunde: KundenID, Name, Email
- Produkt: ProduktID, Name, Preis, Lagerbestand
- Bestellung: BestellungID, Datum, Status
- Bestellposition: Zwischentabelle für Bestellung ↔ Produkt
Beziehungen:
- Kunde → Bestellung (1:n)
- Bestellung ↔ Produkt (n:m über Bestellposition)
Versuche es selbst zu zeichnen, bevor du weiterliest.
Lösung
erDiagram
KUNDE ||--o{ BESTELLUNG : "platziert"
BESTELLUNG ||--o{ BESTELLPOSITION : "enthält"
PRODUKT ||--o{ BESTELLPOSITION : "ist_in"
KUNDE {
int KundenID PK
string Name
string Email
}
BESTELLUNG {
int BestellungID PK
date Datum
string Status
int KundenID FK
}
BESTELLPOSITION {
int PositionID PK
int BestellungID FK
int ProduktID FK
int Menge
decimal Einzelpreis
}
PRODUKT {
int ProduktID PK
string Name
decimal Preis
int Lagerbestand
}Tools zum Erstellen von ER-Diagrammen
Du musst nicht per Hand zeichnen. Es gibt viele Tools:
Kostenlose Online-Tools
- draw.io (diagrams.net): Kostenlos, im Browser, viele Vorlagen
- Lucidchart: Professionell, kostenlose Basis-Version
- dbdiagram.io: Speziell für Datenbanken, sehr einfach
- ERDPlus: Akademisch, einfach zu nutzen
Desktop-Software
- MySQL Workbench: Kostenlos, speziell für MySQL
- pgModeler: Kostenlos, speziell für PostgreSQL
- Microsoft Visio: Kommerziell, sehr mächtig
Häufige Fehler bei ER-Diagrammen
Fehler 1: Falsche Beziehungsrichtung
❌ Falsch: Bestellung zeigt auf Kunde (umgekehrte Pfeilrichtung)
✅ Richtig: Die Symbole beschreiben die Kardinalität, nicht die Richtung
Fehler 2: Fehlende Fremdschlüssel
❌ Falsch: Beziehung gezeichnet, aber kein FK-Attribut eingetragen
✅ Richtig: Bei jeder Beziehung den Fremdschlüssel als Attribut hinzufügen
Fehler 3: Vergessene Zwischentabelle
❌ Falsch: n:m direkt ohne Zwischentabelle modelliert
✅ Richtig: Immer eine Zwischentabelle für n:m erstellen
Fehler 4: Unklare Namen
❌ Falsch: Zwischentabelle heißt "Tabelle1" oder "Daten"
✅ Richtig: Sprechende Namen wie "Bestellposition", "Einschreibung", "Buch_Autor"
Vom ER-Diagramm zur Datenbank
Ein ER-Diagramm ist die Vorlage für deine Datenbank. Im nächsten Schritt übersetzt du es in SQL:
- Jede Entity wird eine Tabelle
- Jedes Attribut wird eine Spalte
- Jeder Primärschlüssel wird mit
PRIMARY KEYdefiniert - Jeder Fremdschlüssel wird mit
FOREIGN KEYdefiniert
Beispiel: Entity Kunde wird zu:
CREATE TABLE Kunde (
KundenID INT PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100),
Stadt VARCHAR(50)
);Zusammenfassung
ER-Diagramme visualisieren dein Datenbank-Design:
- ER-Diagramme zeigen Entities, Attribute und Beziehungen grafisch
- Entities sind Rechtecke mit Attributen
- Primärschlüssel werden mit PK markiert
- Fremdschlüssel werden mit FK markiert
- Beziehungen sind Linien mit speziellen Symbolen:
- • │─ = genau einer (Pflicht)
- • ○─ = null oder einer (optional)
- • │╫ = ein oder viele
- • ○╫ = null oder viele
- n:m Beziehungen brauchen Zwischentabellen
- Tools wie draw.io oder dbdiagram.io helfen beim Erstellen
Im nächsten Artikel lernst du, wie du dein ER-Diagramm in konkrete SQL-Tabellen übersetzt.