Junior — Middle
Qual approccio o struttura dati utilizzeresti per memorizzare e visualizzare un albero genealogico in un database relazionale?
sobes.tech AI
Risposta dell'AI
Для хранения семейного дерева в реляционной базе данных часто используют структуру "Adjacency List" (список смежности). В таблице хранится каждая персона с указанием ссылки на родителя (например, поле parent_id).
Пример структуры таблицы:
| id | name | parent_id |
|---|---|---|
| 1 | Иван | NULL |
| 2 | Мария | 1 |
| 3 | Алексей | 1 |
Такой подход прост в реализации и позволяет строить дерево, рекурсивно запрашивая потомков или предков.
Для более сложных запросов можно использовать:
- Nested Sets — хранение левых и правых границ для быстрого поиска поддеревьев.
- Materialized Path — хранение пути к узлу в виде строки.
Но для большинства задач "Adjacency List" достаточно и хорошо поддерживается стандартными SQL-запросами.