家谱中的家谱算法如何完成?
例如,父母A有一个孩子B和C.所以,如果孩子C将来也生产一个孩子,那该怎么办?它是如何使用数据库添加到树中的?
我查看了Jit的RGraph树形图,它使用JSON数据填充树。我可能想通过从数据库中填充JSON来扩展树。但是,如果我向数据中添加更多子项,我无法弄清楚数据库的外观如何。我认为只有JSON才有可行。但是在动态数据方面我无法完全掌握。
什么样的模型/结构适合解决这类问题?
答案 0 :(得分:4)
可能就是这么简单:
表示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个入境父母和无限数量的出境儿童。