我有一个家谱数据库(实际上是关于绵羊),育种者用它来研究遗传信息.在每个记录中我存储了父亲和母亲.在一个单独的表中,我存储完整的"汇总"信息,以便我可以快速告诉任何动物的完整家谱,而无需通过整个数据库递归...
最近发现了SQL Server 2008中内置的hierarchyID类型,表面上看起来很有希望,但是我想知道是否有人使用它足以知道它是否适合我的应用程序类型(即两个父母,多个孩子)?到目前为止,我找到/读取的所有样本都处理经理/员工类型关系,其中给定的老板可以有多个员工,每个员工可以有一个老板.
我的应用程序的需求类似,但不完全相同.
我相信无论如何我都会深入研究这项新技术,但是如果有人已经知道它的设计不是以这种方式设计它可以让我使用它,那么将我的研究简化.
我也很好奇人们使用这种新数据类型与其他执行相同操作的方法所看到的性能.
假设每只绵羊有一个父母和一个母亲,并且没有羊可以成为它自己的父母(导致一个Ovine Temporal Paradox),那么使用两个HierarchyID呢?
CREATE TABLE dbo.Sheep( MotherHID hierarchyid NOT NULL, FatherHID hierarchyid NOT NULL, Name int NOT NULL ) GO ALTER TABLE dbo.Sheep ADD CONSTRAINT PK_Sheep PRIMARY KEY CLUSTERED ( MotherHID, FatherHID ) GO
通过使它们成为一个联合的PK,你将唯一地识别每只绵羊作为其母系等级的产物,并且它是父系的等级.
这里可能存在一些潜在的固有问题,因此请谨慎使用几个简单的原型 - 但最初似乎它对您有用.