Di solito consiglio un design chiamato Tabella di chiusura .
Vedi esempio nella mia risposta a Qual è il modo più efficiente/elegante per trasformare un tavolo piatto in un albero?
Ho anche progettato questa presentazione:Modelli per dati gerarchici con SQL e PHP . Ho sviluppato un'app PHP che esegue il rendering di un albero in 0,3 secondi, da una raccolta di dati gerarchici con 490.000 nodi.
Ho bloggato su Closure Table qui:Rendering di alberi con chiusura Tabella .
Ho scritto un capitolo sulle diverse strategie per i dati gerarchici nel mio libro, SQL Antipatterns:Evitare il Insidie della programmazione di database .