Zum Inhalt springen

3b. Datenmodellierung - Vertiefung

Zu Zen-Modus wechseln

Die Grundlagen reichen für viele Datenmodelle aus. Dieses Kapitel ergänzt die Konstrukte, die in größeren Modellen dazukommen, und zeigt, wo das ER-Modell an seine Grenzen stößt.

Nicht jedes Attribut ist ein einzelner, einfacher Wert. Man unterscheidet:

  • Einfache (atomare) Attribute haben genau einen, nicht weiter zerlegbaren Wert, z. B. Geburtsdatum.
  • Zusammengesetzte Attribute bestehen aus mehreren Teilen, die inhaltlich zusammengehören. Beispiel: Eine Adresse setzt sich aus Straße, Hausnummer, Postleitzahl und Ort zusammen.
  • Mehrwertige Attribute können für eine Entität mehrere Werte gleichzeitig haben. Beispiel: Eine Person hat mehrere Telefonnummern; ein Student ist in mehreren Studiengängen eingeschrieben.
  • Abgeleitete Attribute werden nicht gespeichert, sondern aus anderen Attributen berechnet. Beispiel: Das Alter ergibt sich aus dem Geburtsdatum.

Zusammengesetzt und mehrwertig werden leicht verwechselt. Die Adresse ist ein Wert aus mehreren Teilen; die Telefonnummern sind mehrere Werte derselben Art.

Die Krähenfuß-Notation hat für diese Fälle keine eigenen Symbole. Man modelliert gleich so, wie es später in Tabellen aussieht:

  • Zusammengesetzt: Die Teile werden als einzelne Zeilen in das Rechteck geschrieben (Straße, Hausnummer, PLZ, Ort).
  • Mehrwertig: Das Attribut wird zu einer eigenen Entität mit einer 1:n-Beziehung, z. B. Person und Telefonnummer.
  • Abgeleitet: Das Attribut wird meist weggelassen, weil es berechnet werden kann.

Warum mehrwertige Attribute in Tabellen nicht erlaubt sind, erklärt Kapitel 12 (Normalisierung) mit der ersten Normalform.

In vielen Fällen sind Entitäten selbstständig: Sie können innerhalb ihrer Entitätsmenge eindeutig identifiziert werden.

Es gibt jedoch auch Entitäten, die nur zusammen mit dem Schlüssel eines übergeordneten (dominanten) Entitätstyps eindeutig sind. Diese nennt man schwache oder abhängige Entitäten.

Beispiele:

  • Bankverbindung eines Kunden mit Einzugsermächtigung: Wird der Kunde gelöscht, muss auch die Einzugsermächtigung gelöscht werden (Abhängigkeit).
  • Klasse einer Schule: Eine Klasse existiert nur im Zusammenhang mit genau dieser Schule; Teile ihrer Beschreibung hängen von Attributen der Schule ab.

Das Beispiel der Schulklasse genauer: Der Klassenname 3AHITS ist innerhalb der HTL Villach eindeutig. Österreichweit ist er das nicht, denn auch eine andere HTL kann eine 3AHITS führen. Eindeutig wird die Klasse erst zusammen mit dem Schlüssel der Schule, der Schulkennzahl. Die Schulklasse ist also eine schwache Entität, die von Schule abhängt.

Die Krähenfuß-Notation hat kein einheitliches Symbol für schwache Entitäten. Man erkennt sie am Schlüssel: Der Primärschlüssel der schwachen Entität enthält den Schlüssel der übergeordneten Entität. Bei der Schulklasse besteht er aus Schulkennzahl und Klassenname. Manche Zeichenwerkzeuge unterscheiden solche identifizierenden Beziehungen zusätzlich durch die Linienart.

Als Tabellen (Schreibweise wie in Kapitel 4):

  • Schule(Schulkennzahl (PK), Name)
  • Schulklasse(Schulkennzahl (PK, FK → Schule.Schulkennzahl), Klassenname (PK))

Eine Beziehung muss nicht zwei verschiedene Entity-Typen verbinden. Steht ein Entity-Typ mit sich selbst in Beziehung, spricht man von einer rekursiven (oder unären) Beziehung.

Beispiel: Mitarbeiter haben Vorgesetzte, und Vorgesetzte sind selbst Mitarbeiter.

