Veri türü hierarchyid kullanarak bir tablo oluşturma
Aşağıdaki örnek, adlı bir tablo oluşturur EmployeeOrg, kendi raporlama hiyerarşisi ile birlikte çalışan verilerini içerir. Tabloda örnek oluşturur AdventureWorks2012 veritabanı, ancak isteğe bağlı. Örnek basit tutmak için bu tablo sadece beş sütun içerir:
OrgNodeolan bir hierarchyidhiyerarşik ilişki depolar sütun.
OrgLevelgöre hesaplanan bir sütun OrgNodesütun hiyerarşisinde her düğüm düzeyinde saklar. Etki derecesini elde ilk dizin için kullanılacaktır.
EmployeeIDBordro gibi uygulamalar için kullanılan normal çalışan kimlik numarası içerir. Yeni uygulama geliştirme uygulamaları kullanabilirsiniz OrgNodesütun ve bu ayrı EmployeeIDsütun gerekli değildir.
EmpNameçalışanın adını içerir.
Titleçalışanın unvanını içerir.
EmployeeOrg tablo oluşturmak için
Sorgu Düzenleyicisi penceresinde, oluşturmak için aşağıdaki kodu çalıştırın EmployeeOrgtablosu. Belirtme OrgNodesütun kümelenmiş bir dizin birincil anahtarla bir derinliği ilk dizin oluşturur:
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 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
Bir bileşik dizini oluşturmak için aşağıdaki kodu çalıştırın OrgLevelve OrgNodesütunları verimli Etki derecesini elde ilk aramaları desteklemek için:
CREATE UNIQUE INDEX EmployeeOrgNc1 ON HumanResources.EmployeeOrg(OrgLevel, OrgNode) ; GO CREATE UNIQUE INDEX EmployeeOrgNc1 ON HumanResources.EmployeeOrg(OrgLevel, OrgNode) ; GO
Tablo için veri artık hazırdır. Sonraki görev, hiyerarşik yöntemleri kullanarak tablo yerleştirilecektir.
Ders sonraki görev
Hiyerarşik yöntemleri kullanarak hiyerarşik bir tablo doldurma