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 13:01:04 CEST 2007


Hallo Niels, hallo Ralf,

Am Mittwoch, 23. Mai 2007 schrieb Niels Jäckel:
> > Ä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?
>
> Die IDs der Brotkrumen sind über die ParentIDs miteinander
> verstrickt, allerdings muss auch dort ein rekursives Select in
> irgendeiner Form verwendet werden.
>
> Wie Lutz schon sagte, hast du mit den NestedSets sicherlich den
> richtigen Grundansatz schon in der Hand :-)

oder man arbeitet bei dem ID/ParentID-Modell mit einem Trick: Man 
vergibt für jede Element auf jeder Ebene einen Sortierschlüssel o.ä., 
wobei die Sub-Ebenen immer den Sortierschlüssel der Eltern-Ebene plus 
dem eigenen Schlüssel haben. Pro Ebene muß der Sortierschlüssel 
natürlich eine bestimmte Zeichenlänge haben, z.B. 3 Stellen. Das klingt 
jetzt etwas kryptisch, gemeint ist aber letztlich sowas:

001	Deutschland
001001	Düsseldorf
001002	Köln
002	Frankreich
002001	Avignon
002002	Paris

Mit diesen Schlüsseln kannst Du dann auch mit einem SELECT die 
Sub-Ebenen für ein Element ziehen. Dieses Hierarchiefeld läßt sich mit 
Sicherheit auch automatisch befüllen.

Die Lösung ist theoretisch etwas unflexibler als NestedSets, aber 
vielleicht reicht die Flexibilität in der Praxis ja. Ob sie auch so 
performant ist, wie die NestedSets-Lösung müßte man mal testen.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive