Встречается на собеседованиях • сегодня

Можно ли передать генеалогическое древо в реляционную базу данных

Да, можно. Для хранения иерархических данных в реляционных БД есть несколько подходов:

  1. Adjacency List (список смежности) - простейший способ, где каждый узел хранит ссылку на родителя:
sql
CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    parent_id INT REFERENCES person(id)
);
  1. Materialized Path (материализованный путь) - хранит полный путь от корня:
sql
CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    path VARCHAR(255) -- например "/1/4/7/"
);
  1. Nested Sets (вложенные множества) - сложнее для модификации, но эффективен для выборок:
sql
CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    lft INT,
    rgt INT
);

Выбор зависит от частоты операций (чтение/запись) и сложности запросов. Для простых случаев подойдет Adjacency List, для сложных аналитических запросов - Nested Sets.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы