Junior — Middle
Que abordagem ou estrutura de dados você usaria para armazenar e exibir uma árvore genealógica em um banco de dados relacional?
sobes.tech IA
Resposta da IA
Para armazenar uma árvore familiar numa base de dados relacional, costuma-se usar a estrutura de "Lista de Adjacência". Na tabela, cada pessoa é armazenada com uma referência ao seu pai (por exemplo, o campo parent_id).
Exemplo de estrutura da tabela:
| id | nome | parent_id |
|---|---|---|
| 1 | Ivan | NULL |
| 2 | Maria | 1 |
| 3 | Alexei | 1 |
Esta abordagem é simples de implementar e permite construir uma árvore consultando recursivamente os descendentes ou ascendentes.
Para consultas mais complexas, pode-se usar:
- Conjuntos Aninhados — armazenamento dos limites esquerdo e direito para procurar rapidamente subárvores.
- Caminho Materializado — armazenamento do caminho até o nó em forma de string.
Mas para a maioria das tarefas, a "Lista de Adjacência" é suficiente e bem suportada por consultas SQL padrão.