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