Gestico un sito, tramite un mio CMS, il meccanismo è molto semplice, in pratica non esiste una gestione delle categorie e sottocategorie ma pracisamente la struttura viene creata sulla base di parentele (padre/figlio) questo mi permette di non avere limiti per categorie e sottocategorie.

il problema che si pone, dipende proprio da questo, infatti ogni record che rappresenta una pagina contiene al suo interno questi valori:

1)ID principale
2)ID di parentela (sarebbe l'ID principale a cui esso è imparentato)
3)Menù ID
... ecc...

se io ho 5 pagine imparentate così:

Codice PHP:
P0
|-->P01
    
|-->P011
    
|-->P012
P1
|-->P11
|-->P12 
in pratica, posso riconoscere le parentele di P01 e P12 che sono rispettivamente P0 e P1, ma se devo riconoscere a quale parentela, diciamo "radice" è imparentata la pagina P011 ??... come ci risalgo? infatti nel suo record ho l'ID di parentela che non è quella "radice" (P0)