Theta-Join

Unterseite von Join

Der Theta-Join ist der Join-Typ mit einer uneingeschränkten Bedingung als Selektionsprädikat. Als Vergleichsoperatoren sind zugelassen: =, <, >, ≤, ≥, <>, !=.

Definition:

Seien zwei Relationen R1 und R2 sowie ein Selektionsprädikat B:R1xR2 --> {wahr , falsch, unknown} gegeben, also: B(a1,....an,b1,...,bm)∈ {wahr , falsch, unknown}.

Dann heißt die Relation

 Theta-Join (R1,R2,B) := { (a1,...,an,b1,...,bm)∈ R1xR2 |  B(a1,...,an,b1,...,bm) = wahr }

Theta-Join von R1 und R2 aufgrund des Selektionsprädikats B.

Der Theta-Join ist damit seiner Definition gemäß eine Operation, die sich aus Selektion und kartesischem Produkt (hier R1xR2) ableiten lässt. Wird zuerst das kartesische Produkt R1 × R2 ausgeführt und auf diese Zwischenergebnismenge die Selektion der Bedingung B, dann erhält man das gleiche Ergebnis wie beim Theta-Join (R1, R2, B).

Bei dieser Operation können keine doppelten Tupel in der Ergebnismenge auftreten. Für das Selektionsprädikat ist die dreiwertige Logik zu beachten.

Beispiele:

Seien zwei Relationen gegeben durch R1(A1 , A2) und R2(B1 ,B2 ,B3 )

A1A2
1A
2B
3C
B1B2B3
1XV
2YW

Der Theta-Join (R1,R2, A1 = B1 ) ist z.B. gleich der Tabelle:

A1A2B1B2B3
1A1XV
2B2YW

Der Theta -Join (R1, R1, A1 > B1 ) ist z.B. gleich der Tabelle:

A1A2B1B2B3
3C1XV
3C2YW
2B1XV

Es sei folgende Mitarbeiter-Relation gegeben und die Relation Abteilungen:

Mita_IDNameVornameOrtAbt_IDGehalt
4711MüllerAgatheGummersbach103000,00
4713MeierHugoKöln203400,00
4897SchmittErwinGummersbach202500,00
4944SchmitdElseGummersbach20 
Abt_IDBezeichnungBudgetLeiter
10Einkauf240000,004711
20Verkauf350000,004897
30Produktion400000,00 
 Das kartesische Produkt  Mitarbeiter x Abteilungen hat das Ergebnis:

Ergebnis:

Mita_IDNameVornameOrtAbt_IDGehaltAbt_IDBezeichnungBudgetLeiter
4711MüllerAgatheGummersbach103000,0010Einkauf240000,004711
4711MüllerAgatheGummersbach103000,0020Verkauf350000,004897
4711MüllerAgatheGummersbach103000,0030Produktion400000,00 
4713MeierHugoKöln203400,0010Einkauf240000,004711
4713MeierHugoKöln203400,0020Verkauf350000,004897
4713MeierHugoKöln203400,0030Produktion400000,00 
4897SchmittErwinGummersbach202500,0010Einkauf240000,004711
4897SchmittErwinGummersbach202500,0020Verkauf350000,004897
4897SchmittErwinGummersbach202500,0030Produktion400000,00 
4944SchmitdElseGummersbach20 10Einkauf240000,004711
4944SchmitdElseGummersbach20 20Verkauf350000,004897
4944SchmitdElseGummersbach20 30Produktion400000,00 
  -- Zeigen Sie alle Mitarbeiter mit einem Gehalt größer 2500,00€ an mit ihren Abteilungen, in denen sie arbeiten. 
  Theta-Join( Mitarbeiter, Abteilungen, (Mitarbeiter.Abt_ID = Abteilungen.Abt_ID AND Gehalt > 2500,00) )

Ergebnis:

Mita_IDNameVornameOrtAbt_IDGehaltAbt_IDBezeichnungBudgetLeiter
4711MüllerAgatheGummersbach103000,0010Einkauf240000,004711
4713MeierHugoKöln203400,0020Verkauf350000,004897

Zu beachten ist hier, dass aufgrund der dreiwertige Logik der Datensatz mit dem leeren Gehaltsattribut (Mita_ID 4944) nicht in der Ergebnismenge auftaucht. Der "Gehalt > 2500"-Vergleich selbst wird zu "unknown" ausgewertet und aufgrund des AND-Operators wird auch die Gesamtbedingung zu "unknown". In die Ergebnismenge kommen aber nur Tupel für die die Bedingung zu "wahr" ausgewertet wird.

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, Join-Tabelle, Theta-Join

Kategorie: Relationale Algebra, T