Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенные множества: переподчинение узлов дерева / 7 сообщений из 7, страница 1 из 1
21.05.2002, 14:25:40
    #32030832
N.Alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
Уважаемые!

Организовал иерархическую структуру в виде вложенных множеств, т.е. имею таблицу:
id_key INT IDENTITY -- первичный ключ узла
lft INT -- левая граница множества
rgt INT -- правая граница множества, где lft<rgt
name CHAR(40) -- имя узла

Главный пункт
|
|---п.A
| |
| |---п.B
| |---п.С
|
|---п.D

Встала задача переподчинения п.A пункту D. А вот как написать изящный запрос (при этом же возможны блокировки), в каком направлении двигаться - сразу не соображу, а юзеры уже вот-вот требуют... Может, кто решал такую задачу?
...
Рейтинг: 0 / 0
21.05.2002, 15:42:24
    #32030838
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
Я сильно подозреваю, что при подобной структуре хранения дерева любая модификация структуры потребует выполнения нескольких запросов. В один UPDATE тут ника не уложишься.

Тебе ведь надо сделать следующее:

1. Освободить место для вставки нужного количества элементов
2. Перенумеровать перемещаемые узлы (lft, rgt)
3. Удалить возникшую вследствии перемещения "дырку"

Это, так сказать, общее направление. Более конкретно сказать не могу. Я организую хранение дерева по другому.
...
Рейтинг: 0 / 0
21.05.2002, 16:08:20
    #32030841
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
...
Рейтинг: 0 / 0
22.05.2002, 06:20:21
    #32030873
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
2 N.Alex

Поле с ссылкой "родителя" всё-таки лучше добавить. Хоть можно проверить будет то ли Вы сделали, что хотели.

А вообще такое хранение создаёт столько сложностей при обновлении, что мне кажется что это не оправдывает получамых удобств.
Сейчас мне кажется что лучше хранить структуру дерева в виде строчки наподобие имён файлов с директориями. Хотя и тут будут большие трудности с переподчинением.
Не знаю, как ни крути - всё горбато получается.
...
Рейтинг: 0 / 0
22.05.2002, 07:46:28
    #32030886
Ольга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
http://sdm.viptop.ru/articles/sqltrees.html
...
Рейтинг: 0 / 0
22.05.2002, 09:20:42
    #32030916
N.Alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
Отвечаю сам себе (нашёл ранее прикопанную ссылку).
http://www.osp.ru/win2000/sql/967.htm

Пожалуй, жаль, что на этапе проектирования стал использовать вложенные множества, хотя... предложения в http://sdm.viptop.ru/articles/sqltrees.html надо покрутить
...
Рейтинг: 0 / 0
22.05.2002, 09:35:33
    #32030922
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные множества: переподчинение узлов дерева
По поводу способа хранения, описанного в http://www.osp.ru/win2000/sql/967.htm

Я бы сказал, что это называется "хрен редьки не слаще". Единственное преимущество в том, что код уже написан. Не надо самому что-то выдумывать.

Если ты немного подумаешь, то сможешь организовать ту же функциональность и при своем способе хранения. Только придется все писать самому.

Я уже кажется говорил, что способов хранения древовидных структур очень много. Но большинство из них имеют серьезные недостатки или в сопровождении или при выборке из них данных.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенные множества: переподчинение узлов дерева / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]