我需要在php和MySQL中構建一個系列樹。我很驚訝缺乏開源的可定製的HTML家族樹構建軟件,但我離題了。我花了很多時間閱讀關於存儲MySQL圖和家族樹的信息。一切都對我有意義:有一個有節點(人)的桌子和一個有邊緣(關係)的桌子。MySQL商店關係(系列)樹
我唯一的問題是我不確定存儲不一定相鄰的關係的最佳方式,例如兄弟姐妹和祖父母關係。起初我並不認爲這會有什麼大不了的,因爲我可以不加區別地強制父母(每個人都有父母)來解決這些關係。
但是,我也需要能夠存儲可能沒有共同父母的關係,如浪漫的伴侶。我讀過的每一樣東西都表明了一種親子關係,但由於浪漫的伴侶不共享一個共同的父母(希望),我不知道如何將它存儲在邊緣表中。我應該使用不同的表格還是什麼?如果它在同一個表格中,我該如何表示?只要我用不熟悉的關係來做這件事,我也可以和家人一起做。
綜上所述,三個問題:
- 如何代表橫向的關係?
- 如果橫向關係有一個共同的父母,我該如何存儲它?這是否應該是
family
表中存儲其他橫向關係的標誌? - 如何將兒童的兩個或更多邊緣(祖父母)隔開,但直接父母不可用?
任何幫助表示讚賞,如果任何人有任何建議的一些JavaScript/HTML家譜樹建設軟件,那將是美好的。
這很有趣,有可能解決問題(如果需要,我會堅持使用佔位符不留空格的建議)。我唯一的問題是如何透明地確定關係的方向?現在看來,我必須每次檢查事件類型描述或角色,以判斷一個節點相對於另一個節點的位置。 – 2011-04-25 13:39:49
@tandu我不確定'關係方向'是什麼意思?我認爲這歸結於你的程序邏輯,而不是SQL。你的數據庫僅僅存儲(例如)'Bob'的'出生'事件,'Geoff'是父親,'Alice'是母親,'Bob'是'寶貝'。在你的程序中,如果你想確定誰是鮑勃的父母,那麼你可以從person_event_role中選擇,其中life_event_id是鮑勃的出生地,而life_event_role_id可以是母親或父親。 – 2011-04-25 13:54:50
這就是我所說的方向。例如,如果用戶是Bob,我需要找到Bob的兒子,父親和妻子在樹中的哪個位置。他的兒子是南方,他的父親是北方,他的妻子是西方或東方。不過,您似乎已經回答了:您正在說要根據人事活動角色來計算此方向。我不能在MySQL中透明地做到這一點,如果我不得不在PHP中檢查每個字符串並計算方向,但我想你是說這不是模式。 – 2011-04-25 14:23:06