Databases Reference
In-Depth Information
Name
Bestell_Nr
Bestelldatum
Stein, Peter
151
28.04.2000
Randers, Nis
152
30.04.2000
Stuff, Werner
153
12.05.2000
Randers, Nis
154
15.05.2000
Nicht alle Kunden erscheinen in dieser Auflistung, sondern nur die, für die Bestel-
lungen eingetragen sind. Wenn wir dagegen alle Kunden in der Aufstellung sehen
wollen, müssen wir den äußeren Verbund benutzen.
Es ist allerdings zu berücksichtigen, dass der äußere Verbund nur eingeführt wer-
den kann, wenn ein Konzept von Nullmarken (vgl. Kapitel 2.5) eingeführt ist.
Einige Attribute haben dann keine Werte, was durch sogenannte
Nullmarken
gekennzeichnet wird.
Für die Relationen, deren Tupel auf jeden Fall erscheinen sollen, werden Sternchen
an den eckigen Klammern nach dem Join-Operator angebracht. Somit gibt es drei
verschiedene äußere Verbunde:
Join*[…]
,
Join[…]*
und
Join*[…]*
. Diese werden
als
Left Outer Join
,
Right Outer Join
und
Full
Outer
Join
bezeichnet. Häufig werden
sie auch abgekürzt als
Left Join
,
Right Join
und
Full
Join
bezeichnet; der oben einge-
führte Verbund wird dann als
Inner Join
bezeichnet.
Die obige Abfrage wird dann wie folgt dargestellt:
Proj [name, bestell_nr, datum] (Kunde Join*[kunden_nr] Bestellung)
Name
Bestell_Nr
Bestelldatum
Berger, Uwe
*
*
Andresen, Ute
*
*
Voss, Hans
*
*
Stein, Peter
151
28.04.2000
Randers, Nis
154
15.05.2000
Randers, Nis
152
30.04.2000
Stuff, Werner
153
12.05.2000
Staack, Hannes
*
*
We n n d e r äußere Verbund mit dem natürlichen Verbund gemischt wird, dann
kommt es gegebenenfalls auf die Reihenfolge der Operationen an. Wir können hier
also nicht so sorglos auf Klammern verzichten wie bei dem natürlichen Verbund.