在MySQL中存储嵌套的导航菜单

时间:2014-05-16 17:44:43

标签: php mysql sql pdo

我想在MySQL中存储一个嵌套的关联数组。我需要这个在我的网站上的可嵌套导航菜单。嵌套水平应该没有限制。

我研究了nested set modeladjacency list,但我不确定哪些用于我的需求。

理想情况下,我将能够以一种方式查询我的表,我可以在PHP中重建我的关联数组,然后使用它来构建我的导航菜单。 记录可能会被添加/更改/重新排序,但这种情况只会偶尔发生。

我正在寻找MySQL(InnoDB)的示例表结构,查询以获取和重新排序记录,以及更新,删除和添加新记录。我在PHP中使用PDO,因此任何如何将记录集转换为关联数组的示例代码也会有所帮助。

2 个答案:

答案 0 :(得分:0)

尝试以下设计:

  1. 专栏'BEFORE'
  2. 专栏'AFTER'
  3. 列'NAME'
  4. 列'ID'
  5. 现在,只需根据需要存储ID。

    示例:导航菜单可能是

      

    A - > B - > ç

    只需为菜单中的每个条目指定一个ID,并使用唯一的ID存储它。 然后在表格中输入BEFORE和AFTER值作为ID。

    所以,对于B我们有

    Entry for B:
    BEFORE = ID(C) 
    AFTER = ID(A) 
    NAME = 'B'
    

    可以轻松扩展多个嵌套菜单。

答案 1 :(得分:0)

我建议采用以下设计来实施解决方案。

表:导航

Columns : 
ID (INT NOT NULL IDENTITY),
Description (VARCHAR),
ParentID (INT NULL) - Refer its own table ID column,
AdditionalColulmns..