Die Relationenalgebra oder Relationale Algebra ist eine formale Sprache, mit der sich Anfragen über einem relationalen Schema formulieren lassen. Sie erlaubt es, Relationen miteinander zu verknüpfen oder zu reduzieren und komplexere Informationen daraus herzuleiten.
Es werden Operationen definiert, die sich auf einer Menge von Relationen anwenden lassen. Damit lassen sich bspw. Relationen verknüpfen, filtern oder umbenennen. Die Ergebnisse aller Operationen sind ebenfalls Relationen. Aus diesem Grund bezeichnet man die Relationenalgebra als abgeschlossen.
Ihre Bedeutung hat die Relationenalgebra als theoretische Grundlage für Anfragesprachen in relationalen Datenbanken. Hier werden die Operationen der Relationalen Algebra in so genannten Datenbankoperatoren implementiert. Wenn jeder Term der relationalen Algebra in der Anfragesprache umgesetzt werden kann, heißt sie relational vollständig. Wenn jeder Term durch genau einen Ausdruck der Anfragesprache umgesetzt werden kann, heißt sie streng relational vollständig. Im Gegensatz zu den Kalkülen ist die relationale Algebra sicher, d.h. sie liefert in endlicher Zeit ein endliches Resultat.
Die Erfindung der relationalen Algebra durch Edgar F. Codd hat in den 1970er Jahren die Datenbankwelt revolutioniert, deren Standarddatenmodelle damals das hierarchische Modell und das Netzwerkdatenbankmodell waren. Die Datenbanksprache SEQUEL, ein Vorläufer des heutigen SQL, war neben QBE und QUEL eine der ersten Umsetzungen der Ideen des relationalen Modells, und damit der relationalen Algebra.
Inhaltsverzeichnis |
Um Mengenoperationen auf R und S durchführen zu können, müssen beide Relationen miteinander kompatibel sein. Die Typkompatibilität, auch Vereinigungsverträglichkeit genannt, zweier Relationen ist gegeben, wenn
Bei der Vereinigung R ∪ S werden alle Tupel der Relation R mit allen Tupeln der Relation S zu einer einzigen Relation vereint. Voraussetzung dafür ist, dass R und S das gleiche Relationenschema haben. Das heißt, sie haben gleiche Attribute und Attributtypen. Duplikate werden bei der Vereinigung gelöscht.
Definition
![]() |
Beispiel
|
|
|
Voraussetzung
Bei der Operation R \ S werden aus der ersten Relation alle Tupel entfernt, die auch in der zweiten Relation vorhanden sind. Die Differenz (sowie die symmetrische Differenz) ist keine monotone Operation, daher ist auch die Relationale Algebra im Vergleich zu anderen deklarativen Anfragesprachen (z. B. Datalog) nicht monoton.
Definition
![]() |
Beispiel
|
|
|
Voraussetzung
Bei der symmetrischen Differenz R △ S handelt es sich um die Menge aller Tupel, die entweder in R oder in S aber nicht in beiden gleichzeitig enthalten sind.
Definition
![]() |
Die Operation kann aus den Grundoperationen abgeleitet werden:
![]() |
Beispiel
|
|
|
Voraussetzung
Das Ergebnis der Durchschnittsoperation R ∩ S sind all die Tupel, die sich sowohl in R als auch in S finden lassen. Der Mengendurchschnitt lässt sich auch durch die Mengendifferenz ausdrücken: R ∩ S = R \ (R \ S)
Definition
![]() |
Beispiel
|
|
|
Voraussetzung
Das Kartesische Produkt R × S ist eine Operation sehr ähnlich dem Kartesischen Produkt aus der Mengenlehre.
Das Resultat des Kartesischen Produkts ist die Menge aller Kombinationen der Tupel aus R und S, d.h. jede Zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle kombiniert. Wenn alle Merkmale (Spalten) verschieden sind, so umfasst die Resultatstabelle die Summe der Merkmale der Ausgangstabellen. Die Anzahl Tupel (Zeilen) im Resultat ist die Multiplikation der Anzahl Zeilen der Ausgangstabellen.
Definition
Zwei beliebige Relationen R = (a1,a2,...,an) und S = (b1,b2,...,bm) sind gegeben. Das kartesische Produkt ist definiert durch
![]() |
Beispiel
|
|
|
Die Projektion kann auch Attributbeschränkung genannt werden. Sie extrahiert einzelne Attribute aus der ursprünglichen Attributmenge und ist somit als eine Art Selektion auf Spaltenebene zu verstehen, das heißt, die Projektion blendet Spalten aus. Wenn β die Attributliste ist, schreibt man πβ(R) oder in der linearen Schreibweise R[β]. β heißt auch Projektionsliste. Duplikate in der Ergebnisrelation werden eliminiert.
Definition
Sei R eine Relation über {A1, …, Ak} und β ⊆ {A1, …, Ak}.
![]() |
Die tβ := (β), das heißt, die Tupel erhalten nur die Attribute aus der Attributliste β.
Beispiel
|
|
|
Voraussetzung
Bei der Selektion kann man mit einem Vergleichsausdruck (Prädikat) eine Auswahl von Tupeln festlegen, die in die Ergebnismenge aufgenommen werden sollen. Es werden also Tupel („Zeilen“) ausgeblendet. Man schreibt σAusdruck(R) oder in der linearen Schreibweise R[Ausdruck]. Ausdruck heißt dann Selektionsbedingung.
Definition
Sei R eine Relation.
![]() |
Ausdruck bezeichnet dabei eine Formel. Diese kann bestehen aus:
Beispiel
|
|
|
Voraussetzung
Ein Join (zu deutsch Verbund) bezeichnet die beiden hintereinander ausgeführten Operationen kartesisches Produkt und Selektion. Die Selektionsbedingung ist dabei üblicherweise ein Vergleich von Attributen A θ B, wobei θ ein passender Vergleichsoperator ist. Man bezeichnet den allgemeinen Verbund daher auch als θ-Verbund („Theta-Verbund“). Spezialfälle des allgemeinen Verbundes sind der Equi-Join, der Natural Join und der Semi-Join (siehe unten).
Definition
Für zwei Relationen R(A1,...,An,B1,...,Bn) und S(B1,...,Bn,C1,...,Cn) ist das Ergebnis des allgemeinen Verbundes mit einer Formel Ausdruck als Selektionsbedingung
![]() |
Die Ableitung ist:
![]() |
Beispiel
|
|
|
|
Beim Equi-Join (auch Gleichverbund) wird als erstes das kartesische Produkt gebildet. Dann erfolgt die Selektion mit der Bedingung, dass der Inhalt bestimmter Spalten identisch sein muss. Der Equi-Join ist ein allgemeiner Verbund mit einer Formel der Form A = B.
Definition
Für die Relationen R, S und dazugehörige Attribute A ∈ R, B ∈ S ist der Equi-Join
![]() |
Beispiel
Hier:
![]() |
|
|
|
|
Der Natural Join setzt sich zusammen aus dem Equi-Join und einer zusätzlichen Ausblendung gleicher Spalten (Projektion). Der natürliche Verbund ist kommutativ und assoziativ, das heißt, es gilt
sowie
, was eine Rolle bei der Optimierung von Anfragen spielt.
Definition
Für zwei Relationen R(A1,...,An,B1,...,Bn) und S(B1,...,Bn,C1,...,Cn) ist das Ergebnis des natürlichen Verbundes
![]() |
Gibt es keine gemeinsamen Attribute, so ist das Ergebnis des natürlichen Verbundes das kartesische Produkt.
Beispiel
|
|
|
Der Semi Join berechnet den Anteil eines Natural Joins, welcher nach einer Reduktion auf die linke Relation übrig bleibt.
Definition
Für zwei Relationen R(A1,...,An,B1,...,Bn) und S(B1,...,Bn,C1,...,Cn) ist das Ergebnis des natürlichen Verbundes
![]() |
Beispiel
|
|
|
Im Gegensatz zum Equi-Join werden beim Outer-Join auch die Tupel der linken (left outer join) bzw. der rechten (right outer join) in die Ergebnisrelation mit Aufgenommen, die keinen Join-Partner finden. Die nicht vorhandenen Attribute der Join-Relation werden mit Nullwerten aufgefüllt. Die Kombination aus Left- und Right-Outer-Join wird Outer-Join oder Full-Outer-Join genannt. Dabei werden alle Tupel in die Ergebnisrelation aufgenommen und jene Attribute eines Tupels mit Nullwerten aufgefüllt, die keinen Join-Partner in der jeweils anderen Relation gefunden haben.
Der Outer-Join kann mit oder ohne (natural outer join) Join-Bedingung verwendet werden.
Beispiel
|
|
|
Durch diese Operation können Attribute und Relationen umbenannt werden. Diese Operation ist wichtig,
Die Schreibweise ist
, linear R[alt→neu].
Definition
Wir konstruieren eine neue Tupelmenge t' aus der alten:
![\beta_{[\mathrm{neu}\leftarrow\mathrm{alt}]}(R):= \{t'|t'(R-\mathrm{neu})=t(R-\mathrm{neu}) \land t'(\mathrm{neu})=t(\mathrm{alt})\}](/wikipedia.images/J/befd13ff39f9d00bb9ee11e7657bb9c6.png)
Beispiel
|
|
Die Division kann man sich als Gegenoperation (oder Umkehroperation) zum Kartesischen Produkt vorstellen.
Seien R und S Relationen mit den Attributmengen β und γ.
Bei
gilt dann:


Definition
Da die Division eine abgeleitete Operation ist, definieren wir sie mit Hilfe der anderen Operationen der RA. Seien R, S Relationen und β die zu R sowie γ die zu S dazugehörigen Attributmengen.
.
Die Division ist dann definiert durch:

Beispiel
Gegeben ist eine Relation R, die Väter und Mütter, deren Kinder und das Alter dieser Kinder enthält. Zusätzlich dazu ist eine Relation S gegeben, die einige Kinder und deren Alter enthält: Maria (4) und Sabine (2). Dividiert man R durch S, so erhält man als Ergebnis eine Relation, die nur noch diejenigen Ehepaare enthält, die sowohl eine Tochter Maria mit Alter 4 als auch eine Tochter Sabine mit Alter 2 haben:
|
|
|
Eine minimale Menge von Operationen, das heißt, eine Menge von Operationen, die mindestens notwendig ist, um alle Ausdrücke der relationalen Algebra bilden zu können, umfasst
Alle anderen Operationen (zum Beispiel Joins) lassen sich durch diese Grundoperationen nachbilden.
Jede andere Menge von Operationen ist relational vollständig, wenn sie die gleiche Mächtigkeit wie die oben genannten Operationen haben.
Um andere Abfragesprachen, speziell SQL, vollständig in die relationale Algebra abbilden zu können, ist die relationale Algebra nicht mächtig genug. Es gibt z. B. keine Möglichkeit, die SQL-Operatoren GROUP BY/HAVING, Aggregatfunktionen und Nullwerte in die relationale Algebra zu übersetzen. Wir betrachten hier einige Erweiterungen (die teilweise ähnliches bewirken), die eine vollständige Abbildung in die relationale Algebra, und damit eine vollständige theoretische Betrachtung dieser Abfragesprachen, ermöglichen.
SQL ermöglicht die Verwendung von NULL-Werten, die mit dem speziellen Prädikat IS NULL abgefragt werden können. Dies ist insbesondere wichtig bei der Bildung von äußeren Verbunden, die eine Relation erzeugen, die alle Werte der einen Relation enthalten, sowie alle Werte der anderen, für die die Verbundbedingung wahr ist, sonst eben NULL-Werte. Dies kann mit der relationalen Algebra so nicht abgebildet werden.
Eine Möglichkeit ist die Definition von Nullwerten wie in SQL mit einer dreiwertigen Logik, das heißt, die booleschen Operatoren werden mittels Wahrheitstabellen so erweitert, dass festgelegt ist, wie zu verfahren ist, wenn ein Operand NULL ist.
| ∧ | true | false | NULL |
|---|---|---|---|
| true | true | false | NULL |
| false | false | false | false |
| NULL | NULL | false | NULL |
Selektionsbedingungen oder Verbunde, die auf Nullwerte angewendet werden, ergeben NULL. Eine Schwierigkeit damit (d.h. mit der SQL-artigen Behandlung von Nullwerten) besteht darin, dass die Ergebnisse von Abfragen mit Unterabfragen, die NULL ergeben, nicht notwendigerweise der Intention des Benutzers entsprechen. Diese Art der Nullwertbehandlung ist auch nicht orthogonal, d. h. das Verhalten auf der einen Ebene (boolesche Operatoren, 3-wertige Logik) entspricht nicht dem auf einer anderen (Verbunde, 3-wertige Logik wird auf 2-wertige abgebildet).
Eine andere Möglichkeit ist die Unterscheidung zweier verschiedener Arten von Nullwerten, die jeweils „beliebig“ oder „nicht definiert“ bedeuten.
Die Gruppierung wendet Funktionen auf gleiche Attribute in einer Relation an. Der Operator γ erhält eine Liste von Funktionen und eine Attributliste. Die Funktionen werden dann auf Tupel angewendet für die die Attribute der Attributliste gleich sind. Die Ausgabe ist eine neue Relation bestehend aus der Attributliste und einem neuen Attribut, das die Ergebnisse der Funktionsliste enthält.
Die Funktionen sind dann die üblichen Aggregatfunktionen cnt, sum, max, avg ….
Definition
Seien R eine Relation und A = {A1, …, An} Attribute aus R. F(X) sei eine Funktionsliste f1(x1), …, fn(xn). Die Gruppierung ist dann

Für eine leere Attributmenge (also γF(X);{}(…)) wird ein zusätzliches Attribut erzeugt, das den Wert der Funktionsanwendung über die gesamte Relation enthält. Dies wird ausgenutzt, um die Relation mit der Selektion in Teilrelationen mit gleichen Attributen zu zerlegen, die dann mit der Funktionsanwendung wieder zusammengesetzt werden.
Weiter gilt, dass eine Gruppierung mit einer leeren Funktionsliste keinen Effekt hat.
Eine Erweiterung des relationalen Datenbankmodells ist das NF²-Modell. Der Name steht für Non-first-normal-form (NFNF), was andeuten soll, dass die Bedingung atomarer Attributwerte der 1. Normalform aufgebrochen wird. Folglich werden Mengen von Attributen und Mengen von Mengen erlaubt, was dazu führt, dass ein Attribut einer Relation wieder eine Relation sein kann. Die Domäne (Wertebereich) eines kombinierten Attributs ist das Kreuzprodukt der beteiligten Attributdomänen.
NF² erweitert die relationale Algebra dahingehend, dass neben den üblichen (entsprechend angepassten) Operationen der relationalen Algebra zwei Operationen hinzu genommen werden, die eine Relation schachteln (Nestung ν) und entschachteln (Entnestung μ). Die Nestung fasst eine Menge von Attributen in eine Unterrelation zusammen, die einen neuen Attributnamen erhält. Die Entnestung hebt Schachtelungen auf. Diese Operationen dienen dazu NF² Relationen in die 1. Normalform zu transformieren und umgekehrt. Die Operationen sind im Allgemeinen nicht bijektiv.
NF² benötigt aus obigen Gründen keine Fremdschlüssel.
SQL liefert als Ergebnis von Anfragen eine Multimenge zurück, also eine Menge, die Elemente mehrfach enthalten kann. Dies wurde aus Performance-Gründen so gehandhabt, um den zusätzlichen Schritt der Duplikatentfernung zu sparen. Es können also streng genommen nur Anfragen in die relationale Algebra übersetzt werden, die mit DISTINCT angegeben sind.
Für die relationale Algebra kann man dann zusätzlich eine Funktion bag-to-set spezifizieren, die die Duplikate aus einer Multimenge entfernt und somit eine Menge erzeugt, und die Basisoperationen dann einfach als Multimenge { { t | …} } spezifizieren. Vorsicht muss man aber bei der Definition abgeleiteter Operationen walten lassen.
Als Relationenschemata für die Beispiele nehmen wir die klassische Beispieldatenbank bestehend aus den Schemata Kunde, Lieferant und Ware. Die Schemata seinen
Grundoperationen der relationalen Algebra werden dann so benutzt:
Da die Ergebnisse der relationalen Algebra wieder Relationen sind (die RA ist orthogonal), können die Operationen wieder auf die Ergebnisse von Operationen angewendet werden. Dies erlaubt komplexe Abfragen. Für eine einfachere Schreibweise nehmen wir an, dass das Kreuzprodukt eine implizite Umbenennung der Attribute vornimmt, so dass die neuen Attributnamen mit dem Relationennamen qualifiziert sind, d.h. aus Lieferantennr aus der Relation WARE wird WARE.Lieferantennr: