Создание таблицы с помощью типа данных hierarchyid
В следующем примере создается таблица EmployeeOrg, включающая данные о сотрудниках и их иерархическом подчинении. В этом примере в базе данных База данных AdventureWorks2008R2 создается таблица (что не обязательно). Для простоты эта таблица содержит только 5 столбцов.
OrgNode — это столбец типа hierarchyid, в котором хранятся иерархические связи.
OrgLevel — это вычисляемый столбец, основанный на столбце OrgNode, в котором хранятся данные об уровне каждого узла в иерархии. Эти данные будут использоваться для создания индекса по ширине.
Столбец EmployeeID содержит типичные идентификационные номера сотрудников, которые используются для таких задач, как расчет заработной платы. Новые приложения могут использовать столбец OrgNode, и этот отдельный столбец EmployeeID не требуется.
Столбец EmpName содержит имя сотрудника.
Столбец Title содержит должность сотрудника.
Создание таблицы «EmployeeOrg»
В окне редактора запросов выполните следующий программный код, чтобы создать таблицу EmployeeOrg. Если задать столбец OrgNode в качестве первичного ключа кластеризованного индекса, создается индекс по глубине:
USE AdventureWorks2008R2 ; 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
Таблица готова для записи данных. В результате выполнения следующего задания таблица будет заполнена данными с применением иерархических методов.