Я тут почитал статью о разных способах хранения дерева в базе и чойто задумалсо,
вот этот способ хранения вложенных множеств, не помню как его именно в статье
называли он хорош, только я его с трудом понимаю, а способ когда эелемент хранит
ссылку на предка он очень прост но у него при этом есть масса недостатков.
Когда то давно когда я не знал ничего про вложенные множества, как впрочем и про id, p_id
когда мне захотелось положить дерево в базу, я ничего проще (id, p_id) не выдумал.
Позже когда я понял что придетцо издеваца над базой при чтении целых веток я просто закалбасил
дополнительную таблицу которая хранила всех предков каждого элемента в дереве и их уровни вложенности.
это позволило, легко читать дерево, от любой ветки в любом направлении до любого уровня вложенности,
а так же легко получать любую информацию о количестве потомков.
при этом, процедура создания новых, или перемещания старых веток с одного места в другое осталась
такой же простой к тому же никакие вычисления или чобы то нибыло не выходило за пределы базы данных.
Вот два основных недостатка которые я вижу, это то что при получении списка потомков или родителей
приходица объединять в запросе две таблицы, и второе это жуткое дублирование хоть и ключей
но все же дублирование...
Хочу узнать мнение людей с опытом, :)
на сколько недостатки подобного способа хранения, перевешивают его достоинства
:))))) (вот сказнул)