[英]How to create a dynamic tree like structure
我在數據庫中有我家人的詳細信息。 我想通過從表中讀取來生成一個動態生成的族譜的網頁。
我的表架構看起來像這樣
id(int) name father(int) mother(int) spouse(int) dateOfBirth
其中father
, mother
和spouse
引用同一個表的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.