Operatoren des relationalen Datenbankmodells

Aus Informatik
Wechseln zu: Navigation, Suche

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:

Operator Schreibweise Bedeutung
Durchschnitt R Schnitt.gif S Schnittmenge der Mengen R und S
Vereinigung R Vereinigung.gif S Vereinigungsmenge der Mengen R und S
Differenz R \ S Differenz von Mengen
Produkt R Kreuz.gif S kartesisches Produkt zweier Mengen
Selektion Sigma.gifFormel(R) Auswahl von Tupel gemäß Formel (Auswahl von Zeilen)
Projektion Pi1.gifAttribute(R) Auswahl von Attributen (Auswahl von Spalten)
Join R Join.gif S Verknüpfung zweier Relationen zu einer neuen mit den Attributen beider Tabellen über gemeinsames Attribut

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 Schnitt.gif S zweier Relationen R und S ist die Menge aller Tupel, die sowohl in R als auch in S enthalten sind.
Beispiel:
Kurs1 Schnitt.gif Kurs2 (Lösung)



Operator Vereinigung

Die Vereinigung R Vereinigung.gif S zweier Relationen R und S ist die Menge aller Tupel, die in R oder S oder in beiden Relationen enthalten sind.
Beispiel:
Kurs1 Vereinigung.gif 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

Seien R und S Relationen mit Grad n1 und n2. Das kartesische Produkt R Kreuz.gif S ist die Menge aller (n1*n2)-Tupel, deren erste n1-Komponenten ein Tupel in R und deren letzte n2 Komponenten ein Tupel aus S darstellen.
Beispiel:
Kurs2 Kreuz.gif KursLR (Lösung)



Operator Selektion

Sei F eine Formel. Diese Formel kann Konstanten und Attribute als Operanden, sowie Vergleichsoperatoren (<, ≤, =, ≠, ≥, >) und logische Operatoren (and, or, not) enthalten. Dann ist die Selektion Sigma.gifF (R) die Menge aller Tupel in R,

die die Formel F erfüllen. Bei der Selektion werden Zeilen ausgewählt.

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:
Sigma.gifKurs-Nr>15 (KursLR) (Lösung)



Operator Projektion

Sei R eine Relation vom Grad n. Dann ist Pi1.gifi1,...,im (R) die Projektion von R auf die Komponenten i1, ..., im. Die entstehende Relation ist vom Grad m. Bei einer Projektion werden Spalten ausgewählt.

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:
Pi1.gifThema,Jahrgangsstufe (Kurs1 Vereinigung.gif 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 Natural Join R Join.gif S der Tabellen R und S wird für Tabellen mit gleichen Attributen wie folgt berechnet:
  1. Man bildet das kartesische Produkt R Kreuz.gif S.
  2. Für jedes Attribut, das sowohl in R als auch in S vorkommt, selektiert man die Tupel, für die die Werte der gleichnamigen Attribute übereinstimmen.
  3. Eine der gleichen Spalten wird wegprojiziert.

Als Merkregel formuliert: Der Join verbindet zwei Tabellen über gleichnamige Spalten bei gleichen Attributwerten.

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 Join.gif KursLR (Lösung)
LEFT OUTER JOIN, LEFT JOIN
Der Left Outer Join R Leftouter.png S der Tabellen R und S verknüpft die Datensätze aus R und S analog dem Natural Join. Dabei werden allerdings auch die Datensätze aus R (der linken Tabelle) eingeschlossen, für die kein entsprechender Datensatz in S (der rechten Tabelle) existiert. (linke Inklusionsverknüpfung)
Beispiel:
Kurs2 Leftouter.png KursLR (Lösung)
RIGHT OUTER JOIN, RIGHT JOIN
Der Right Outer Join R Rightouter.png S der Tabellen R und S verknüpft die Datensätze aus R und S analog dem Natural Join. Dabei werden allerdings auch die Datensätze aus S (der rechten Tabelle) eingeschlossen, für die kein entsprechender Datensatz in R (der linken Tabelle) existiert. (rechte Inklusionsverknüpfung)
Beispiel:
Kurs2 Rightouter.png KursLR (Lösung)
FULL OUTER JOIN, FULL JOIN
Der Full Outer Join R Fullouter.png S der Tabellen R und S verknüpft die Datensätze aus R und S analog dem Natural Join. Dabei werden allerdings auch die Datensätze aus R und S eingeschlossen, für die kein entsprechender Datensatz in der jeweils anderen Tabelle existiert. Dieser Join stellt eine Verknüpfung des Left Outer Join und des Right Outer Join dar.
Beispiel:
Kurs2 Fullouter.png 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.