我需要在 php 和 MySQL 中建立一个家谱。我对那里缺乏开源可定制的 html 家谱构建软件感到非常惊讶,但我离题了。我花了很多时间阅读有关存储 MySQL 有向图和家谱的信息。一切对我来说都是有意义的:有一个带有节点(人)的表和一个带有边(关系)的表。
我唯一的问题是我不确定存储不一定相邻的关系的最佳方式,例如兄弟姐妹和祖父母关系。起初我认为这没什么大不了的,因为我可以无形地强制执行可以解决这些连接的父母(每个人都有父母)。
但是,我还需要能够存储可能没有共同父母的关系,例如浪漫伴侣。我读过的所有内容都暗示了亲子关系,但是由于浪漫的伴侣没有共同的父母(希望如此),我不确定如何将其存储在边表中。我应该使用不同的表,还是什么?如果它在同一张表中,我该如何表示?只要我在不熟悉的关系中这样做,我也可以和家人一起这样做。
总结一下,三个问题:
- 我如何表示横向关系?
- 如果横向关系有共同的父母,我该如何存储?这应该
family
是存储其他横向关系的桌子上的标志吗? - 如何在孩子距离两个或更多边缘(祖父母)但直接父母不可用的情况下存储父子关系?
感谢任何帮助,如果有人对一些 javascript/html 家谱构建软件有任何建议,那就太好了。