Re: дерево в базе
От: Au1  
Дата: 01.11.06 06:21
Оценка:
Здравствуйте, ha_sash, Вы писали:

_>Хочу узнать мнение людей с опытом,

_>на сколько недостатки подобного способа хранения, перевешивают его достоинства
_>)) (вот сказнул)

_>и вообще хранят ли деревья таким образом?



С точки зрения удобства работы с деревьями, хранящимися как куча элементов с ссылкой на родителя, все зависит от СУБД (ИМХО).

По крайней мере в Oracle можно написать вот такую штуку и она выберет все поддерево вершины с id = Param:

select *
from table_name
start with id = Param
connect by prior id = parent_id

Учите матчасть .

Транзитивное замыкание вместе с уровнем вложенности хранить тоже можно. В некоторых случаях полезно (например, когда надо быстро узнавать ответ на вопрос "Содержится ли А в поддереве Б") и дает выигрыш по скорости, если правильно построить потом индексы. Проблемы с ним, действительно, такие, что надо очень аккуратно следить за поддержкой этой структуры, например, с помощью триггера на основной таблице.

Короче, хорошо-плохо (приемлимо-неприемлимо) еще очень зависит от конкретной задачи, что потом надо будет делать с данными.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.