Hi,
Es kommt darauf an, was für Lesevorgänge du hast. Wenn du immer nur eine Ebene abfragst, reicht ein Parentvergleich. Wenn du allerdings auch alle Nachfahren benötigst, gibt es eigentlich nichts besseres. Die Alternative wäre, das DBMS mit rekursiven Anfragen zu überhäufen, oder stets den gesamten Datenbestand (so sich nicht anderweitig die Menge einschränken lässt) abzufragen und auf dem Client (PHP etc.) zu durchlaufen. Für kleine Strukturen/Datenmengen ginge auch noch ein Serialized LOB (auch nicht nachteilsfrei).
Die Lese und Schreibvorgänge sind konkret folgende (soweit ich
das überblicken kann):
Frontend:
Lesend wir auf jeder Unterseite die Struktur an zwei Stellen
abgefragt. Da wäre
a) das Menü, dass nur die erste Ebene (Also Select * from structure where parent_id=0) und die die darunterliegende
des aktuell ausgewählten Bereichs anzeigt.
b) der Breadcrump, also alle Elternelemente der aktuellen
Seite bis zur Wurzel. Die Tiefe ist allerdings höchstens
6, wozu mir tatsächlich gerade nur ein rekursives Abfragen
einfallen würde.
Backend:
Hier wird zwar lesend der ganze Baum abgefragt. Allerdings
würde ich dazu mit SQL erstmal die ganze Struktur in ein
Array schreiben und das dann mit PHP strukturieren.
Ergo:
-----
Tatsächlich ist die Nested-Lösung für das Auslesen das
geschmeidigste und ich würde die Last im Frontend daher
zu ungunsten des Backends gering halten.
beste gruesse,
heinetz