我有一個表格,包含用戶可以註冊的時隙。在管理端,管理員用戶可以選擇將兩個時隙「鏈接」在一起,這基本上對最終用戶說:'如果您註冊其中一個時隙,則必須註冊所有其他鏈接的時隙「。這些鏈接存儲在另一個有兩列的表中,一個是要求鏈接的時隙的ID,另一個是要鏈接到的時隙的ID。遞歸鏈接記錄
我怎樣才能使它與另一個時隙鏈接時,兩者取決於其他被選中。這需要對其他鏈接時隙進行遞歸,如下例所示:
Admin says:
#1 is linked to #2
#3 is linked to #2
Therefore:
#1 is linked to #2
#2 is linked to #1
#3 is linked to #2
#2 is linked to #3
#3 is linked to #1
#1 is linked to #3
要達到此目的的最佳方法是什麼?現在我試圖把這些信息放到鏈接表中,但是如果有另外一種方法可以用更多的PHP和更少的SQL來完成,那也可以。我會提供一個代碼示例,但我認爲這不會有幫助。
編輯:概念的答案很好。除非用於演示目的,否則我不需要爲我寫的代碼。
它看起來像樹(在最少的單詞「'如果您註冊其中一個時隙,則必須註冊所有與其鏈接的其他時隙。')。 http://en.wikipedia.org/wiki/Tree_(data_structure) – 2011-05-10 20:50:53
我也打算推薦一棵樹。 – 2011-05-10 20:52:24
如果不需要從根到葉的完整路徑(因爲我只需要知道誰依賴於它),它看起來像一個不相交集數據結構(http://en.wikipedia.org/wiki/Disjoint-set_data_structure ) – 2011-05-10 21:09:01