我正在尝试存储家谱。我使用的平台是Zend框架、Mysql和Ajax。我在stackoverflow上搜索到了这篇文章,它在处理对象数据方面非常有帮助。
"家谱" 数据结构
简要说明我的用例。用户可以基于数据库中定义的几个关系创建家庭成员或朋友。我还为关系建立了模型。用户可以创建像离婚配偶、朋友等家庭成员。树的最大深度我们假设是孙子女的最大数量,但宽度也可以扩展。兄弟姐妹及其家庭。
我正在寻找一个高效的数据库设计,以减少查询时间。如果我必须使用上述文章中描述的数据结构,则必须将它们保留为模型。
对于表示,我计划使用http://code.google.com/apis/chart/interactive/docs/gallery/orgchart.html#Example的可视化组织图。
我将总结我所需要的内容。
这种方法的缺点在于需要生成与其他节点(如儿媳、妻子的兄弟及其家庭)的联系。最理想的做法是为每个用户添加父母、兄弟姐妹和孩子,并从家庭成员关系中派生出额外的关系,例如姐夫应作为姐姐的丈夫或妻子的兄弟得出。目前我能想到的就是这些,我只需要实现指南。希望这可以帮助你们提供更好的解决方案。
我正在寻找一个高效的数据库设计,以减少查询时间。如果我必须使用上述文章中描述的数据结构,则必须将它们保留为模型。
对于表示,我计划使用http://code.google.com/apis/chart/interactive/docs/gallery/orgchart.html#Example的可视化组织图。
我将总结我所需要的内容。
- 数据库设计
- 控制器(ajax)和模型的放置
- 用户创建的人员将不是其他用户,只是其他数据
就这些!当我完成项目时,我会在这个帖子上发布完整的解决方案,当然需要你们的专业知识帮助。
提前感谢您的帮助。
编辑:我会进一步说明我的情况。
我有一个用户表,一个关系表和一个家庭/家谱表。
家庭表必须具有以下类似结构:
ID userid relation id Name
1 34 3 // for son ABC
2 34 4 // for Wife XYZ
3 34 3 // for Mom PQR
4 34 3 // for DAd THE
5 34 3 // for Daughter GHI
6 34 3 // for Brother KLM
这种方法的缺点在于需要生成与其他节点(如儿媳、妻子的兄弟及其家庭)的联系。最理想的做法是为每个用户添加父母、兄弟姐妹和孩子,并从家庭成员关系中派生出额外的关系,例如姐夫应作为姐姐的丈夫或妻子的兄弟得出。目前我能想到的就是这些,我只需要实现指南。希望这可以帮助你们提供更好的解决方案。