Exp*_*lls 4 html php mysql directed-graph family-tree
我需要在php和MySQL中构建一个家谱.我很惊讶缺乏开源可定制的html系列树构建软件,但我离题了.我花了很多时间阅读有关存储MySQL有向图和家谱的知识.一切都对我有意义:拥有一个包含节点(人)的表和一个包含边(关系)的表.
我唯一的问题是我不确定存储不一定相邻的关系的最佳方式,例如兄弟和祖父母的关系.起初我并不认为这会是一件大事,因为我可以无形地强制执行一个解决这些联系的父母(每个人都有父母).
但是,我还需要能够存储可能没有共同父母的关系,例如浪漫的伴侣.我已经读到的一切表明,父子关系,但因为恋爱对象不共享一个共同的父(希望),我不知道如何将它存储在边表.我应该使用不同的表格,还是什么?如果它在同一个表中,我该如何表示?只要我用非熟悉的关系做这件事,我也可以和家人一起做.
总结一下,有三个问题:
family表格中存在其他横向关系的标志吗?任何帮助表示赞赏,如果有人对某些javascript/html系列树构建软件有任何建议,那将是非常棒的.
person
------
person_id
name (etc)
life_event_types
----------------
life_event_type_id
life_event_type_description (divorce, marriage, birth, death)
life_events
-----------
life_event_id
life_event_type_id
life_event_description
life_event_date
life_event_roles
----------------
life_event_role_id
life_event_role (mother, father, child)
person_event_role
-----------------
person_id - who
life_event_id - what happened
life_event_role_id - what this person did
Run Code Online (Sandbox Code Playgroud)
所以你可以有一个类型为"出生"的生活事件,而role_id会告诉你谁是父母,谁是孩子.这可以扩展到婚姻,死亡,离婚,寄养父母,代孕父母(你可能有3或4个父母关系非常复杂),等等.
至于存储更远的关系,你可以计算这些.例如,您可以通过使具有匹配event_id的"父"角色的人来计算任何人的父亲.然后你可以得到那个人的父亲,你就拥有原始人的祖父.在某人不知道的任何地方,创建具有未知数据的人.