Ce genre de ceci est probablement mieux adapté pour un graphe style de magasin de données. Quelque chose qui ressemble à la façon dont Facebook maintient des hiérarchies de relations.
Si vous êtes lié et déterminé à utiliser MySQL, vous pourriez probablement vous en sortir avec votre schéma en utilisant une recherche récursive. Étant donné que votre arbre peut être de profondeur variable, vous pouvez commencer à vous joindre à un emplacement donné et "parcourir" une branche en répétant jusqu'à ce que vous ne trouviez plus de descendants. Retournez cette branche et commencez par la suivante. Processus similaire pour traverser pour trouver des parents.