我有一个表格,包含用户可以注册的时隙。在管理端,管理员用户可以选择将两个时隙“链接”在一起,这基本上对最终用户说:'如果您注册其中一个时隙,则必须注册所有其他链接的时隙“。这些链接存储在另一个有两列的表中,一个是要求链接的时隙的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