TreeMenü über 3 Ebenen

Arndtinho

Erfahrenes Mitglied
Hallo,

wie baut man am günstigsten die Datenbank bzw. Tabellenstruktur für ein TreeMenü über 3 Ebenen auf? Ich habe mir ein TreeMenü über 2 Ebenen (eine Top- und eine Subebene) erstellt. Das funktioniert auch ganz gut. Dafür verwende ich zwei Tabellen:

1.Tabelle - 'topitems'
id
description

2.Tabelle - 'subitems'
id
topitem_id
description

Nun möchte ich das Menü um eine Ebene erweitern, ohne dabei Nested Sets verwenden zu müssen. Gibt es da eine Möglichkeit oder komme ich um Nested Sets nicht drumherum?

Gruß,
Arndtinho
 
Ich würde mich nicht durch das Datenmodell auf 2 oder 3 Ebenen festlegen lassen. Besser wäre es alle Einträge in eine Tabelle zu schreiben und untereinander zu verlinken. Somit ist theoretisch eine beliebige Tiefe des Menüs möglich.

Code:
id
parent_id
level
description

Die ID ist der Primärschlüssel, parent_id der Verweis auf das übergeordnete Element. Steht das Element an oberster Stelle sollte Parent_ID entweder gleich der ID sein, oder NULL.
Mit der Level Spalte kannst dus dir fürs Auslesen ein bisschen leichter machen, manche Datenbanken wie Oracle liefern das Level aber bei rekursiven Abfragen automatisch mit. Blöd ist an der Spalte auch die Aktualisierung, wenn du Datensätze mitten in die Baumstruktur einpflegst, also gut nachdenken ob du sie brauchst oder nicht.

Ein dreistufiger Baum sieht dann also so aus:

Code:
                        ID,    ParentID,   Level
                        ========================
+ Eintrag 1             1      1           0
|  |
|  + Eintrag 2          2      1           1
|  |  |
|  |  + Eintrag 6       6      2           2
|  |  
|  + Eintrag 3          3      1           1
|     |
|     + Eintrag 4       4      3           2
|
+ Eintrag 5             5      5           0
 
Zurück