我已经阅读了 Bill Karwin 在这篇文章中的回答,我很惊讶它如何解决了我一直在使用 MySQL 数据库(至少在父子关系或祖先-后代级别)研究的家谱谱系的基本问题。与邻接列表和其他模型相比,它的优势使其成为我的项目的绝佳选择。但是,正如所讨论的,不支持为兄弟或侄子连接节点。此外,我想将这样的原则应用到我的数据库项目中,以支持姻亲、侄子、孙侄女、配偶等的连接。如果可能,我想扩展 Closure Table 原则及其查询以支持这种关系。
参考图片(黄色节点为配偶): 样本家庭树结构
具有正确节点连接的查询可以给出答案,例如在引用时:
(4) 至 (5):兄弟姐妹
(9) 至 (2):配偶
(3) 至 (5):侄子/侄女
(4) 至 (3) 或 (6) 至 (2):叔叔/阿姨
(1) 至 (9):儿媳
(10) 至 (4):侄子
在这种情况下,当我提到单个节点时,比如说(2),它可以给我相关节点的列表以及它们如何相互关联:
(1) 是父母
(5) 和 (4) 是儿童
(3) 是兄弟姐妹
(9) 是配偶
(10) 是姐夫
(6) 是侄子/侄女
(8) 和 (7) 是孙子
在构建家谱系谱时还有其他场景,例如半兄弟姐妹(父节点不同,因此您不能假设这两个节点是否具有相同的父节点);和其他关系,例如“我的配偶和我兄弟姐妹的配偶也是兄弟姐妹”。这也表明我的孩子是我兄弟姐妹的配偶的侄子)。
我确信这可以通过 Closure Table 完成,但可能不是那么简单。任何文章或建议或查询都会有很大帮助。谢谢!(也许很久以前有人已经解决了这个问题,我只是找不到合适的资源)。:)