Middle — Middle+
139
Πώς μπορεί να υλοποιηθεί η αποθήκευση και η εμφάνιση της δομής ενός γενεαλογικού δέντρου σε μια σχεσιακή βάση δεδομένων;
Εταιρείες όπου ρωτήθηκαν
Hftlabs
Απάντηση από 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 (если СУБД поддерживает), чтобы получить иерархию.