Поделиться через


Создание таблицы с помощью типа данных hierarchyid

В следующем примере создается таблица EmployeeOrg, содержащая данные о сотрудниках с их иерархией отчетов. В этом примере в базе данных AdventureWorks2012 создается таблица (что не обязательно). Для простоты эта таблица содержит только 5 столбцов.

  • OrgNode — это столбец типа hierarchyid, в котором хранятся иерархические связи.

  • OrgLevel — это вычисляемый столбец, основанный на столбце OrgNode, в котором хранятся данные об уровне каждого узла в иерархии. Эти данные будут использоваться для создания индекса по ширине.

  • Столбец EmployeeID содержит идентификаторы сотрудников, используемые для таких задач, как расчет заработной платы. Новые приложения могут использовать столбец OrgNode, и этот отдельный столбец EmployeeID не требуется.

  • Столбец EmpName содержит имя сотрудника.

  • Столбец Title содержит должность сотрудника.

Создание таблицы «EmployeeOrg»

  1. В окне редактора запросов выполните следующий программный код, чтобы создать таблицу 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
    
  2. Чтобы создать составной индекс по столбцам OrgLevel и OrgNode для эффективного поиска в ширину, выполните следующий код:

    CREATE UNIQUE INDEX EmployeeOrgNc1 
    ON HumanResources.EmployeeOrg(OrgLevel, OrgNode) ;
    GO
    

Таблица готова для записи данных. В результате выполнения следующего задания таблица будет заполнена данными с применением иерархических методов.

Следующая задача занятия

Заполнение иерархической таблицы с помощью иерархических методов