Definition: Relationales Datenbankmodell (Relationenmodell)
Das relationale Datenbankmodell (auch Relationenmodell) basiert auf dem mathematischen Begriff der Relation. Eine Relation R ist eine Teilmenge des kartesischen Produkts einer Liste von Wertbereichen W1, W2, …, Wn:
R \subseteq W_1 \times W_2 \times ... \times W_n
Elemente einer Relation R sind die n-Tupel der Art (v1, v2, …, vn) mit v_i \in W_i. Die Größe bezeichnet man als Grad der Relation R.
Im Beispiel einer Oberstufenverwaltung kommen Kurse als Objekte vor. Kurse werden durch die drei Attribute KursNr, Thema und Jahrgangsstufe beschrieben. Die Kursnummer ist eine natürliche Zahl und das Thema eine Zeichenkette (String). Die Wertemengen sind demnach:
W1 = N
W2 = {x | x ist String}
W3 = {11/I, 11/II, 12/I, 12/II, 13/I, 13/II}
Damit können (exemplarisch) vier Kurse K1 bis K4 in Form von Tripeln (3-Tupel) angegeben werden. Die Anzahl der Attribute eines Tupels kann auch als Grad der Relation bezeichnet werden.
K1 = (13, Analysis 3, 13/II)
K2 = (2, Short Stories, 12/I)
K3 = (38, Datenbanken, 12/II)
K4 = (19, Antihelden, 11/II)
Sie bilden die vierelementige Relation Kurs:
KURS = {(13, Analysis 3, 13/II), (2, Short Stories, 12/I), (38, Datenbanken, 12/II), (19, Antihelden, 11/II)}
Die Mengenschreibweise ist allerdings ziemlich unübersichtlich. Besser geeignet ist die dazu äquivalente Tabellenschreibweise:
Kurs
KursNr | Thema | Jahrgangsstufe |
---|---|---|
13 | Analysis 3 | 13/II |
2 | Short Stories | 12/I |
38 | Datenbanken | 12/II |
19 | Antihelden | 11/II |
In der ersten Zeile der Tabelle werden die jeweiligen Attribute als Spaltenköpfe notiert. Sie gehören somit nicht zur Relation. Vielmehr beschreiben sie das Relationenschema, also den hier beschriebenen Entity-Typ. Jede weitere Zeile der Tabelle beschreibt ein Tupel der Relation, entspricht also einem Entity. Jeder dieser Sätze ist eindeutig, d. h. kein Satz kommt mehrfach vor und jede Spalte hat einen eindeutigen Namen. Die Werte einer Spalte sind von der gleichen Art und haben einen Wertebereich (Domain). Ein Satz innerhalb einer Tabelle wird durch seinen Primärschlüssel eindeutig gekennzeichnet.
Die beschriebenen Zusammenhänge sind in der folgenden Grafik noch einmal an einem anderen Beispiel dargestellt:
Die Attribute eines Entity-Typs aus dem ER-Modell beschreiben also das Relationenschema. Eine Relation wird in einer Tabelle dargestellt. Tabellen werden nach dem Relationenmodell der Einfachheit halber nicht in Tabellenform geschrieben. Hierfür verwendet man eine einfache Notation, die die Spalten der Tabelle in Klammern aufführt. Primärschlüssel werden dabei unterstrichen und Fremdschlüssel durch einen vorangestellten „Aufwärtspfeil“ gekennzeichnet (Alternativ wird der Fremdschlüssel kursiv geschrieben oder gestrichelt unterstrichen).
Allgemein: R(A1, A2, …, An)
Beispiel: Abteilung(AbteilungNr, ↑Abteilungsleiter, Standort, …)
Fassen wir noch einmal zusammen. Eine Tabelle besteht aus Spalten mit eindeutigen Bezeichnern für die Spaltennamen. Die Spalten beschreiben Sätze der entsprechenden Tabelle. So macht es z. B. keinen Sinn, dass die Tabelle Abteilung eine Spalte für die Bezeichnung der Schreibtische hat, da die Bezeichnung des Schreibtischs nicht unmittelbar ein Merkmal einer Abteilung ist. Jede Spalte enthält gleichartige Werte, die einem bestimmten Wertebereich (Domain) entsprechen. Wenn ein Attribut keinen Wert besitzt, erhält es den künstlichen Wert NULL.
Achtung: Leere Felder sind in Tabellen immer kritisch zu betrachten, da sie auf Fehler in der Struktur (vor allem bei Beziehungen) hinweisen können.
Für das Relationenmodell sind die folgenden Einschränkungen wichtig: Entity-Integrität, Domain-Integrität und referentielle Integrität.
Definition: Entity-Integrität
Unter Entity-Integrität versteht man die Vereinbarung, dass ein Primärschlüssel immer eindeutig einen Satz kennzeichnen muss und deshalb niemals leer sein darf, d. h. den Wert NULL annehmen darf.
Definition: Domain-Integrität
Domain-Integrität definiert die Einschränkung von Spalten auf bestimmte Wertebereiche; z. B. darf die Spalte PLZ nur gültige Postleitzahlen enthalten.
Um Beziehungen (Assoziationen) zwischen Tabellen darzustellen, führt das Relationenmodell den Begriff des Fremdschlüssels („Foreign Key“, er kann NULL sein) ein. Hierbei handelt es sich um ein Attribut, welches einen Bezug zu einer anderen Tabelle herstellt (bei einer rekursiven Beziehung ist auch ein Verweis auf die eigene Tabelle möglich.). Um z. B. die Beziehung Mitarbeiter gehört zu Abteilung in Tabellen abzubilden, übernimmt die Tabelle Mitarbeiter den Primärschlüssel (nie NULL) der Abteilung als so genannten Fremdschlüssel. Demnach gilt, dass die Werte eines Fremdschlüssel immer den Werten des dazugehörigen Primärschlüssels entsprechen müssen. So darf in der Tabelle Mitarbeiter die Spalte AbteilungNr nur Werte enthalten, die auch in der Tabelle Abteilung in der Spalte AbteilungNr vorkommen. In der Tabelle Mitarbeiter ist die Spalte AbteilungNr Fremdschlüssel und in der Tabelle Abteilung ist sie Primärschlüssel. Ein Fremdschlüssel verweist also immer auf einen Primärschlüssel einer anderen (oder der gleichen) Tabelle.
Definition: referentielle Integrität
Die Einschränkung, dass der Wert eines Fremdschlüssel immer seinem dazugehörigem Primärschlüssel entsprechen muss, bezeichnet man als referentielle Integrität. Primär- und Fremdschlüssel dienen der Navigation zwischen den Tabellen.
Hinzuweisen ist noch auf den Begriff Sekundärschlüssel. Ein Sekundärschlüssel ist ein Attribut, welches für mehrere Entitäten den gleichen Wert annehmen kann. Ein Sekundärschlüssel dient also der Zusammenfassung von Entitäten zu Teilmengen mit einer gleichen Eigenschaft und hilft zum schnelleren Suchen bzw. Sortieren. Beispielsweise könnte das Attribut AbteilungNr neben seiner Funktion als Fremdschlüssel auch in der Entitätsmenge Mitarbeiter als Sekundärschlüssel Verwendung finden, um alle Mitarbeiter einer Abteilung zu finden.
Hinweis: Bei der Darstellung einer Relation als Tabelle muss man immer beachten, dass die Tabelle lediglich eine übersichtliche Darstellung einer Menge ist. Dies bedeutet unter anderem, dass in einer Relationentabelle nie zwei gleiche Zeilen vorkommen dürfen und die Reihenfolge der Zeilen keine Bedeutung hat.