Назад к вопросам
Junior — Middle
58
Какой подход или структура данных ты бы использовал для хранения и отображения семейного дерева в реляционной базе данных?
Компании, где спрашивали
Hftlabs
Ответ от нейросети
sobes.tech AI
Для хранения семейного дерева в реляционной базе данных часто используют структуру "Adjacency List" (список смежности). В таблице хранится каждая персона с указанием ссылки на родителя (например, поле parent_id).
Пример структуры таблицы:
| id | name | parent_id |
|---|---|---|
| 1 | Иван | NULL |
| 2 | Мария | 1 |
| 3 | Алексей | 1 |
Такой подход прост в реализации и позволяет строить дерево, рекурсивно запрашивая потомков или предков.
Для более сложных запросов можно использовать:
- Nested Sets — хранение левых и правых границ для быстрого поиска поддеревьев.
- Materialized Path — хранение пути к узлу в виде строки.
Но для большинства задач "Adjacency List" достаточно и хорошо поддерживается стандартными SQL-запросами.