ER-Modell: Datenbanken entwerfen
Kurz: Ein Entity-Relationship-Modell zeichnet auf, welche Dinge (Entitäten) es gibt, welche Eigenschaften sie haben und wie sie zusammenhängen, bevor man Tabellen anlegt.
Genauer: Bevor man eine Datenbank baut, sollte man verstehen, was gespeichert wird. Das ER-Modell (nach Peter Chen, 1976) ist ein Plan dafür. Aus ihm leitet man später die Tabellen ab. In der Ausbildung ist es ein fester Prüfungsstoff.
Im Detail
Bausteine
- Entität: ein Objekt der Wirklichkeit, zum Beispiel Kunde, Bestellung, Artikel (wird später eine Tabelle).
- Attribut: Eigenschaft, etwa Name, Preis. Das Schlüsselattribut identifiziert eine Entität eindeutig (Kundennummer).
- Beziehung (Relationship): Verbindung zwischen Entitäten, zum Beispiel „Kunde gibt auf Bestellung“.
- Kardinalität: wie viele Entitäten beteiligt sind.
Kardinalitäten
- 1 : 1: eine Person hat genau einen Ausweis.
- 1 : n: ein Kunde hat viele Bestellungen, jede Bestellung gehört zu einem Kunden.
- n : m: Studierende belegen mehrere Kurse, ein Kurs hat mehrere Studierende. Die Notation kann (Min, Max)-Angaben, Krähenfuß (Crow’s Foot) oder UML-Klassendiagramme nutzen.
Vom ER-Modell zu Tabellen
- Jede Entität wird eine Tabelle, jedes Attribut eine Spalte, das Schlüsselattribut der Primärschlüssel.
- 1 : n: Der Primärschlüssel der „1“-Seite wird Fremdschlüssel in der „n“-Tabelle (
bestellung.kunde_id). - n : m: braucht eine Zwischentabelle mit beiden Fremdschlüsseln (
belegung(student_id, kurs_id)), oft mit eigenen Attributen wie Note. - 1 : 1: Fremdschlüssel mit
UNIQUEoder gemeinsame Tabelle.
Gutes Design
Daten nicht doppelt halten, sondern verknüpfen. Ändert sich eine Adresse, soll das an einer Stelle passieren. Dafür dienen die Normalformen (Normalisierung): erste Normalform (atomare Werte), zweite (keine Teilabhängigkeiten vom Schlüssel), dritte (keine Abhängigkeiten zwischen Nicht-Schlüsselattributen). Für Leistung kann man bewusst denormalisieren. Werkzeuge: draw.io, dbdiagram.io, MySQL Workbench, pgAdmin.
Siehe auch: Datenbank, SQL, Modellierung: UML, EPK, BPMN, SQL-Index