JoinNatural-Join
Ein Equi-Join?, bei dem zusätzlich die Attribute, die in der Ergebnismenge doppelt vorkommen und gleich heißen, nur einmal aufgelistet werden, heißt 'Natural-Join' oder auch 'natürlicher Join'. Er wird abgekürzt als Natural-Join(R1,R2) oder als: R1 * R2
Der Natural-Join hat die Eigenheit, dass für ihn kein explizites Selektionsprädikat B formuliert werden muss. Sein Selektionsprädikat ist wie folgt implizit definiert und wird automatisch ausgeführt:
- Die Werte aller Attribute, die gleich heißen, werden auf Gleichheit geprüft. Es ist also nur das Vergleichsprädikat "=" zugelassen, woraus sich auch erklärt, dass jeder Natural-Join ein Equi-Join ist.
- Mehrere solcher Gleichheitsbedingungen werden mit dem booleschen Operator UND (AND) verknüpft. Auch hier ist die dreiwertige Logik zu beachten.
- Abschließend werden die namensgleichen Attribute heraus projiziert, so dass jeder Attributname nur einmal in der Ergebnismenge auftritt. Diese Projektion verursacht keinen Verlust von Informationen, da aufgrund der Gleichheitsbedingung in den namensgleichen Attributen die gleichen Werte stehen.
1.Beispiel:
Seien zwei Relationen gegeben durch; R1(A1, A2) und R2(A1,B2 ,B3 ):
A1 | A2 | ||
1 | A | ||
2 | B | ||
3 | C |
A1 | B2 | B3 | ||
1 | X | V | ||
2 | Y | W |
Dann ist das kartesische Produkt R1 x R2 gleich der Tabelle:
A1 | A2 | A1 | B2 | B3 | ||||
1 | A | 1 | X | V | ||||
1 | A | 2 | Y | W | ||||
2 | B | 2 | Y | W | ||||
3 | C | 1 | X | V | ||||
3 | C | 2 | Y | W | ||||
2 | B | 1 | X | V |
und der Natural Join: R1 * R2 ist dann gleich der Tabelle:
A1 | A2 | B2 | B3 | |||
1 | A | X | V | |||
2 | B | Y | W |
2.Beispiel:
Es seien folgende Relationen 'Mitarbeiter und die 'Abteilungen' gegeben:
Mita_ID | Name | Vorname | Ort | Abt_ID | Gehalt |
4711 | Müller | Agathe | Gummersbach | 10 | 3000,00 |
4713 | Meier | Hugo | Köln | 20 | 3400,00 |
4897 | Schmitt | Erwin | Gummersbach | 20 | 2500,00 |
4944 | Schmitd | Else | Gummersbach | 20 |
Abt_ID | Bezeichnung | Budget | Leiter |
10 | Einkauf | 240000,00 | 4711 |
20 | Verkauf | 350000,00 | 4897 |
30 | Produktion | 400000,00 |
Bestimmen Sie das kartesische Produkt 'Mitarbeiter x Abteilungen'!
Ergebnis:
Mita_ID | Name | Vorname | Ort | Abt_ID | Gehalt | Abt_ID | Bezeichnung | Budget | Leiter |
4711 | Müller | Agathe | Gummersbach | 10 | 3000,00 | 10 | Einkauf | 240000,00 | 4711 |
4711 | Müller | Agathe | Gummersbach | 10 | 3000,00 | 20 | Verkauf | 350000,00 | 4897 |
4711 | Müller | Agathe | Gummersbach | 10 | 3000,00 | 30 | Produktion | 400000,00 | |
4713 | Meier | Hugo | Köln | 20 | 3400,00 | 10 | Einkauf | 240000,00 | 4711 |
4713 | Meier | Hugo | Köln | 20 | 3400,00 | 20 | Verkauf | 350000,00 | 4897 |
4713 | Meier | Hugo | Köln | 20 | 3400,00 | 30 | Produktion | 400000,00 | |
4897 | Schmitt | Erwin | Gummersbach | 20 | 2500,00 | 10 | Einkauf | 240000,00 | 4711 |
4897 | Schmitt | Erwin | Gummersbach | 20 | 2500,00 | 20 | Verkauf | 350000,00 | 4897 |
4897 | Schmitt | Erwin | Gummersbach | 20 | 2500,00 | 30 | Produktion | 400000,00 | |
4944 | Schmitd | Else | Gummersbach | 20 | 10 | Einkauf | 240000,00 | 4711 | |
4944 | Schmitd | Else | Gummersbach | 20 | 20 | Verkauf | 350000,00 | 4897 | |
4944 | Schmitd | Else | Gummersbach | 20 | 30 | Produktion | 400000,00 |
Zeigen Sie alle Mitarbeiter an mit ihren Abteilungen, in denen sie arbeiten, also den Natural-Join(Mitarbeiter, Abteilungen)!
Ergebnis:
Mita_ID | Name | Vorname | Ort | Gehalt | Abt_ID | Bezeichnung | Budget | Leiter |
4711 | Müller | Agathe | Gummersbach | 3000,00 | 10 | Einkauf | 240000,00 | 4711 |
4713 | Meier | Hugo | Köln | 3400,00 | 20 | Verkauf | 350000,00 | 4897 |
4897 | Schmitt | Erwin | Gummersbach | 2500,00 | 20 | Verkauf | 350000,00 | 4897 |
4944 | Schmitd | Else | Gummersbach | 20 | Verkauf | 350000,00 | 4897 |
siehe auch: Relationale-Algebra, Join, Equi-Join-SQL
Quellen:
- Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
- Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
- Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
- Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
- Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2
siehe auch: Relationale-Algebra, Join, Natural-Join-SQL
Kategorie: Relationale Algebra, N