Existem quatro métodos amplamente utilizados para fazer isso:
- Lista de adjacências
- Conjuntos aninhados
- Caminhos materializados
- Fechamento transitivo de uma lista de adjacências
Lista de adjacências (o do seu post) é o mais conveniente, porém requer um suporte para consultas recursivas que
MySQL
falta, embora possa ser emulado até certo ponto: