Die Operanden der Sprache sind Relationen. Als unabhängige Operatoren gibt es Selektion, Projektion, Vereinigung, Mengendifferenz, Kartesisches Produkt, Umbenennung; daraus lassen sich weitere Operatoren Verbund, Durchschnitt, Division ableiten.
Es werden diejenigen Tupel ausgewählt, die das Selektionsprädikat erfüllen. Die Selektion wird mit bezeichnet und hat das Selektionsprädikat als Subskript.
Die Selektion
liefert als Ergebnis
MatrNr | Name | Semester |
24002 | Xenokrates | 18 |
25403 | Jonas | 12 |
Das Selektionsprädikat wird beschrieben durch eine Formel mit folgenden Bestandteilen:
Bei der Projektion werden Spalten der Argumentrelation extrahiert.
Das Operatorsymbol lautet , die gewünschten Attribute
werden im Subskript aufgelistet:
liefert als Ergebnis
Rang |
C4 |
C3 |
Die Attributmenge wird üblicherweise nicht unter Verwendung von Mengenklammern sondern als durch Kommata getrennte Sequenz gegeben. Achtung: Da das Ergebnis wiederum eine Relation ist, existieren per definitionem keine Duplikate ! In der Praxis müssen sie dennoch algorithmisch entfernt werden.
Zwei Relationen mit gleichem Schema können durch die
Vereinigung, symbolisiert durch , zusammengefaßt werden.
Beispiel:
Für zwei Relationen und mit gleichem Schema ist die
Mengendifferenz definiert als die Menge der Tupel,
die in aber nicht in vorkommen. Beispiel
liefert die Matrikelnummern derjenigen Studenten, die noch nicht geprüft wurden.
Das kartesische Produkt (Kreuzprodukt) zweier Relationen und wird mit bezeichnet und enthält alle möglichen Paare von Tupeln aus und . Das Schema der Ergebnisrelation, also sch , ist die Vereinigung der Attribute aus sch und sch.
Das Kreuzprodukt von Professoren und hören hat 6 Attribute und enthält Tupel.
PersNr | name | Rang | Raum | MatrNr | VorlNr |
2125 | Sokrates | C4 | 226 | 26120 | 5001 |
... | ... | ... | ... | ... | ... |
2125 | Sokrates | C4 | 226 | 29555 | 5001 |
... | ... | ... | ... | ... | ... |
2137 | Kant | C4 | 7 | 29555 | 5001 |
Haben beide Argumentrelationen ein gleichnamiges Attribut , so kann dies durch Voranstellung des Relationennamen in der Form identifiziert werden.
Zum Umbenennen von Relationen und Attributen wird der Operator
verwendet, wobei im Subskript entweder der neue
Relationenname steht oder die Kombination
von neuen und altem Attributnamen durch einen Linkspfeil getrennt. Beispiele:
Eine Umbenennung kann dann erforderlich werden, wenn durch das kartesische Produkt Relationen mit identischen Attributnamen kombiniert werden sollen.
Als Beispiel betrachten wir das Problem, die Vorgänger der
Vorgänger der Vorlesung mit der Nummer herausfinden.
Hierzu ist ein kartesisches Produkt der Tabelle mit sich
selbst erforderlich, nachdem zuvor die Spalten umbenannt worden sind:
Die konstruierte Tabelle hat vier Spalten und enthält das Lösungstupel mit dem Wert als Vorgänger von , welches wiederum der Vorgänger von ist:
Vorgänger | Nachfolger | Vorgänger | Nachfolger |
5001 | 5041 | 5001 | 5041 |
... | ... | ... | ... |
5001 | 5041 | 5041 | 5216 |
... | ... | ... | ... |
5052 | 5259 | 5052 | 5259 |
Der sogenannte natürliche Verbund zweier Relationen
und wird mit
gebildet. Wenn insgesamt
Attribute
und insgesamt Attribute
hat, dann hat die Stelligkeit .
Hierbei wird vorausgesetzt, daß die Attribute und jeweils
paarweise verschieden sind. Das Ergebnis von ist definiert als
Es wird also das kartesische Produkt gebildet, aus dem nur diejenigen Tupel selektiert werden, deren Attributwerte für gleichbenannte Attribute der beiden Argumentrelationen gleich sind. Diese gleichbenannten Attribute werden in das Ergebnis nur einmal übernommen.
Die Verknüpfung der Studenten mit ihren Vorlesungen
geschieht durch
Das Ergebnis ist eine 7-stellige Relation:
MatrNr | Name | Semester | VorlNr | Titel | SWS | gelesenVon |
26120 | Fichte | 10 | 5001 | Grundzüge | 4 | 2137 |
25403 | Jonas | 12 | 5022 | Glaube und Wissen | 2 | 2137 |
28106 | Carnap | 3 | 4052 | Wissenschaftstheorie | 3 | 2126 |
... | ... | ... | ... | ... | ... | ... |
Da der Join-Operator assoziativ ist, können wir auch auf die
Klammerung verzichten und einfach schreiben
Wenn zwei Relationen verbunden werden sollen bzgl. zweier
Attribute, die zwar die gleiche Bedeutung aber unterschiedliche
Benennungen haben, so müssen diese vor dem Join
mit dem -Operator
umbenannt werden. Zum Beispiel liefert
die Relation
Beim natürlichen Verbund müssen die Werte der gleichbenannten
Attribute übereinstimmen. Der allgemeine Join-Operator,
auch Theta-Join genannt, erlaubt die Spezifikation
eines beliebigen Join-Prädikats .
Ein Theta-Join
über
der Relation mit den Attributen
und der Relation mit den Attributen
verlangt die Einhaltung des Prädikats , beispielsweise in
der Form
Das Ergebnis ist eine -stellige Relation und läßt sich
auch als Kombination von Kreuzprodukt und Selektion schreiben:
Wenn in der Universitätsdatenbank die Professoren
und die Assistenten um das Attribut Gehalt
erweitert würden, so könnten wir diejenigen Professoren
ermitteln, deren zugeordnete Assistenten mehr als sie selbst
verdienen:
Die bisher genannten Join-Operatoren werden auch innere Joins genannt (inner join). Bei ihnen gehen diejenigen Tupel der Argumentrelationen verloren, die keinen Join-Partner gefunden haben. Bei den äußeren Join-Operatoren (outer joins) werden - je nach Typ des Joins - auch partnerlose Tupel gerettet:
Somit lassen sich zu zwei Relationen und insgesamt vier verschiedene Joins konstruieren:
Der Mengendurchschnitt (Operatorsymbol )
ist anwendbar auf zwei Argumentrelationen
mit gleichem Schema. Im Ergebnis liegen alle Tupel, die in beiden
Argumentrelationen liegen. Beispiel:
liefert die Personalnummer aller C4-Professoren, die mindestens eine Vorlesung halten.
Der Mengendurchschnitt läßt sich mithilfe der Mengendifferenz bilden:
Sei eine -stellige Relation, sei eine -stellige Relation, deren Attributmenge in enthalten ist.
Mit der Division
sind alle die Anfangsstücke von gemeint, zu denen sämtliche Verlängerungen mit Tupeln aus in der Relation liegen. Beispiel:
Die Division von durch läßt sich schrittweise mithilfe der unabhängigen Operatoren nachvollziehen (zur Vereinfachung werden hier die Attribute statt über ihre Namen über ihren Index projiziert):
alle Anfangsstücke | |
diese kombiniert mit allen Verlängerungen aus | |
davon nur solche, die nicht in sind | |
davon die Anfangsstücke | |
davon das Komplement |