Coding Garden
Anmelden

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.

Note
Es gibt verschiedene Notationen für ER-Diagramme (Chen, Crow's Foot, UML). Wir nutzen die Crow's Foot Notation, da sie am weitesten verbreitet und intuitiv ist.

Die Grundelemente

1. Entity (Rechteck)

Entities werden als Rechtecke dargestellt. Der Name der Entity steht oben.

Text
┌─────────────┐
│   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:

Text
┌─────────────┐
│   Kunde     │
├─────────────┤
│ KundenID PK │  ← Primärschlüssel
│ Name        │
│ Email       │
└─────────────┘

3. Fremdschlüssel (markiert)

Fremdschlüssel werden mit FK markiert:

Text
┌─────────────────┐
│   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.

Tip
Lies die Symbole immer vom anderen Ende: Das Symbol bei Bestellung sagt, wie viele Bestellungen ein Kunde haben kann.

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)
Important
Der Kreis bedeutet "kann null sein". Ohne Kreis ist die Beziehung 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
Tip
Für Anfänger empfehle ich draw.io oder dbdiagram.io. Beide sind kostenlos, einfach und browserbasiert.

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 KEY definiert
  • Jeder Fremdschlüssel wird mit FOREIGN KEY definiert

Beispiel: Entity Kunde wird zu:

SQL
CREATE TABLE Kunde (
    KundenID INT PRIMARY KEY,
    Name VARCHAR(100),
    Email VARCHAR(100),
    Stadt VARCHAR(50)
);
Note
Im nächsten Artikel lernst du genau, wie du vom ER-Diagramm zu den SQL-Tabellen kommst.

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.