Weil auf beiden Seiten derselbe Entity-Typ steht, braucht jedes Ende der Beziehung eine Rolle, sonst ist das Diagramm nicht lesbar: Hier sind das Vorgesetzte/r und Untergebene/r.

Rekursive Beziehung 'ist vorgesetzt' am Entity-Typ Mitarbeiter/in in der Krähenfuß-Notation.
Abb. 6.31: Eine rekursive Beziehung in der Krähenfuß-Notation. Die Linie beginnt und endet am selben Entity-Typ, die Rollen stehen an den Enden.

So wird die Beziehung gelesen:

  • Jede/r Mitarbeiter/in hat höchstens eine/n Vorgesetzte/n.
  • Ein/e Vorgesetzte/r hat keine, eine oder mehrere Untergebene.

Die Beziehung ist auf beiden Seiten optional. Das muss so sein: Die Person an der Spitze hat keine Vorgesetzten, und wer niemanden führt, hat keine Untergebenen.

Als Tabelle wird daraus ein Fremdschlüssel, der auf die eigene Tabelle zeigt:

  • Mitarbeiter(MNr (PK), Name, Vorgesetzter_MNr (FK → Mitarbeiter.MNr))

Auch eine rekursive Beziehung kann m:n sein. Beispiel: Eine Lehrveranstaltung setzt mehrere andere voraus und ist selbst Voraussetzung für mehrere. Dann entsteht wie bei jeder m:n-Beziehung eine Zwischentabelle, deren beide Fremdschlüssel auf dieselbe Tabelle zeigen.

Der Grad einer Beziehung ist die Anzahl der beteiligten Entity-Typen. Bisher war er immer zwei (binär) oder eins (rekursiv). Sind drei Entity-Typen beteiligt, heißt die Beziehung ternär.

Beispiel: Eine Fluggesellschaft hält fest, welcher Pilot welches Flugzeug auf welcher Fluglinie geflogen hat.

Mit drei binären Beziehungen (Pilot-Flugzeug, Flugzeug-Fluglinie, Pilot-Fluglinie) geht diese Information verloren. Man wüsste, dass Pilotin Huber die Maschine OE-LBA geflogen ist und dass sie auf der Linie Wien-Graz eingesetzt war, aber nicht, ob sie auf dieser Linie in dieser Maschine saß.

Kardinalitäten einer ternären Beziehung bestimmen

Abschnitt betitelt „Kardinalitäten einer ternären Beziehung bestimmen“

Das Frageschema aus den Grundlagen funktioniert auch hier. Man hält jeweils zwei Entitäten fest und fragt nach der dritten:

  1. Kann ein Pilot mit einem Flugzeug auf mehreren Fluglinien eingesetzt werden? Ja. Bei der Fluglinie steht also viele.

  2. Kann ein Pilot auf einer Fluglinie mit mehreren Flugzeugen eingesetzt werden? Ja. Beim Flugzeug steht also viele.

  3. Kann ein Flugzeug auf einer Fluglinie von mehreren Piloten geflogen werden? In diesem Beispiel nein. Beim Piloten steht also eins.

Eine Linie hat nur zwei Enden. Die ternäre Beziehung wird deshalb zu einer assoziativen Entität, hier Einsatz, mit je einer Beziehung zu den drei Entity-Typen.

Die assoziative Entität Einsatz mit Beziehungen zu Pilot/in, Flugzeug und Fluglinie in der Krähenfuß-Notation.
Abb. 6.33: Die ternäre Beziehung als assoziative Entität 'Einsatz'. Jeder Einsatz gehört zu genau einem Piloten, einem Flugzeug und einer Fluglinie. Piloten und Flugzeuge haben mindestens einen Einsatz, eine Fluglinie kann auch unbedient sein.

Die Regel aus Frage 3 (ein Flugzeug hat auf einer Fluglinie nur einen Piloten) ist in diesem Diagramm nicht zu sehen. Sie steckt später im Schlüssel der Tabelle.

Als Tabelle:

  • Einsatz(Flugzeug_Id (PK, FK), Fluglinie_Id (PK, FK), Pilot_Id (FK))

Der Primärschlüssel besteht nur aus Flugzeug und Fluglinie. Damit kann es zu jeder Kombination nur eine Zeile und daher nur einen Piloten geben, genau wie Frage 3 es verlangt.

Die Grundlagen zeigen die Generalisierung als “Ist-ein”-Beziehung. Zwei Fragen bleiben dabei offen: Gibt es neben den gezeichneten Unterklassen noch andere? Und darf eine Entität zu mehreren Unterklassen gleichzeitig gehören?

Es gibt ebenfalls Varianten, welche die Teilmengen der Spezialisierungen kennzeichnen (disjunkt vs. überlappend) und ob die Generalisierung vollständig oder partiell ist. Diese werden jedoch nicht immer verwendet.

  • Partiell: Nicht jedes Exemplar der Oberklasse muss einer Unterklasse angehören. Die Abbildung der Generalisierung in den Grundlagen ist ein Beispiel für eine partielle Generalisierung. Neben Hunden und Katzen könnte es also noch andere Säugetiere geben (z. B. Kaninchen, Meerschweinchen, Hamster, …).

  • Total: Jedes Exemplar der Oberklasse muss mindestens einer Unterklasse angehören. Hier wird ein zusätzlicher Querstrich am Dreieck oder den Halbkreis angebracht. In dem Beispiel unten bedeutet das, dass es keine anderen Säugetiere außer Hunden und Katzen in diesem Modell gibt. Das ist alles: Hunde und Katzen sind die einzigen Säugetiere, die es gibt! Punkt.

Eine totale Generalisierung in der Krähenfuß-Notation.
Abb. 6.35: Eine totale Generalisierung in der Krähenfuß-Notation: Hunde und Katzen sind beide Säugetiere. Da dies eine totale Generalisierung ist, muss jedes Exemplar der Oberklasse (Säugetier) mindestens einer Unterklasse (Hund oder Katze) angehören. Es gibt also keine anderen Säugetiere außer Hunde und Katzen in diesem Modell.
  • Überlappend: Die Unterklassen können gleichzeitig existieren. Ein Exemplar der Oberklasse kann mehreren Unterklassen angehören. In dem Beispiel unten bedeutet das, dass ein Säugetier sowohl ein Hund als auch eine Katze sein kann (z. B. ein “Katzenhund”… wenn so etwas gäbe würde).

  • Disjunkt: Die Unterklassen sind ausschließlich. Ein Exemplar der Oberklasse kann nur einer Unterklasse angehören. In dem Beispiel unten bedeutet das, dass ein Säugetier entweder ein Hund oder eine Katze ist, aber nicht beides gleichzeitig. Dafür wird in der Regel ein Kreuz in das Dreieck oder den Halbkreis gezeichnet.

Eine disjunkte Generalisierung in der Krähenfuß-Notation.
Abb. 6.36: Eine disjunkte Generalisierung in der Krähenfuß-Notation: Hunde und Katzen sind beide Säugetiere. Da dies eine disjunkte Generalisierung ist, kann jedes Exemplar der Oberklasse (Säugetier) nur einer Unterklasse (Hund oder Katze) angehören. Es gibt also keine Säugetiere, die gleichzeitig Hunde und Katzen sind könnten.

Zusammengefasst:

Alle Typen der Generalisierung in der Krähenfuß-Notation.
Abb. 6.37: Alle Typen der Generalisierung in der Krähenfuß-Notation: 1) Partiell und Überlappend, 2) Total und Überlappend, 3) Partiell und Disjunkt, 4) Total und Disjunkt.

Ein realistischeres Beispiel für eine überlappende Spezialisierung: Ein Geschäftspartner ist Kunde oder Lieferant. Ein Unternehmen kann aber durchaus beides sein, also bei uns einkaufen und uns beliefern. Ist das ausgeschlossen, ist die Spezialisierung disjunkt.

Wie eine Generalisierung in Tabellen überführt wird, zeigt Kapitel 4 mit drei Varianten.

Dieselben zwei Entity-Typen können je nach Fragestellung unterschiedliche Kardinalitäten haben. Entscheidend ist, was die Datenbank später beantworten soll.

Beispiel: Schüler/innen und Klassen.

  • Frage A: In welche Klasse geht eine Schülerin heuer? Dann geht jede Person in genau eine Klasse: eine 1:n-Beziehung.
  • Frage B: In welche Klassen ging sie im Lauf ihrer Schulzeit? Dann gehören zu einer Person mehrere Klassen: eine m:n-Beziehung.
