家谱:关联数据库中的家庭关系

时间:2013-11-20 07:23:56

标签: database json database-design genealogy

家谱中的家谱算法如何完成?

例如,父母A有一个孩子B和C.所以,如果孩子C将来也生产一个孩子,那该怎么办?它是如何使用数据库添加到树中的?

我查看了Jit的RGraph树形图,它使用JSON数据填充树。我可能想通过从数据库中填充JSON来扩展树。但是,如果我向数据中添加更多子项,我无法弄清楚数据库的外观如何。我认为只有JSON才有可行。但是在动态数据方面我无法完全掌握。

什么样的模型/结构适合解决这类问题?

3 个答案:

答案 0 :(得分:4)

可能就是这么简单:

enter image description here

表示FOREIGN KEY的FK1和FK2(FATHER_ID引用PERSON_ID和MOTHER_ID也引用PERSON_ID)。如果未知,FATHER_ID和/或MOTHER_ID可以保留为NULL。

这种模式并不完美。例如,它不强制父母的性别(父亲是男性和母亲的女性),它只代表亲生父母,但不代表其他种类的关系,如收养(所有这些都可以做,但有一些复杂性,模型)。

然而,它非常简单,可以自然遍历(以递归方式),分析或导出。


  

例如,父母A有一个孩子B和C.所以,如果孩子C将来也生产一个孩子,那该怎么办?如何使用数据库添加到树中?

D的孩子C可以这样表示:

PERSON_ID FATHER_ID MOTHER_ID
A
B         A
C         A
D         C

如果C是母亲,可以这样:

PERSON_ID FATHER_ID MOTHER_ID
A
B         A
C         A
D                   C

答案 1 :(得分:0)

IMO它是一个具有一些扩展名的邻接列表模型。例如,要拥有2个父项,您只需添加一个特殊(结束)节点,或者您可以使用注释标记该节点。

答案 2 :(得分:0)

可以查看先前的帖子using GEDCOM model

我使用Union和Person表,两者都有一个共同的Union_ID键。在Person表中,这是指父母。在图表中,联盟可能有2个入境父母和无限数量的出境儿童。

相关问题