Я хочу представить рекурсивные отношения родитель-потомок в базе данных MySQL. Я хочу создать отношения category
- subcategory
. Категория может иметь N подкатегорий, и каждая из них может иметь N подкатегорий и так далее. Я думал о наличии одной таблицы category
с внешним ключом, указывающим на себя. Вот что я имею в виду:SQL Database Design, рекурсивные отношения родитель-ребенок?
CREATE TABLE `category` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_category` int NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`parent_category`) REFERENCES `category` (`id`)
)
parent_category
может быть пустым, если категория является категорией верхнего уровня.
Это правильный способ представления таких отношений? Также есть ли другие вещи, которые я должен учитывать в своем дизайне (производительность, запросы ...)?
возможно дубликат [SQL - Как хранить и навигации по иерархиям] (http://stackoverflow.com/questions/38801/sql -how-to-store-and-navigate-hierarchies) –
Из-за ограниченных возможностей SQL SQL, я бы так не делал этого в MySQL. Из-за отсутствия рекурсивных запросов у вас будет очень трудно получить данные из этой иерархии. Найдите «модель вложенного набора» для другого дизайна, который может быть реализован с помощью MySQL –