Создание таблицы с помощью типа данных hierarchyid
В следующем примере создается таблица EmployeeOrg, включающая данные о сотрудниках и их иерархическом подчинении. В этом примере в базе данных AdventureWorks создается таблица (что не обязательно). Для простоты эта таблица содержит только 5 столбцов.
OrgNode — это столбец типа hierarchyid, в котором хранятся иерархические связи.
OrgLevel — это вычисляемый столбец, основанный на столбце OrgNode, в котором хранятся данные об уровне каждого узла в иерархии. Эти данные будут использоваться для создания индекса преимущественно в ширину.
Столбец EmployeeID содержит типичные идентификационные номера сотрудников, которые используются для таких задач, как расчет заработной платы. Новые приложения могут использовать столбец OrgNode, и этот отдельный столбец EmployeeID не требуется.
Столбец EmpName содержит имя сотрудника.
Столбец Title содержит должность сотрудника.
Создание таблицы «EmployeeOrg»
Чтобы создать таблицу EmployeeOrg, выполните в окне редактора запросов следующий код. Если задать столбец OrgNode в качестве первичного ключа кластеризованного индекса, создается индекс преимущественно в глубину:
USE AdventureWorks GO CREATE TABLE HumanResources.EmployeeOrg ( OrgNode hierarchyid PRIMARY KEY CLUSTERED, OrgLevel AS OrgNode.GetLevel(), EmployeeID int UNIQUE NOT NULL, EmpName varchar(20) NOT NULL, Title varchar(20) NULL ) ; GO
Чтобы создать составной индекс по столбцам OrgLevel и OrgNode для эффективного поиска в ширину, выполните следующий код:
CREATE UNIQUE INDEX EmployeeOrgNc1 ON HumanResources.EmployeeOrg(OrgLevel, OrgNode) ; GO
Таблица готова для записи данных. В результате выполнения следующего задания таблица будет заполнена данными с применением иерархических методов.