Middle — Middle+
145
Hoe kan het opslaan en weergeven van de structuur van een stamboom in een relationele database worden geïmplementeerd?
Bedrijven waar gevraagd werd
Hftlabs
Antwoord van AI
sobes.tech AI
Для хранения и отображения генеалогического дерева в реляционной базе данных можно использовать несколько подходов:
- Adjacency List (Список смежности) — каждая запись содержит ссылку на родителя:
CREATE TABLE Person (
id INT PRIMARY KEY,
name VARCHAR(100),
parent_id INT NULL,
FOREIGN KEY (parent_id) REFERENCES Person(id)
);
-
Nested Sets (Вложенные множества) — каждому узлу присваиваются значения left и right, позволяющие быстро извлекать поддеревья.
-
Materialized Path (Материализованный путь) — хранится путь от корня до узла в виде строки, например, '1/4/6'.
Для отображения дерева обычно рекурсивно выбирают записи, начиная с корня (parent_id = NULL), и строят структуру в памяти приложения.
В Java можно использовать рекурсивные методы или SQL с рекурсивными CTE (если СУБД поддерживает), чтобы получить иерархию.