我有一个系谱数据库(约羊实际上),所使用的育种研究遗传信息。在每个记录我存储fatherid和motherid。在一个单独的表我完全保存“卷起”的信息,以便我能很快告诉任何动物的完整的家谱,而不递归直通整个数据库...

最近发现内置到SQL Server 2008中的hierarchicalID型,表面上听起来前途,但我和我想知道是否有人已经用它足以知道它是否会是我喜欢的类型的应用程序(即父母双方合适,多个孩子)?所有的样品,我发现/读到目前为止处理经理/员工类型的关系,其中一个给定的老板可以有多个员工,每个员工可以有一个老板。

我的应用程序的需求是相似的,但并不完全一样。

我相信,我会深入探讨这项新技术,无论如何,但如果有人已经知道,它不是以这样的方式设计的,它可以让我利用它,它会是不错的快捷方式我的研究。

我也很好奇,什么样的表现的人都在使用这种新的数据类型与做同样的事情其他方法看到的。

有帮助吗?

解决方案

我看不出它是如何工作的;以规则的层次结构,有一个单一的链到根,所以它可以存储的路径(这是二元的)到每个节点。然而,随着多个父,这是不可能的:即使你拆母系社会和partiarchy,你还有1个母亲,祖母2,4曾祖母等(甚至没有进入一些更“有趣” scanerios的可能的,特别是与家畜)。还有就是编码没有单一的逻辑路径,所以没有:我不认为这可以在你的情况下工作。

我很高兴地被校正,虽然。

其他提示

假设每只羊具有一个父本和一个母本,并且知道没有羊可以是它自己的父(导致绵羊时间悖论),然后在约使用两个HierarchyIDs什么?

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,你会唯一地识别每个羊作为其母体的层次结构和它的层次结构父本的产物。

有可能是潜伏在这里一些固有的问题,所以用几个简单的原型谨慎行事 - 但最初它看起来像它会为你工作。

使用两个独立的HIERARCHYID指示的父亲和母亲将工作做好。

但是,你肯定不希望使用它们作为行的唯一指标,因为它是一个2一对多的情况。 (两只羊可以有多个孩子。)

我看不出有什么内在的错误使用HierarchyId的祖先为 - 至少羊。对于人来说,关系要复杂得多“这个人是生的人”,所以很明显的使用将被限制在滋生。

SQL服务器HIERARCHYID不是很多族谱分析问题,一个强大的解决方案。它是基于ORDPATH,我已经使用了一段时间的家谱;但也有族谱太多的情况下,不能用ORDPATH方法向无环图很容易解决。图形数据库是更强大,非常适合于家谱。我使用的Neo4j: http://stumpf.org/genealogy-blog/graph-数据库功能于家谱

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top