Junior — Middle
Kādu pieeju vai datu struktūru jūs izmantotu, lai glabātu un attēlotu ģimenes koku relāciju datu bāzē?
sobes.tech AI
Atbilde no AI
Для хранения семейного дерева в реляционной базе данных часто используют структуру "Adjacency List" (список смежности). В таблице хранится каждая персона с указанием ссылки на родителя (например, поле parent_id).
Пример структуры таблицы:
| id | name | parent_id |
|---|---|---|
| 1 | Иван | NULL |
| 2 | Мария | 1 |
| 3 | Алексей | 1 |
Такой подход прост в реализации и позволяет строить дерево, рекурсивно запрашивая потомков или предков.
Для более сложных запросов можно использовать:
- Nested Sets — хранение левых и правых границ для быстрого поиска поддеревьев.
- Materialized Path — хранение пути к узлу в виде строки.
Но для большинства задач "Adjacency List" достаточно и хорошо поддерживается стандартными SQL-запросами.