'Nabend Angelina.
Abgesehen davon, daß ich...
(Kategorie:) Hauptkategorie1 (Ebene:0)
Hauptkategorie1|Kategorie1 (1)
Hauptkategorie1|Kategorie1|Unterkategorie1 (2)
... für ziemlich schlechtes Datenbankdesign halte, verstehe ich dein Problem nicht so recht. Wenn die Datenbank nicht "weiß", welche Kategorien es gibt, wer soll es dann wissen und somit ggf. ergänzen? An irgendeiner Stelle muß das doch verbindlich festgelegt worden sein.
Wichtiger ist es meiner Meinung nach, zu verhindern, daß andere Programme oder Programmteile diese Informationen aus der Datenbank löschen bzw. bloß solche lückenhaften Informationen einfügen!
Zum Datenbankdesign:
Wenn ich dein Beispiel richtig deute, speicherst du den kompletten Pfad einer Kategorie vom Root aus als Zeichenkette in der Datenbank. Damit erzeugst du unnötigerweise redundante Daten. Außerdem führst es zu Problemen, z.B. wenn du eine Kategorie umbenennen oder verschieben möchtest. Statt dessen würde ich dir ein Eltern-Kind-Modell vorschlagen: Jede Kategorie wird in der Datenbank dargestellt durch einen Namen, eine ID und die ID der Elternkategorie.
Falls sich deine Menüstruktur nicht so häufig ändert, d.h. die meiste Zeit über _lesend_ darauf zugegriffen wird, kann ich dir Nested Sets als Alternative ans Herz legen. Damit lassen sich Baumstrukturen sehr elegant darstellen und mit Queries aus der Datenbank holen. :)