3

家谱中的家谱算法是怎么做的?

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

我查看了 Jit 的RGraph树图,它使用 JSON 数据填充树。我可能想通过从数据库填充 JSON 来扩展树。但是,如果我向数据中添加更多子项,我无法弄清楚数据库会是什么样子。我认为如果它只适用于 JSON 是可行的。但是当涉及到动态数据时,我无法完全掌握。

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

4

3 回答 3

4

它可以像这样简单:

在此处输入图像描述

FK1 和 FK2 表示 FOREIGN KEY(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
于 2013-11-20T22:55:29.873 回答
0

IMO it's an adjacency list model with some extension. For example to have 2 parents you can simply add a special (end) node or you can mark the node with a comment.

于 2013-11-20T07:36:55.360 回答
0

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

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

于 2015-01-10T03:30:02.647 回答