Je recommande généralement une conception appelée Table de fermeture .
Voir l'exemple dans ma réponse à Quelle est la manière la plus efficace/élégante d'analyser une table plate dans un arbre ?
J'ai également conçu cette présentation :Modèles pour les données hiérarchiques avec SQL et PHP . J'ai développé une application PHP qui rend un arbre en 0,3 seconde, à partir d'une collection de données hiérarchiques avec 490 000 nœuds.
J'ai blogué sur la table de fermeture ici :Rendu des arbres avec fermeture Tableau .
J'ai écrit un chapitre sur les différentes stratégies pour les données hiérarchiques dans mon livre, Antipatterns SQL :éviter les Les pièges de la programmation de base de données .