Relationenalgebra und SQL: Join

Aus Wikibooks

Wechseln zu: Navigation, Suche
Wikibooks buchseite.svg Zurück zu "Selektion" | One wikibook.svg Hoch zu "Inhaltsverzeichnis" | Wikibooks buchseite.svg Vor zu "Equi-Join"


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.

[Bearbeiten] 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

R \triangleright\!\!\triangleleft\,_{\mathrm{Ausdruck}} S:= \{ r \cup s | r \in R \land s \in S \land \mathrm{Ausdruck} \}

Die Ableitung ist:

R \triangleright\!\!\triangleleft\,_{\mathrm{Ausdruck}} S:= \sigma_{\mathrm{Ausdruck}}(R \times S)


[Bearbeiten] Beispiel: Non-Equi-Join

R:
A B C D
1 2 3 4
4 5 6 7
7 8 9 0
S:
E F G
1 2 3
7 8 9
R x S:
A B C D E F G
1 2 3 4 1 2 3
4 5 6 7 1 2 3
7 8 9 0 1 2 3
1 2 3 4 7 8 9
4 5 6 7 7 8 9
7 8 9 0 7 8 9
JOIN(R, R.A <> S.E, S):
A B C D E F G
1 2 3 4 7 8 9
4 5 6 7 1 2 3
4 5 6 7 7 8 9
7 8 9 0 1 2 3

[Bearbeiten] SQL

SELECT * FROM R, S WHERE R.A <> S.E;


Wikibooks buchseite.svg Zurück zu "Selektion" | One wikibook.svg Hoch zu "Inhaltsverzeichnis" | Wikibooks buchseite.svg Vor zu "Equi-Join"
Persönliche Werkzeuge