3b. Datenmodellierung - Vertiefung
Datenmodellierung - Vertiefung
Abschnitt betitelt „Datenmodellierung - Vertiefung“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.
Arten von Attributen
Abschnitt betitelt „Arten von Attributen“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.
PersonundTelefonnummer. - Abgeleitet: Das Attribut wird meist weggelassen, weil es berechnet werden kann.
- Zusammengesetzt: An das Oval des Attributs werden weitere Ovale für die Teile gehängt.
- Mehrwertig: Das Oval bekommt einen doppelten Rand.
- Abgeleitet: Das Oval wird gestrichelt gezeichnet.
Warum mehrwertige Attribute in Tabellen nicht erlaubt sind, erklärt Kapitel 12 (Normalisierung) mit der ersten Normalform.
Schwache Entitäten
Abschnitt betitelt „Schwache Entitäten“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.
Schwache Entitäten werden als doppelte Rechtecke gezeichnet. In der Fachliteratur finden sich teilweise andere Kennzeichnungen (z. B. dicker Rahmen, doppelte Linien, doppelte Raute für die Beziehung zur übergeordneten Entität).
Als Tabellen (Schreibweise wie in Kapitel 4):
- Schule(Schulkennzahl (PK), Name)
- Schulklasse(Schulkennzahl (PK, FK → Schule.Schulkennzahl), Klassenname (PK))
Rekursive Beziehungen
Abschnitt betitelt „Rekursive Beziehungen“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.
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.
Ternäre Beziehungen
Abschnitt betitelt „Ternäre Beziehungen“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:
-
Kann ein Pilot mit einem Flugzeug auf mehreren Fluglinien eingesetzt werden? Ja. Bei der Fluglinie steht also viele.
-
Kann ein Pilot auf einer Fluglinie mit mehreren Flugzeugen eingesetzt werden? Ja. Beim Flugzeug steht also viele.
-
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 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.
Die Raute wird einfach mit drei Entity-Typen verbunden.
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.
Generalisierung im Detail
Abschnitt betitelt „Generalisierung im Detail“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.
-
Ü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.
Zusammengefasst:
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.
Das Modell hängt von der Fragestellung ab
Abschnitt betitelt „Das Modell hängt von der Fragestellung ab“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.
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.
Grenzen des ER-Modells: Konsistenzbedingungen
Abschnitt betitelt „Grenzen des ER-Modells: Konsistenzbedingungen“Ein ER-Diagramm zeigt, welche Dinge es gibt und wie sie zusammenhängen. Viele fachliche Regeln lassen sich damit aber nicht ausdrücken.
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.
Weitere Notationen im Überblick
Abschnitt betitelt „Weitere Notationen im Überblick“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.
| Notation | Angabe bei Kunde | Angabe bei Bestellung |
|---|---|---|
| Chen | 1 | N |
| Krähenfuß | zwei Striche (genau 1) | Kreis und Krähenfuß (0 oder mehr) |
| UML | 1 | 0..* |
| 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.