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

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

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

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

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

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

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

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

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

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

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

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

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


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