我在一本书中发现,为了呈现家谱(家谱)树,最好使用带有拓扑排序的 DAG(有向无环图),但该算法取决于输入数据的顺序。
4 回答
家谱数据库通常使用所谓的谱系链接结构。
这意味着合作伙伴(丈夫/妻子)被联系在一起并称为家庭。一个家庭与它的孩子相关联,并通过从孩子到其父家庭的链接。
我不知道代表这一点的特定图形类型。大多数程序都使用族表和单个表对其进行自定义编程,并在它们之间建立适当的链接。
家谱数据库通常遵循这种结构以匹配GEDCOM(家谱数据通信)标准,该标准旨在允许在程序之间传输数据。
在该标准中,您会特别看到 FAM 和 INDI 记录。FAM 记录通过 HUSB、WIFE 和 CHIL 链接连接到 INDI 记录。INDI 记录通过 FAMS(配偶)和 FAMC(父母)链接连接到 FAM 记录。
使用这种数据结构,您可以轻松读取 GEDCOM 文件并从其他家谱软件导入数据,并将您的数据导出到 GEDCOM 文件,以便其他家谱程序可以读取它。
为了呈现历史记录中发现的人们之间的关系,Open Archives使用了灵活的力导向图布局实现。在此图中,每个节点都是一个人,并且有两种类型的顶点:一种描绘婚姻(橙色),一种描绘父母关系(红色的“血线”)。可以在此处查看图表示例。
在家谱中,所谓的Ahnentafel索引(德语为“祖先表”)用于表示单个人的祖先;基本上这是二叉树的合适线性化。
DAG 将不起作用。可能会在 Neo4j 中使用 GEDCOM 模型查看之前的帖子
血统可以有复杂的关系,例如表亲、兄弟姐妹婚姻、血缘关系等。这些可以在 Neo4j 等非 SQL 数据库中轻松管理。