繁体   English   中英

如何创建一个像结构一样的动态树

[英]How to create a dynamic tree like structure

我在数据库中有我家人的详细信息。 我想通过从表中读取来生成一个动态生成的族谱的网页。

我的表架构看起来像这样

id(int)  name  father(int)  mother(int)  spouse(int)  dateOfBirth

其中fathermotherspouse引用同一个表的id列。 父节点和母节点的根节点将为null。

鉴于此数据,我如何动态生成族树。 我是设计表的新手,所以如果这个设计是次优的,那么建议另一个可以实现这个目标的模式。

关于如何开始至少入门的任何指示都将受到高度赞赏。

看看嵌套集模型

你的设计看起来还不错,但是通过这种设计,插入节点比将它们从表中取出更容易。

您可以查看嵌套集并实现该模型。 嵌套集更难以更新,但您可以使用单个查询获取任何子树的节点,因此我认为它很好地匹配您的问题(家族树不会经常更改:)。

除了嵌套集父子关系之外,您还需要一些元数据,如关系类型(Child,Sibling,Spouse),但我认为您可以轻松添加。

这个设计没问题,但你要么选择所有数据,然后在客户端构建树,迭代地检查返回的数组,或执行许多子查询,这也不是很好。

我所知道的最佳解决方案(对于分层结构,您也有配偶)将树路径存储在字符串字段中。 例如,你有一个id = 1的爷爷,id = 2和3的孩子,2有4个孩子和5个孩子。然后,他们分别有路径,“”,“1”,“1”,“1, 2“,1,2”。

您可以使用此结构按顺序检索树元素,使用ORDER BY path子句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM