簡體   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