Встречается на собеседованиях • сегодня
Как передать генеалогическое древо в реляционную базу данных
Для хранения генеалогического древа в реляционной БД можно использовать несколько подходов:
- Adjacency List (список смежности) - простейший способ, где каждый узел хранит ссылку на родителя:
sql
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(100),
parent_id INT REFERENCES person(id)
);Недостаток - сложные запросы для поиска предков/потомков.
- Path Enumeration - хранение полного пути к узлу (например, "1/4/7"):
sql
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(100),
path VARCHAR(255)
);Упрощает поиск предков, но сложно поддерживать при изменениях.
- Closure Table - отдельная таблица связей:
sql
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE tree_path (
ancestor INT REFERENCES person(id),
descendant INT REFERENCES person(id),
depth INT,
PRIMARY KEY (ancestor, descendant)
);Наиболее гибкий вариант, но требует больше места.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы