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


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

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

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

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

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

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

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

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

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

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

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