Ответ 1
Вложенная модель набора в настоящее время обычно не используется в базах данных, поскольку она более сложна, чем модель списка адаптаций, учитывая тот факт, что она требует управления двумя "указателями" вместо одного. Фактически, модель вложенных наборов была введена в базы данных, когда было сложно или невозможно выполнить рекурсивные запросы, пересекающие иерархию.
С 1999 года стандартный SQL включает в себя так называемые рекурсивные общие выражения таблицы или рекурсивный CTE, который делает более простой (и стандартизованный!) запрос запросов, которые пересекают рекурсивный путь в иерархии с любым количеством уровней.
Все основные СУБД теперь включили эту функцию с заметным исключением: MySQL. Но в MySQL вы можете решить эту проблему с помощью хранимых процедур. См., Например, fooobar.com/info/168188/... или этот пост на dba.stackexchange.
Итак, вкратце, это мои советы:
- Если вы все еще можете решить, какую СУБД использовать, рассмотрите несколько альтернатив: например, если вы хотите придерживаться базы данных с открытым исходным кодом, используйте PostgreSQL, используйте модель списка адаптаций и перейдите к рекурсивным CTE для своих запросов.
- Если вы не можете изменить СУБД, все равно вы должны пойти с моделью списка соответствий и использовать хранимые процедуры, как указано в ссылках.
UPDATE
Эта ситуация меняется с MySQL 8, который в настоящее время находится в разработке и который будет интегрировать рекурсивные CTE, так что из этой версии вложенный набор Модель будет более простой в использовании.