Freitag, August 18, 2006

DB,SNA: Self JOIN

Mit dem Begriff Self JOIN ist ein JOIN einer Tabelle mit sich selbst gemeint. So könnte man zum Beispiel mit einem Self JOIN auf einer Angestellten-Tabelle mit den Attributen ID, Name, ..., ChefID zu jedem Angestellten den Namen seines Chefes mit ausgeben lassen. Und für die SNA-Praxis kann man aus einer Beziehungen-Tabelle durch einen n-fachen Self JOIN alle Pfade der Länge n+2 berechnen (Kreise im Netzwerk verderben etwas die Qualität dieses simplen Ansatzes). Übrigens ist es mit reinem SQL nicht möglich, eine transitive Hülle zu berechnen. Dies ist zwar eine echte Schwäche des relationalen Ansatzes, allerdings kein Beinbruch, da moderne DBMS eingebaute Programmiersprachen vorhalten.

2 Comments:

At 10:41 PM, Steffen Mazanek said...

Habe ich gerade noch dazu gefunden:Transitive closure in relational database systems

 
At 10:47 PM, Steffen Mazanek said...

Ein kurzes Beispiel eines Einsatzes eines Self JOINs:
SELECT lb1.name1 AS person1,lb1.name2 AS person2, lb2.name2 AS person3 FROM lehrbez lb1 JOIN lehrbez lb2 ON lb1.name2 = lb2.name1

lb1 und lb2 sind nötig, damit eindeutig auf eine der beiden "Instanzen" der Tabelle lehrbez verwiesen werden kann.

 

Post a Comment

<< Home