Vom ER-Diagramm zur Tabelle
Du hast gelernt, wie du Entities erkennst, Attribute definierst, Beziehungen modellierst und alles in einem ER-Diagramm visualisierst. Jetzt kommt der letzte Schritt: Die Umsetzung in konkrete Tabellen. In diesem Artikel lernst du, wie du dein ER-Diagramm systematisch in eine Tabellenstruktur übersetzt.
Die Übersetzungsregeln
Die Übersetzung vom ER-Diagramm zu Tabellen folgt klaren Regeln:
- Jede Entity wird eine Tabelle
- Jedes Attribut wird eine Spalte
- Der Primärschlüssel identifiziert Datensätze eindeutig
- 1:n Beziehungen werden über Fremdschlüssel abgebildet
- n:m Beziehungen brauchen eine Zwischentabelle
Regel 1: Entity → Tabelle
Jede Entity aus dem ER-Diagramm wird zu einer eigenen Tabelle.
ER-Diagramm: Entity Kunde
┌─────────────┐
│ Kunde │
├─────────────┤
│ KundenID PK │
│ Name │
│ Email │
│ Stadt │
└─────────────┘Tabelle: kunden
kunden, buecher, bestellungen. Sei konsistent in deinem Projekt.Regel 2: Attribute → Spalten
Jedes Attribut der Entity wird zu einer Spalte in der Tabelle. Du musst für jede Spalte einen Datentyp festlegen.
Häufige Datentypen
Beispiel: Kunden-Tabelle mit Datentypen
Regel 3: Primärschlüssel definieren
Der Primärschlüssel aus dem ER-Diagramm wird in der Tabelle speziell markiert.
Eigenschaften eines Primärschlüssels:
- UNIQUE - Jeder Wert kommt nur einmal vor
- NOT NULL - Darf nie leer sein
- UNVERÄNDERLICH - Sollte sich nie ändern
Zwei Arten von Primärschlüsseln
1. Natürlicher Schlüssel
Ein bestehendes Attribut, das natürlich eindeutig ist:
- ISBN bei Büchern
- Email bei Benutzern (problematisch, da änderbar)
- Sozialversicherungsnummer
2. Künstlicher Schlüssel (Surrogate Key)
Eine künstlich erzeugte ID:
- KundenID, BestellungID, BuchID
- Meist eine fortlaufende Nummer
- Wird automatisch vergeben (AUTO_INCREMENT)
Regel 4: 1:n Beziehungen umsetzen
Bei einer 1:n Beziehung wird auf der "n"-Seite ein Fremdschlüssel hinzugefügt.
Beispiel: Kunde → Bestellung (1:n)
Ein Kunde kann viele Bestellungen haben.
┌─────────────┐ ┌─────────────────┐
│ Kunde │ │ Bestellung │
├─────────────┤ ├─────────────────┤
│ KundenID PK │───────○╫──│ BestellungID PK │
│ Name │ │ Datum │
│ Email │ │ KundenID FK │ ← Fremdschlüssel
└─────────────┘ └─────────────────┘Umsetzung in Tabellen
Tabelle: kunden
Tabelle: bestellungen
Die KundenID in der Bestellungen-Tabelle verweist auf die Kunden-Tabelle. Das ist der Fremdschlüssel.
Regel 5: n:m Beziehungen umsetzen
n:m Beziehungen können nicht direkt in Tabellen abgebildet werden. Du brauchst eine Zwischentabelle.
Beispiel: Student ↔ Kurs (n:m)
Ein Student belegt viele Kurse. Ein Kurs wird von vielen Studenten besucht.
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Student │ │ Einschreibung│ │ Kurs │
├─────────────┤ ├──────────────┤ ├─────────────┤
│ StudentID PK│──○╫──│ StudentID FK │ │ KursID PK │
│ Name │ │ KursID FK │──○╫──│ Name │
│ Matrikel │ │ Note │ │ Credits │
└─────────────┘ └──────────────┘ └─────────────┘Umsetzung in Tabellen
Tabelle: studenten
Tabelle: kurse
Tabelle: einschreibungen (Zwischentabelle)
Die Zwischentabelle enthält:
- StudentID (Fremdschlüssel → studenten)
- KursID (Fremdschlüssel → kurse)
- Optional: Zusätzliche Attribute wie Note
Regel 6: 1:1 Beziehungen umsetzen
Bei 1:1 Beziehungen gibt es zwei Möglichkeiten:
Option 1: Alles in einer Tabelle
Wenn die Daten eng zusammengehören, kannst du sie in eine Tabelle packen.
Beispiel: Person mit Reisepass → Alle Felder in die Person-Tabelle.
Option 2: Separate Tabellen mit Fremdschlüssel
Wenn du die Daten trennen möchtest (z.B. aus Sicherheitsgründen):
Der Fremdschlüssel kann auf einer der beiden Seiten sein. Meist auf der Seite, die abhängig ist (Reisepass hängt von Person ab).
Komplettes Beispiel: Bibliothek
Übersetzen wir unser komplettes Bibliotheks-ER-Diagramm in Tabellen:
Tabelle: autoren
Tabelle: genres
Tabelle: buecher
Tabelle: mitglieder
Tabelle: ausleihen (Zwischentabelle)
Wichtige Constraints (Einschränkungen)
Beim Erstellen von Tabellen definierst du Constraints – Regeln, die die Datenbank durchsetzt:
Checkliste: ER-Diagramm → Tabellen
Gehe diese Schritte durch, um dein ER-Diagramm umzusetzen:
- ☑ Für jede Entity eine Tabelle erstellen
- ☑ Für jedes Attribut eine Spalte mit passendem Datentyp
- ☑ Primärschlüssel definieren (meist INT AUTO_INCREMENT)
- ☑ NOT NULL für Pflichtfelder setzen
- ☑ UNIQUE für eindeutige Felder (Email, ISBN)
- ☑ Für 1:n Beziehungen: Fremdschlüssel auf "n"-Seite
- ☑ Für n:m Beziehungen: Zwischentabelle erstellen
- ☑ FOREIGN KEY Constraints definieren
- ☑ DEFAULT-Werte wo sinnvoll
Übung: E-Commerce umsetzen
Gegeben ist dieses vereinfachte ER-Diagramm für einen Online-Shop:
- Entity Kunde: KundenID, Name, Email
- Entity Produkt: ProduktID, Name, Preis, Lagerbestand
- Entity Bestellung: BestellungID, Datum, Status
- Beziehung: Kunde → Bestellung (1:n)
- Beziehung: Bestellung ↔ Produkt (n:m, braucht Zwischentabelle)
Aufgabe: Erstelle die Tabellenstruktur mit Spalten und Datentypen.
Lösung
Tabelle: kunden
- KundenID - INT, PRIMARY KEY, AUTO_INCREMENT
- Name - VARCHAR(100), NOT NULL
- Email - VARCHAR(150), UNIQUE, NOT NULL
Tabelle: produkte
- ProduktID - INT, PRIMARY KEY, AUTO_INCREMENT
- Name - VARCHAR(200), NOT NULL
- Preis - DECIMAL(10,2), NOT NULL
- Lagerbestand - INT, DEFAULT 0
Tabelle: bestellungen
- BestellungID - INT, PRIMARY KEY, AUTO_INCREMENT
- Datum - DATE, NOT NULL
- Status - VARCHAR(20), DEFAULT 'offen'
- KundenID - INT, FOREIGN KEY → kunden
Tabelle: bestellpositionen (Zwischentabelle)
- PositionID - INT, PRIMARY KEY, AUTO_INCREMENT
- BestellungID - INT, FOREIGN KEY → bestellungen
- ProduktID - INT, FOREIGN KEY → produkte
- Menge - INT, NOT NULL, DEFAULT 1
- Einzelpreis - DECIMAL(10,2), NOT NULL
Zusammenfassung
Die Umsetzung vom ER-Diagramm zu Tabellen folgt klaren Regeln:
- Jede Entity wird eine Tabelle
- Jedes Attribut wird eine Spalte mit Datentyp
- Primärschlüssel identifiziert Datensätze eindeutig (meist INT AUTO_INCREMENT)
- 1:n Beziehungen: Fremdschlüssel auf der "n"-Seite
- n:m Beziehungen: Zwischentabelle mit beiden Fremdschlüsseln
- 1:1 Beziehungen: Entweder eine Tabelle oder Fremdschlüssel auf einer Seite
- Nutze Constraints: NOT NULL, UNIQUE, DEFAULT, FOREIGN KEY
Damit ist die Planungsphase abgeschlossen! Im nächsten Artikel lernst du, wie du diese Tabellen mit CREATE TABLE in SQL tatsächlich erstellst.