Entity-Relationship-Diagramme
Ein Entity-Relationship-Diagramm (kurz ER-Diagramm) zeichnet auf, was du in den letzten beiden Lektionen herausgearbeitet hast. Der Vorteil gegenüber dem Text: Man sieht Lücken und Widersprüche sofort.
Die Bausteine
| Form | Bedeutung |
|---|---|
| Rechteck | Entitätstyp |
| Raute | Beziehungstyp |
| Ellipse | Attribut |
| unterstrichenes Attribut | Schlüsselattribut |
| Beschriftung an der Kante | Kardinalität |
Diese Darstellung geht auf Peter Chen zurück (1976) und heißt deshalb Chen-Notation.
Ein kleines Beispiel:
graph LR
NAME((name)) --- BAND
JAHR((gruendungsjahr)) --- BAND
LAND((herkunftsland)) --- BAND
BAND[Band] ---|n| GEHOERT{gehoert zu} ---|m| GENRE[Genre]
GENRE --- GNAME((name))
Das ER-Diagramm der Klangwiese
Der Übersicht halber sind die Attribute hier weggelassen – bei größeren Diagrammen ist das üblich.
graph TD
PERSON[Person] ---|n| SPIELT{spielt in} ---|m| BAND[Band]
BAND ---|n| GEHOERT{gehoert zu} ---|m| GENRE[Genre]
BAND ---|1| TRITTAUF{tritt auf} ---|n| AUFTRITT[Auftritt]
BUEHNE[Buehne] ---|1| FINDET{findet statt auf} ---|n| AUFTRITT
BESUCHERIN[Besucherin] ---|1| KAUFT{kauft} ---|n| TICKET[Ticket]
BESUCHERIN ---|n| BEWERTET{bewertet} ---|m| AUFTRITT
Am Beziehungstyp spielt in hängt das Attribut instrument. Ein Beziehungsattribut wird an die Raute gehängt, nicht an eines der Rechtecke – genau darin liegt seine Aussage.
graph LR
PERSON[Person] ---|n| SPIELT{spielt in} ---|m| BAND[Band]
SPIELT --- INSTR((instrument))
SPIELT --- SEIT((seit))
Ein Diagramm lesen
Beantworte allein anhand des Diagramms oben – ohne in die Datenbank zu sehen:
a) Kann eine Band mehrere Auftritte haben?
b) Kann ein Auftritt auf zwei Bühnen gleichzeitig stattfinden?
c) Kann eine Person in zwei Bands spielen?
d) Kann eine Besucherin denselben Auftritt zweimal bewerten?
e) Woran erkennst du in einem ER-Diagramm, dass eine Zuordnungstabelle nötig sein wird?
Ein Diagramm zeichnen
Zeichne das ER-Diagramm für den Fahrradverleih aus den letzten beiden Lektionen. Nimm Papier oder ein Zeichenprogramm.
Achte darauf:
- alle vier Entitätstypen als Rechtecke
- die Beziehungen als Rauten mit sprechenden Namen
- alle Kardinalitäten an den Kanten
- die Attribute als Ellipsen, Schlüsselattribute unterstrichen
Tipp 1: Wie benenne ich eine Beziehung?
Nimm das Verb aus dem Ausgangstext und formuliere so, dass sich der Satz von links nach rechts lesen lässt: Kundin — leiht — Fahrrad.
Tipp 2: Wohin mit der Ausleihe?
Die Ausleihe hat eigene Attribute (Start, Ende, Preis) und hängt an zwei anderen Typen. Behandle sie als eigenen Entitätstyp mit zwei 1:n-Beziehungen – so wie den Auftritt im Festivalmodell.
Wozu das Ganze?
Man könnte die Tabellen doch gleich hinschreiben. Warum der Umweg über ein Diagramm?
- Ein Diagramm ist kürzer als der Text und vollständiger als eine Tabellenliste: Kardinalitäten stehen im Schema später nirgends mehr explizit.
- Es ist verhandelbar. Ein ER-Diagramm kann man dem Festivalteam vorlegen, ein
CREATE TABLEnicht. - Fehler fallen früher auf. Eine vergessene Kardinalität sieht man im Bild; in einer fertigen Datenbank merkt man sie erst, wenn Daten nicht hineinpassen.
Genau denselben Zweck erfüllen in der objektorientierten Modellierung die Klassendiagramme.