Carregando dados da hierarquia
Hierarquias irregulares com níveis n geralmente são usadas para representar dimensões geográficas ou organizacionais em dados, entre outras coisas.
Estes tipos de hierarquias são geralmente armazenados em uma tabela de nós adjacentes, isto é, em uma tabela na qual cada registro corresponde a um nó e tem um campo que contém uma referência ao nó pai.
NodeID | ParentNodeID | Título |
---|---|---|
1 | - | Gerente geral |
2 | 1 | Gerente regional |
3 | 2 | Gerente de sucursal |
4 | 3 | Gerente de departamento |
Em uma tabela como essa, o nó é armazenado em apenas um registro, mas ainda pode ter um número indefinido de filhos. A tabela pode conter campos adicionais que descrevem atributos para os nós.
Uma tabela de nós adjacentes é fácil de manter, mas difícil de usar em trabalhos do dia-a-dia. Em vez disso, em consultas e análises, outras representações são usadas. A tabela de nós expandidos é uma representação comum, na qual cada nível da hierarquia é armazenado em um campo separado. Os níveis de uma tabela de nós expandidos podem ser facilmente utilizados, por exemplo, em uma estrutura de árvore. A palavra-chave hierarchy pode ser usada no script de carregamento de dados para transformar uma tabela de nós adjacentes em uma tabela de nós expandidos.
Exemplo:
NodeID | ParentNodeID | Título | Title1 | Title2 | Title4 | Title4 |
---|---|---|---|---|---|---|
1 | - | Gerente geral | Gerente geral | - | - | - |
2 | 1 | Gerente regional | Gerente geral | Gerente regional | - | - |
3 | 2 | Gerente de sucursal | Gerente geral | Gerente regional | Gerente de sucursal | - |
4 | 3 | Gerente de departamento | Gerente geral | Gerente regional | Gerente de sucursal | Gerente de departamento |
Um dos problemas da tabela de nós expandidos é que não é fácil usar os campos de nível para realizar pesquisas ou seleções, já que é necessário ter um conhecimento prévio sobre o nível que se deseja pesquisar ou selecionar. A tabela de ancestrais é uma representação diferente que resolve esse problema. Essa representação também é chamada de tabela de ponte.
A tabela de ancestrais contém um registro para cada relação filho-ancestral encontrada nos dados. Ela contém as chaves e os nomes dos filhos e dos ancestrais. Ou seja, cada registro descreve a qual nó um nó específico pertence. A palavra-chave hierarchybelongsto pode ser usada no script de carga de dados para transformar uma tabela de nós adjacentes em uma tabela de ancestrais.