Кассной сказал:
Вы должны использовать либо вложенные множества, либо модели типа «родители-потомки».
Я использовал для реализации их обоих. Что я мог сказать, это:
Используйте архитектуру вложенного множества, если ваша таблица категорий не меняется часто, потому что в предложении select это быстро, и только с одним запросом вы можете получить всю ветвь иерархии для данной записи. Но в предложении вставки или обновления требуется больше времени, чем родительской дочерней модели, чтобы обновить левый и правый (или нижний и верхний в примере ниже).
Еще один момент, довольно тривиальный, я должен признать, но:
Очень трудно изменить иерархию вручную непосредственно в базе данных (это может произойти во время разработки). Поэтому убедитесь, что сначала реализован интерфейс для воспроизведения с вложенным набором (смена родительского узла, перемещение узла ветвления, удаление узла или всей ветви и т. Д.)
Вот две статьи на эту тему:
Последнее, я не пробовал, но где-то читал, что в таблице вложенных множеств может быть несколько деревьев, я имею в виду несколько корней.