Gosto de usar o Caminho materializado , pois ele contém essencialmente sua trilha de navegação e facilita fazer coisas como selecionar todos os descendentes de um nó sem usar consultas recursivas.
Modelo de caminho materializado
A ideia com o modelo de caminho materializado é vincular cada nó na hierarquia com sua posição na árvore. Isso é feito com uma lista concatenada de todos os ancestrais de nós. Essa lista geralmente é armazenada em uma string delimitada. Observe o campo "Linage" abaixo.
CAT_ID NAME CAT_PARENT Lineage
1 Home .
2 product 1 .1
3 CD’s 2 .1.2
4 LP’s 2 .1.2
5 Artists 1 .1
6 Genre 5 .1. 5
7 R&B 6 .1. 5.6
8 Rock 6 .1. 5.6
9 About Us 1 .1
Percorrendo a tabela
Select lpad('-',length(t1.lineage))||t1.name listing
From category t1, category t2
Where t1.lineage like t2.lineage ||'%'
And t2.name = 'Home';
Order by t1.lineage;
Listagem
Home
-product
–CD’s
–LP’s
-Artists
–Genre
—R&B
—Rock
-About Us