我围绕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。
答案 0 :(得分:1)
使用桌子要做的事情并不容易(参见What is the best way to store a tree structure in a relational DB?)。
将菜单结构存储在单个递归组织的JSON或XML对象中可能更好。