Il y a un Bel article sur mysql.com décrivant les différentes manières de gérer les données hiérarchiques. Je pense qu'il fournit une solution complète à votre question et montre diverses approches moins simples, mais plus rapides (par exemple, les ensembles imbriqués).