对于存储在DB中,最简单和最直接的方法是为每个文件夹/节点设置parent_folder_id.在大多数情况下,这应该足够好,特别是您将构建文件夹对象结构并基于对象模型进行操作.
取决于您的要求,您需要一个非常常见的案例
>找出特定文件夹下的所有子文件夹
>通过SQL直接从DB执行查找.
如果它是您正在寻找的,那么有一个有趣的方法,你可以看看:
每个DB记录将有2个额外的数字字段,让我们称之为LEFT和RIGHT
假设这样一棵树:
ROOT
+ A
| + A1
| + A2
+ B
+ B1
将要存储在DB中的是什么
Node LEFT RIGHT ... other fields
ROOT 1 12
A 2 7
A1 3 4
A2 5 6
B 8 11
B1 9 10
>每个父节点具有LEFT =第一个孩子的LEFT-1,而RIGHT =最后一个孩子的RIGHT 1
>叶节点将具有LEFT和RIGHT为2连续数
>每个节点的左边应该是=先前兄弟的右边1,右边=下一个兄弟的左边 – 1
当您需要通过SQL查找特定节点(N)下的所有节点时,只需找到LEFT>的所有节点. N.LEFT和RIGHT< N.RIGHT 您可以通过批量更新相关节点轻松执行插入/删除(不是一项艰巨的任务,请留给您:P) 这可能不是非常友好,但如果我提到的要求是你需要的,你可以考虑使用这种方法.