Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 图形与关系数据库_.net_Database_C# 4.0_Graph_Family Tree - Fatal编程技术网

.net 图形与关系数据库

.net 图形与关系数据库,.net,database,c#-4.0,graph,family-tree,.net,Database,C# 4.0,Graph,Family Tree,我正在寻找最好的方法来存储和查询一个家谱(一个有着像家谱一样的关系的人的图形)到一个关系数据库中 我想,这可以通过使用图形数据库轻松实现,但我有一个强大的约束 我使用.NET和Microsoft技术,理想的情况可能是找到某种可以放在关系数据库之上的技术,以便两者可以同时使用 欢迎提出任何建议或建议 谢谢各位 丽安娜如果你有桌子 FamilyTree ---------- ID int not null PK, ParentID int, Name nvarchar(50)

我正在寻找最好的方法来存储和查询一个家谱(一个有着像家谱一样的关系的人的图形)到一个关系数据库中

我想,这可以通过使用图形数据库轻松实现,但我有一个强大的约束

我使用.NET和Microsoft技术,理想的情况可能是找到某种可以放在关系数据库之上的技术,以便两者可以同时使用

欢迎提出任何建议或建议

谢谢各位 丽安娜

如果你有桌子

FamilyTree
----------
ID       int not null PK,
ParentID int,
Name     nvarchar(50)
可以使用简单联接查询关系

这是如何让ID为@SearchPersonID的人的所有兄弟姐妹

select sibling.* from FamilyTree parent
inner join FamilyTree child
on parent.ID = child.ParentID
inner join FamilyTree sibling
on parent.ID = sibling.ParentID
where child.ID <> sibling.ID
where child.ID = @SearchPersonID
从FamilyTree父目录中选择同级。*
内部连接家庭树子
在parent.ID=child.ParentID上
内部连接家族树兄弟
在parent.ID=sibling.ParentID上
其中child.ID为sibling.ID
其中child.ID=@SearchPersonID
为了得到表亲,你需要两个级别的连接等


要得到一个完整的家庭树,事情变得有点复杂,但您可以使用a从给定的父对象生成所有的decentant。

因为任何给定的人只能有一个母亲和一个父亲(不一定都知道),所以您不需要有向图的广义表示。这样一个简单的“二进制”图就足够了:


查询兄弟姐妹、祖先、后代等。。。在这个模型中应该相当简单。

我认为有一个面向.Net的图形数据库。 它被称为
Sparql和LinQ作为一种查询手段。

gramps(http://gramps-project.org/)是一个开源软件(http://www.gramps-project.org/wiki/index.php?title=Portal:Developers)家谱平台。它是用python编写的,有在windows上工作的下载。根据您的动机(例如,为什么您需要它成为关系数据库),它可能会对您起到开箱即用的作用,或者您可能只想使用它来检查它的源代码。它有一个数据抽象层,因此可以与几个底层数据库一起工作(http://www.gramps-project.org/wiki/index.php?title=Using_database_API). 因此,您可以独立于gramps访问您使用的任何db。例如,您可以使用gramps加载所有数据以“生成”数据库,但随后将其单独用于查询。

当您说关系数据库时,您是指MS SQL server吗?您希望执行什么类型的查询?我使用的是MS SQL Server,但所有关系数据库都有这个问题。我希望能够检查一些简单的信息,比如两个人是否是彼此的祖父,或者他是否是他的表亲等等,是什么阻止了你在SQL中这样做?当然,可以使用SQL实现,但如果你愿意,我正在寻找一种更好或最简单的方法。谢谢你来StackOverflow!你认为BrightStarDB是一个针对.Net的图形数据库,还是你肯定知道?答案应该是:答案,不要猜测。请注意,我第一次出去的时候,我猜我自己。。。当然我猜错了。。。被我的同伴无情地否决了。此外,当提到这样的产品时,最好包含一个链接。“任何给定的人只能有一个母亲和一个父亲”-虽然从生物学角度来说是正确的,但它不包括收养和/或离婚/再婚(如继父)。