Реферат: Иерархические справочники с линейным временем доступа

@ParentPosition INT,

@RealParentPosition INT

BEGIN

IF UPDATE(Path)

BEGIN

SELECT @OldParentPath = Path FROM deleted

SELECT @NewParentPath = Path, @ParentPosition = Position FROM inserted

-- если поле Position некорректно, то обновляем его согласно Path

SELECT @RealParentPosition = CAST(RIGHT(@NewParentPath,

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 на подчиненные и соседние узлы. При этом теряется главное достоинство алгоритма – линейная скорость вставки. Поэтому, если предметная область не требует показа классификатора пользователям, можно сохранять отдельно позиции в последовательности подчиненных элементов.

У иерархического справочника, построенного по описанному принципу, как, собственно, и у всех известных алгоритмов построения иерархий в реляционной системе, есть свои недостатки. С его помощью нельзя создавать иерархии с очень большой глубиной. Для таких задач существуют другие алгоритмы. Однако для большинства бизнес-приложений он не только пригоден, но и обладает такими достоинствами, как быстрота работы и простота использования.

К-во Просмотров: 271
Бесплатно скачать Реферат: Иерархические справочники с линейным временем доступа