使用 hierarchyid 数据类型创建表

下例创建了一个名为 EmployeeOrg 的表,该表包含雇员数据及其报告层次结构。本例在 AdventureWorks 数据库中创建该表,但这是可选操作。为简化本例,该表仅包含五列:

  • 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. 运行下面的代码,对 OrgLevelOrgNode 列创建组合索引,以便支持高效的广度优先搜索:

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

现在即可为该表填充数据。下一个任务将通过使用分层方法来填充该表。

课程中的下一个任务

使用分层方法填充层次结构表