Konzept des relationalen Datenbankmodells

Aus Informatik
Wechseln zu: Navigation, Suche
Das relationale Datenbankmodell basiert auf dem mathematischen Begriff der Relation. Eine Relation R ist eine Teilmenge des kartesischen Produkts einer Liste von Wertbereichen W1, W2, ..., Wn:

R Kleinergleich.gif W1 Kreuz.gif W2 Kreuz.gif ... Kreuz.gif Wn

Elemente einer Relation R sind die n-Tupel der Art (v1, v2, ..., vn) mit vi Element.gif Wi. Die Größe bezeichnet man als Grad der Relation R.

Im Beispiel der Oberstufenverwaltung kommen Kurse als Objekte vor. Kurse werden durch die drei Attribute Kurs-Nr, 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 | 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 unübersichtlich. Besser geeignet ist die dazu äquivalente Tabellenschreibweise:

Kurs

Kurs-Nr 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:

Relation Mitarbeiter

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 kursiv dargestellt (Da kursive Schrift nicht immer eindeutig zu erkennen ist, werden Fremdschlüssel oft auch gestrichelt unterstrichen oder durch einen "Aufwärtspfeil" vor dem Attributnamen gekennzeichnet):

Allgemein: R(A1, A2, ..., An)
Beispiel: Abteilung(Abteilung-Nr, 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.

Unter Entity-Integrität versteht man die Tatsache, dass ein Primärschlüssel immer eindeutig einen Satz kennzeichnen muss und deshalb niemals leer sein darf, d.h. den Wert NULL annehmen darf.


Domain-Integrität definiert dagegen die Einschränkung von Spalten auf bestimmte Wertebereiche; z.B. darf die Spalte Plz nur gültige Postleitzahlen enthalten.

Um nun 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 eine Spalte, die einen Bezug zu einer anderen Tabelle herstellt. 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 Abteilungsbezeichnung nur Werte enthalten, die auch in der Tabelle Abteilung in der Spalte Abteilungsbezeichnung vorkommen. In der Tabelle Mitarbeiter ist die Spalte Abteilungsbezeichnung 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 Tabelle.

Diese 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 Abteilungsbez 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.