Há um artigo bonito em mysql.com descrevendo várias maneiras de gerenciar dados hierárquicos. Acho que fornece uma solução completa para sua pergunta e mostra várias abordagens menos simples, mas mais rápidas (por exemplo, conjuntos aninhados).