Dieselbe Beziehung zwischen Schüler/in und Klasse einmal als 1:n und einmal als m:n in der Krähenfuß-Notation.
Abb. 6.38: Zwei Fragestellungen, zwei Modelle. Oben der aktuelle Zustand, unten der Verlauf über die Zeit.

Keines der beiden Modelle ist falsch. Sie beantworten verschiedene Fragen. Modell B braucht außerdem ein Attribut an der Beziehung, nämlich das Schuljahr, sonst weiß man nicht, wann die Person in welcher Klasse war.

Stellen Sie deshalb bei jeder Beziehung die Frage: Soll der aktuelle Zustand gespeichert werden oder der Verlauf? Ein Modell für den aktuellen Zustand vergisst bei jeder Änderung den alten Wert.

Ein ER-Diagramm zeigt, welche Dinge es gibt und wie sie zusammenhängen. Viele fachliche Regeln lassen sich damit aber nicht ausdrücken.

Mitarbeiter/in und Projekt mit den Beziehungen 'leitet' und Mitarbeit in der Krähenfuß-Notation.
Abb. 6.40: Mitarbeiter leiten Projekte und arbeiten mit einem Prozentanteil an Projekten mit.

Zu diesem Modell gehören zum Beispiel folgende Regeln, die im Diagramm nirgends stehen:

  • Das Ende eines Projekts darf nicht vor seinem Start liegen.
  • Wer ein Projekt leitet, muss auch daran mitarbeiten.
  • Die Arbeitszeit einer Person über alle Projekte darf zusammen 100 % nicht übersteigen.
  • Niemand im Projekt darf mehr verdienen als die Projektleitung.

Solche Regeln heißen Konsistenzbedingungen oder Geschäftsregeln. Sie gehören zum Datenmodell und werden als Text neben dem Diagramm festgehalten. Umgesetzt werden sie später auf verschiedenen Ebenen: einfache Regeln wie die erste als Bedingung direkt in der Datenbank (siehe Kapitel 11, Integrität), aufwendigere durch Programme in der Datenbank oder in der Anwendung.

Neben Chen und Krähenfuß gibt es weitere Notationen, etwa UML-Klassendiagramme, die Min-Max-Notation, IDEF1X oder die Bachman-Notation. Zwei davon sollten Sie zumindest lesen können.

Die folgende Tabelle zeigt für alle vier dieselbe Beziehung: Ein Kunde hat keine, eine oder mehrere Bestellungen; jede Bestellung gehört zu genau einem Kunden.

NotationAngabe bei KundeAngabe bei Bestellung
Chen1N
Krähenfußzwei Striche (genau 1)Kreis und Krähenfuß (0 oder mehr)
UML10..*
Min-Max(0,n)(1,1)

Chen, Krähenfuß und UML schreiben die Angabe auf die gegenüberliegende Seite: Bei der Bestellung steht, wie viele Bestellungen ein Kunde hat. UML verwendet dafür Zahlenbereiche wie 0..1, 1 und 0..*.

Lernergebnisse: Was Sie nach diesem Kapitel können sollten

Abschnitt betitelt „Lernergebnisse: Was Sie nach diesem Kapitel können sollten“

Nach Abschluss dieses Kapitels sollten Schülerinnen und Schüler in der Lage sein:

  • Nennen: die Arten von Attributen (einfach, zusammengesetzt, mehrwertig, abgeleitet) nennen.
  • Beschreiben: schwache Entitäten sowie totale, partielle, disjunkte und überlappende Spezialisierungen beschreiben.
  • Anwenden: rekursive und ternäre Beziehungen modellieren und ihre Kardinalitäten bestimmen.
  • Analysieren: erkennen, ob eine Fragestellung den aktuellen Zustand oder den Verlauf verlangt, und das Modell danach ausrichten.
  • Beurteilen: Konsistenzbedingungen benennen, die ein ER-Diagramm nicht ausdrückt, und sie als Text zum Modell festhalten.
  • Vergleichen: dieselbe Beziehung in Chen-, Krähenfuß-, UML- und Min-Max-Schreibweise lesen.