使用 hierarchyid 数据类型创建表
下例创建了一个名为 EmployeeOrg 的表,该表包含雇员数据及其报告层次结构。本例在 AdventureWorks 数据库中创建该表,但这是可选操作。为简化本例,该表仅包含五列:
OrgNode 是一个存储层次结构关系的 hierarchyid 列。
OrgLevel 是一个计算列,它基于存储层次结构中的各节点级别的 OrgNode 列。它将用于广度优先索引。
EmployeeID 包含用于诸如工资单等应用程序的典型雇员标识号。在新应用程序的开发过程中,应用程序可以使用 OrgNode 列,不需要这个单独的 EmployeeID 列。
EmpName 包含雇员的姓名。
Title 包含雇员的职位。
创建 EmployeeOrg 表
在查询编辑器窗口中,运行下面的代码来创建 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
运行下面的代码,对 OrgLevel 和 OrgNode 列创建组合索引,以便支持高效的广度优先搜索:
CREATE UNIQUE INDEX EmployeeOrgNc1 ON HumanResources.EmployeeOrg(OrgLevel, OrgNode) ; GO
现在即可为该表填充数据。下一个任务将通过使用分层方法来填充该表。