Junior — Middle
Welke aanpak of datastructuur zou je gebruiken om een stamboom op te slaan en weer te geven in een relationele database?
sobes.tech AI
Antwoord van AI
Для хранения семейного дерева в реляционной базе данных часто используют структуру "Adjacency List" (список смежности). В таблице хранится каждая персона с указанием ссылки на родителя (например, поле parent_id).
Пример структуры таблицы:
| id | name | parent_id |
|---|---|---|
| 1 | Иван | NULL |
| 2 | Мария | 1 |
| 3 | Алексей | 1 |
Такой подход прост в реализации и позволяет строить дерево, рекурсивно запрашивая потомков или предков.
Для более сложных запросов можно использовать:
- Nested Sets — хранение левых и правых границ для быстрого поиска поддеревьев.
- Materialized Path — хранение пути к узлу в виде строки.
Но для большинства задач "Adjacency List" достаточно и хорошо поддерживается стандартными SQL-запросами.