CHARINDEX('.', REVERSE(@NewParentPath)) - 1) AS INT)
IF (@RealParentPosition
<> @ParentPosition)
UPDATE DEPARTMENT
SET Position =
@RealParentPosition
WHERE Path = @NewParentPath
-- обновляем все дочерние элементы
UPDATE DEPARTMENT
SET Path = STUFF(Path, 1, LEN(@OldParentPath), @NewParentPath)
WHERE Path LIKE
@OldParentPath+'.%'
END
END
Некоторые дополнения
Одним из полезных свойств данного алгоритма является
возможность сортировать данные согласно иерархии. Это очень полезное и часто
используемое свойство. Если достаточно часты обращения согласно иерархии, и
если позволяет используемая СУБД, стоит хранить таблицу в состоянии, сортированном по полю Path.
Если вы хотите сортировать последовательность
непосредственно подчиненных элементов, то можно ввести дополнительную цифру, в
которой будет лежать количество цифр в элементе. Например, для Position c
номером 2 идентификатор в Path будет равен 12, где 1 – количество символов в
идентификаторе. А если Position равен 12, то идентификатор будет равен 212. В
этом случае сортировка строковых данных будет совпадать с последовательностью
числовых, и мы получим полностью сортированный Path.
Гораздо хуже обстоит дело, если нужно реализовать
операцию вставки. Если адаптировать все Path на подчиненные и соседние узлы.
При этом теряется главное достоинство алгоритма – линейная скорость вставки.
Поэтому, если предметная область не требует показа классификатора
пользователям, можно сохранять отдельно позиции в последовательности
подчиненных элементов.
У иерархического справочника, построенного по
описанному принципу, как, собственно, и у всех известных алгоритмов построения
иерархий в реляционной системе, есть свои недостатки. С его помощью нельзя
создавать иерархии с очень большой глубиной. Для таких задач существуют другие
алгоритмы. Однако для большинства бизнес-приложений он не только пригоден, но и
обладает такими достоинствами, как быстрота работы и простота использования.
Скачали данный реферат: Беленков, Круминьш, Koval'chuk, Мичуев, Izmaragd, Эверлаков, Pushnoj.
Последние просмотренные рефераты на тему: контрольная работа 9, сочинение почему, банк курсовых работ бесплатно, контрольная по русскому.