Relationenalgebra und SQL: Natural-Join

Aus Wikibooks

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


Der Natural-Join (natürliche Verbund) 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  R \triangleright\!\!\triangleleft\, S = S \triangleright\!\!\triangleleft\, R sowie  (R \triangleright\!\!\triangleleft\, S ) \triangleright\!\!\triangleleft\, T = R \triangleright\!\!\triangleleft\, ( S \triangleright\!\!\triangleleft\, T), was eine Rolle bei der Optimierung von Anfragen spielt.

[Bearbeiten] Definition

Für zwei Relationen R(A1,...,An,B1,...,Bn) und S(B1,...,Bn,C1,...,Cn) ist das Ergebnis des natürlichen Verbundes

R \triangleright\!\!\triangleleft\, S:= \{ r \cup s_{[C_1, ..., C_n]} | r \in R \land s \in S \land r_{[B_1, ..., B_n]} =s_{[B_1, ..., B_n]} \}

Gibt es keine gemeinsamen Attribute, so ist das Ergebnis des natürlichen Verbundes das kartesische Produkt.

[Bearbeiten] Beispiel

Selektionsprädikat A1 = A1

R:
A B C D
1 2 3 4
4 5 6 7
7 8 9 0
S:
A F G
1 2 3
7 8 9
NATURAL JOIN (R, S):
A B C D F G
1 2 3 4 2 3
7 8 9 0 8 9

[Bearbeiten] SQL

SELECT R.A,B,C,D,F,G
FROM R INNER JOIN S ON R.A=S.A;


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