0

У меня есть некоторые объекты, которые помечены под разными категориями. Однако некоторые категории имеют различные подкатегории (до двух уровней), но иерархия неравномерна - некоторые с высотами 1 - 2.Реляционные базы данных - Моделирование неуравновешенной иерархии

Моя идея состояла в том, чтобы создать отдельную таблицу для каждой категории и по одному для каждого из уровней, затем свяжите идентификатор объекта с листом, однако он не выглядит очень эффективным.

Любовь, чтобы услышать ваши мысли!

ответ

1

Существует более гибкая конструкция:

enter image description here

При поиске лиц, принадлежащих к данной категории, первая поиск в категории для всех своих подкатегорий, подразделы подкатегорий и т.д. В зависимости в СУБД это можно было бы сделать в одном рекурсивном запросе.

После того, как у вас есть все категории в иерархии, просто присоединитесь к CATEGORY_ENTITY и ENTITY и отфильтруйте эти идентификаторы CATEGORY_ID.

BTW, должно ли название категории быть уникальным в глобальном масштабе или только среди братьев и сестер? В зависимости от этого вы можете добавить ограничение UNIQUE на NAME или {PARENT_ID, NAME} соответственно.


Но проверить, как СУБД обрабатывает NULLs в композитных UNIQUE ограничений.

Смежные вопросы