phpbar.de logo

Mailinglisten-Archive

[php] [OT] Nested Set mit mehr als einem Vorfahren?

[php] [OT] Nested Set mit mehr als einem Vorfahren?

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Mai 23 09:36:59 CEST 2007


Hallo Ralf,

Am Mittwoch, 23. Mai 2007 schrieb Ralf Eggert:
> Moin Niels,
>
> > Wenn du einen Text mehreren Knoten unterordnen willst, dann schreib
> > einfach mehrere Einträge in die Beziehungstabelle... Das
> > Selektieren einer ganzen Ebene ist dann auch recht schnell, indem
> > du alle IDs aus der Beziehungstabelle holst, deren ParentID soundso
> > ist.
>
> Ok, das Prinzip habe ich verstanden. Danke für die Anregung.
>
> > Ich habe mir dieser Standardstruktur schon recht große Bäume
> > bearbeitet und hatte nie Performanceprobleme...
>
> Ich muss in meiner Anwendung aber auch alle Unterknoten eines Knotens
> selektieren können. Also nicht nur die direkt eine Ebene darunter,
> sondern auch weiter unten. Das funktioniert mit der Selektion anhand
> der LEFT/RIGHT ziemlich gut und auch recht schnell.
>
> Die Frage ist, wie ich bei deinem Aufbau solch eine Abfrage gestalten
> kann. Ich stelle es mir sehr schwer vor, da die Abfrage ja eigentlich
> rekursiv sein müsste. Beim Binärbaum/Nested Set hingegen geht das mit
> einem einfachen Select.
>
> Ähnlich ist es, wenn ich von meiner aktuellen Position im Baum alle
> übergeordneten Knoten in einem Rutsch selektieren möchte (für eine
> Brotkrumen Navi). Das geht prima mit Binärbaum/Nested Set, aber auch
> mit deinem Ansatz?
>
> Hast du solche Abfragen schon damit gelöst?

ich habe Niels' Mail gestern Abend zu vorgerückter Stunde nicht mehr so 
genau gelesen, das habe ich aber gerade noch einmal getan. :-D

Wenn ich das richtig sehe, hat Niels Dir das klassische Modell mit 
ID/ParentID vorgeschlagen, während Du auf NestedSets gesetzt hast. 
Beide Modelle haben ihre Vor- und Nachteile, wobei Du ja gesagt hat, es 
käme bei Dir darauf an, die Daten möglichst schnell zu lesen, während 
Änderungen ruhig "teurer" sein dürften.

In diesem Fall hast Du Dich dann wohl für Deine Zwecke richtig 
entschieden. Du könntest allenfalls darüber nachdenken, beide Modelle 
zu kombinieren, d.h. neben den Links/Rechts-Werte auch die 
ID/ParentID-Beziehungen pflegen. So könntest Du teilweise die Vorteile 
beider Ansätze nutzen, wobei der Pflegeaufwand natürlich höher ist.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive