Operatoren des relationalen Datenbankmodells
Inhaltsverzeichnis
In diesem Abschnitt beschäftigen wir uns mit den Operatoren des Relationenmodells, mit denen neben den rein statischen Eigenschaften des ER-Modells auch dynamische Eigenschaften modelliert werden können. Die Operatoren können auf Relationen angewendet werden und erzeugen dabei neue Relationen. Wie wir aus der Mathematik wissen, lassen sich Operatoren und Operanden (Relationen) zu komplizierten Ausdrücken verknüpfen, mit denen die Berechnung neuer Relationen beschrieben werden kann. Man spricht daher auch von der Relationenalgebra. Sie ist eine präzise Sprache zur Formulierung von Anfragen. Diese ist jedoch unabhängig von der Sprache eines bestimmten DBMS, d.h. man kann hier also Anfragen sprachunabhängig formulieren, egal in welchem DBMS man die Relationen später implementieren will.
Bedeutsam sind die folgenden sieben Operatoren:
Zur Erklärung und Verdeutlichung der Wirkungsweise der Operatoren betrachten wir Beispiele mit folgenden Relationen:
Kurs1
Kurs-Nr Thema Jahrgangsstufe 13 Analysis 12/I 25 Short Stories 12/I 3 Datenbanken 11/I
Kurs2
Kurs-Nr Thema Jahrgangsstufe 11 Mechanik I 11/I 12 Mechanik I 11/I 25 Short Stories 12/I 3 Datenbanken 11/I
KursLR
Kurs-Nr Lehrer Raum 11 Müller I 123 12 Schulze 124 27 Bauer 14 15 Maier 14 17 Maier 17 3 Zange 211
Im folgenden werden die oben genannten Operatoren definiert und jeweils an einem Beispiel (mit den gegebenen Relationen) erläutert. Zur Übung und zum besseren Vergleich zwischen den gegebenen Relationen und den durch die Anwendung der Operatoren entstandenen Relationen werden die Beispiele jeweils in einem extra Fenster geöffnet.
Operator Durchschnitt
Der Durchschnitt R ![]() |
- Beispiel:
- Kurs1
Kurs2 (Lösung)
Operator Vereinigung
Die Vereinigung R ![]() |
- Beispiel:
- Kurs1
Kurs2 (Lösung)
Operator Differenz
Die Differenz R \ S zweier Relationen R und S ist die Menge aller Tupel, die in R aber nicht gleichzeitig in S enthalten sind. |
- Beispiel:
- Kurs1 \ Kurs2 (Lösung)
Operator kartesisches Produkt
- Beispiel:
- Kurs2
KursLR (Lösung)
Operator Selektion
Eine Selektion besteht letztlich darin, dass in einer Relation einige Zeilen gestrichen werden und nur die übrig bleiben, die die angegebene Bedingung erfüllen. Im Spezialfall dient die Selektion, einen einzelnen Satz zu selektieren, indem ein eindeutiges Merkmal angegeben wird, z.B. der Schlüssel. Sollte dieses Merkmal in der Relation nicht vorhanden sein, ist das Ergebnis eine leere Relation.
- Beispiel:
- Alle Kurse der Relation KursLR mit einer Kurs-Nr größer als 15 sollen selektiert werden:
-
Kurs-Nr>15 (KursLR) (Lösung)
Operator Projektion
Sei R eine Relation vom Grad n. Dann ist ![]() |
Bei der Projektion werden einige Spalten ausgeblendet; nur die angegebenen Spalten bleiben übrig. Danach werden eventuell mehrfach auftretende identische Zeilen bis auf eine entfernt, da eine Relation eine Menge darstellt und keine Duplikate enthalten darf.
- Beispiel:
- Gesucht ist die Relation, welche das Thema und die Jahrgangsstufe aller möglichen Kurse aus Kurs1 und Kurs2 angibt:
-
Thema,Jahrgangsstufe (Kurs1
Kurs2) (Lösung)
Operator Join
DEN Join gibt es nicht; es werden (in der Literatur) eine größere Anzahl von Joins unterschieden. Wir beschränken uns hier auf die für die Schule relevanten Typen.
NATURAL JOIN, INNER JOIN, EQUI-JOIN, JOIN
Der natürliche Verbund ist äußerst wichtig, um Relationen, die aus entwurfstheoretischen Gründen zerlegt wurden, während der Abfrage wieder zu kombinieren. Die Zerlegung findet in der Regel über Schlüsselattribute statt. Dementsprechend findet der Join in aller Regel über ein gemeinsames Schlüsselattribut in den beiden zu verknüpfenden Tabellen statt.
- Beispiel:
- Kurs2
KursLR (Lösung)
LEFT OUTER JOIN, LEFT JOIN
- Beispiel:
- Kurs2
KursLR (Lösung)
RIGHT OUTER JOIN, RIGHT JOIN
- Beispiel:
- Kurs2
KursLR (Lösung)
FULL OUTER JOIN, FULL JOIN
- Beispiel:
- Kurs2
KursLR (Lösung)
WEITERE JOIN-TYPEN
- Cross Join
- ... entspricht dem kartesischen Produkt
- Union Join, Union
- ... funktioniert ähnlich dem Full Outer Join, allerdings werden die Datensätze nicht über Bedingungen verknüpft.
- Theta Join, Non-Equi-Join
- ... ist eine Verallgemeinerung des Inner Join. Während beim Inner Join die Gleichheit des Inhalts zweier Attribute verglichen wird, wird beim Theta Join der Inhalt der Attribute i und j mit einer beliebigen Formel Theta(i,j) verglichen, etwa i = j (i gleich j; InnerJoin), i < j (i kleiner j), i <= j (i kleiner oder gleich j), i > j (i größer j) usw.
- Self-Join
- Der Self-Join ist ein beliebiger Join, bei dem nicht zwei verschiedene Tabellen benutzt werden, sondern zweimal dieselbe Tabelle.