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

3
如何在家谱中实现算法?
例如,父母A有子女B和C。那么,如果子女C将来也有孩子,它将如何通过数据库添加到树中?
我查看了Jit的RGraph树形图,它使用JSON数据填充树形图。我可能想通过从数据库填充JSON来扩展树形图。但是,如果要向数据添加更多子项,我无法弄清楚数据库应该是什么样子的。如果仅针对JSON,则我认为这是可行的。但是当涉及到动态数据时,我无法完全掌握。
哪种模型/结构适合解决这种问题?
3个回答

4
这可能就像这样简单:
FK1和FK2表示FOREIGN KEYs(FATHER_ID参考PERSON_ID,MOTHER_ID也参考PERSON_ID)。如果未知,FATHER_ID和/或MOTHER_ID可以保留为空。
该模型并不完美。例如,它不能强制执行父母的性别(父亲是男性,母亲是女性),它仅代表生物父母,而不是其他类型的关系,比如收养(所有这些都可以实现,但模型会有一定的复杂性)。
然而,它非常简单,并且可以自然地遍历(以递归方式),分析或导出。
例如,Parent A有Children B和C。那么,如果Children C将来也要生一个孩子,它将如何添加到数据库中的树形结构中?
可以像这样表示C的孩子D:
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

0

可能需要查看之前的帖子使用GEDCOM模型

我在Union和Person表中使用了一个共同的Union_ID键。在Person表中,它指的是父母。在图表中,Union可能有2个入站父母和无限数量的出站子女。


0

在我看来,这是一种带有扩展的邻接表模型。例如,为了拥有两个父节点,您可以简单地添加一个特殊的(结束)节点,或者您可以用注释标记节点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接