Yo suelo recomendar un diseño llamado Tabla de Cierre .
Vea el ejemplo en mi respuesta a ¿Cuál es la forma más eficiente/elegante de convertir una mesa plana en un árbol?
También diseñé esta presentación:Modelos para datos jerárquicos con SQL y PHP . Desarrollé una aplicación PHP que representa un árbol en 0,3 segundos, a partir de una colección de datos jerárquicos con 490k nodos.
Escribí en un blog sobre Closure Table aquí:Rendering Trees with Closure Mesa .
Escribí un capítulo sobre diferentes estrategias para datos jerárquicos en mi libro, SQL Antipatterns:Avoiding the Peligros de la programación de bases de datos .