更好的设计sqlite菜单树的方法

时间:2013-04-13 05:23:42

标签: sqlite menu tree drilldown

我围绕sqlite数据库构建了一个iOS应用程序。其中一个表分配一个向下钻取表值,命令它们将显示在表中,然后是后面的菜单。我想是一棵基本的树。

我构建它的方式,我能想到的唯一方式(这是我第一次碰到sqlite)..它只是一个真正的后方痛苦,因为它几乎不可能修改。 / p>

如果我必须重新构建菜单并添加或删除其中一个菜单,那么修改后的所有内容都必须调整其父级以进行补偿。

有人用我想不到的东西打我的头,因为我确信这很明显。

结构表示:

id   menu          icon          level   parent  
===========================================================  
1    colors        color.jpg     1       NULL
-----------------------------------------------------------
2    shapes        shapes.jpg    1       NULL
-----------------------------------------------------------
3    red           red.jpg       2       1 
-----------------------------------------------------------
4    green         green.jpg     2       1  
-----------------------------------------------------------
5    square        square.jpg    2       2  
-----------------------------------------------------------
6    roses         roses.jpg     3       3
-----------------------------------------------------------
7    grass         grass.jpg     3       4

因此,如果我决定在第1级添加新菜单,我必须要么生活在一个非常混乱的数据库中,要么在插入后修改每个条目的所有父值和id。

1 个答案:

答案 0 :(得分:1)

使用桌子要做的事情并不容易(参见What is the best way to store a tree structure in a relational DB?)。

将菜单结构存储在单个递归组织的JSON或XML对象中可能更好。