Hallo David,
Erstmal kannst Du Dir das Level sparen. Das lässt sich berechnen. Zweitens kannst Du da zwei Ansätze wählen:
Adjacency List Model oder Nested Set Model.
Das erste geht in die Richtung die du angefangen hast. Vorteil: Leicht zu schreiben und zu updaten
Nachteil: schwer zu lesen
Nested Set Model hat genau die verkehrten Eingenschaften: Leicht zu lesen, schwer zu updaten.
Hier ein Beispiel das ziemlich genau zu Deinem Problem passt (aus dem Stackoverflow Artikel) und den Unterschied zwischen dem Adjacency List Model und dem Nested Set Model aufzeigt:
http://mikehillyer.com/articles/managing-hierarchica…
Da Nested Set Model ziemlich komisch ist hier noch ein guter Artikel dazu:
http://www.evanpetersen.com/item/nested-sets.html
Zu diesem Thema gibt es einen Haufen Erklärungen, hier nur mal als Referenz erwähnt:
http://falsinsoft.blogspot.nl/2013/01/tree-in-sql-da…
http://www.codeproject.com/Articles/4155/Improve-hie…
Zur Vollständigkeit gibt es noch Recursive SQL Abfragen und das Materialized Path Model. Allerdings ist Recursive SQL nur bei bestimmten Datenbanken verwendbar.
Auf Materialized Paths wird hier nochmal vergleichend eingegangen:
http://www.rampant-books.com/art_vadim_nested_sets_s…
letztendlich wäre das bei dir die Speicherung des ganzen Pfads als für ID 4 würde als ParentId (oder dann besser „Path“) stehen „0.2.4“. Damit wäre der ganze Pfad abgebildet und deine SQL Abfragen sind wesentlich einfacher.
Schreib gerne nochmal, wenn Du weiß welche Algorithmus du verwenden möchtest falls Du hilfe brauchst.
Grüße
CCarpo