Strukturen abbilden - unbekannte Hirarchiehöhe
Gast
- datenbank
Guten Morgen,
ich möchte eine Hirarchie abbilden, deren Höhe ich beim Datenbank-Layout nicht kenne.
Beispiel:
Der deutsche Chorverband (Ebene 1) hat Landes- (Ebene 2) und Kreisverbände (Ebene 3). Deren Mitglieder sind Vereine (Ebene 4), wovon jeder mehrere Chöre (Ebene 5) haben kann.
Wenn ich nun - sagen wir mal - die Chorleiter eines Landesverbandes auflisten will, brauche ich die Chorleiter
Jetzt könnte ich den Landesverband greifen und mit drei JOINS die untergeordneten Mitglieder zufügen.
Dabei ergeben sich zwei Probleme:
1. Was ist, wenn ich in einer anderen Organisation sechs Hirarchiestufen habe, aber nur drei JOINS?
2. Was ist mit den Unterebenen, wenn eine Ebene NULL Ergebnisse liefert?
Mir fehlt der Ansatz. Bitte um Hilfe.
Gruß, Gast
Tach!
ich möchte eine Hirarchie abbilden, deren Höhe ich beim Datenbank-Layout nicht kenne.
Solche Hierarchien kann man mit Nested Sets abbilden. Diese Technik ist aufwendiger beim Einfügen und Löschen von Datensätzen, aber sehr flexibel beim Abfragen.
dedlfix.
Hallo,
ich möchte eine Hirarchie abbilden, deren Höhe ich beim Datenbank-Layout nicht kenne.
Mir fehlt der Ansatz. Bitte um Hilfe.
Nested Sets könnten etwas für Dich sein. Den Begriff kannst Du auch gern für eine Archivsuche benutzen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Nested Sets könnten etwas für Dich sein.
Habe mich etwas eingelesen. Das Prinzip kommt mir bekannt vor.
Eine Problematik scheint offen zu bleiben. Um noch mal mein Vereinsbeispiel zu strapazieren:
Es gibt Vereine, die haben einen Chor, sind damit Mitglied im Chorverband, und sie haben eine Sportmannschaft, sind auch Mitglied im Sportverband. Oder ganz allgemein: Eine (natürliche oder juristische) Person kann Mitglied in beliebig vielen Strukturen sein.
Bei den "nested sets" hat jeder Knoten genau einen Elter (ist das die Einzahl von Eltern?) oder - der oberste Knoten - keinen Elter.
Okay, man könnte für jede Organisation - also hier Sport und dort Musik - einen eigenen Baum entwickeln und innerhalb eines Baumes zeigt jeder Knoten auf genau einen Adresssatz. Andersrum kann auf einen Adresssatz in 0..n Bäumen verwiesen werden.
Irgendwie klingt das sehr unübersichtlich.
Gruß, Gast
Tach!
Oder ganz allgemein: Eine (natürliche oder juristische) Person kann Mitglied in beliebig vielen Strukturen sein.
Okay, man könnte für jede Organisation [...] einen eigenen Baum entwickeln und innerhalb eines Baumes zeigt jeder Knoten auf genau einen Adresssatz. Andersrum kann auf einen Adresssatz in 0..n Bäumen verwiesen werden.
Irgendwie klingt das sehr unübersichtlich.
Das klingt wie eine 1:n-Beziehung, nur dass die eine Seite eben eine Nested-Sets-Struktur ist. 1:n ist ja eine übliche Vorgehensweise, um Redundanzen zu vermeiden. Nested Sets ist jedenfalls _die_ Lösung, wenn es um eine flache Speicherung und nichtrekursive Abfragen auf eine verschachtelte Datenmenge geht. Die Komplexität und Unübersichtlichkeit kommt von der Baum-Struktur und der möglichen Mitgliedschaft in mehreren Blättern. Die wird auch nicht besser, wenn du es als Graph auf Papier zeichnest. Einige DBMSe unterstüzten meines Hörensagens nach aber auch rekursive Anfragen.
dedlfix.