EMZETT.
Login

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 UNIQUE oder 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