Вопрос проверяет понимание проектирования схемы базы данных для связи один ко многим на примере категорий.
При связи один ко многим, например, когда одна категория может содержать множество подкатегорий, оптимальным решением является хранение всех категорий в одной таблице с использованием внешнего ключа, ссылающегося на ту же таблицу. Это называется самоссылающейся связью или рекурсивным внешним ключом.
CREATE TABLE categories (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES categories(id)
);
-- Вставка корневой категории
INSERT INTO categories (id, name, parent_id) VALUES (1, 'Электроника', NULL);
-- Вставка подкатегории
INSERT INTO categories (id, name, parent_id) VALUES (2, 'Смартфоны', 1);Если иерархия строго фиксирована и неглубока (например, всего два уровня), можно рассмотреть отдельные таблицы для каждого уровня, но это менее гибко и усложняет поддержку. В большинстве случаев одна таблица с parent_id является стандартом.
Хранение категорий в одной таблице с самоссылающимся внешним ключом — это гибкое и нормализованное решение, подходящее для большинства приложений, где требуется поддержка иерархических данных.