我正在制作一个用户构建目录的程序(不在Windows中,在我的应用程序中),在这些文件夹中有子文件夹等等; 每个文件夹必须包含文件夹或文档.什么是最好的数据结构?请注意,用户可以选择子文件夹并在其子文件夹中搜索文档.我不想限制文件夹或子文件夹级别.
这就是我做的:
数据库中的每条记录都有两个字段:ID和ParentID.ID为4-5个字符(Base36,az:0-9或类似的东西).父ID是父级完整结构的串联...
所以...
这个结构:
Root Folder1 Folder2 Folder3 Folder4 Folder5 Folder6
将表示如下:
ID ParentID Name 0000 NULL ROOT 0001 0000 Folder1 0002 0000 Folder2 0003 00000002 Folder3 0004 0000 Folder4 0005 00000004 Folder5 0006 000000040005 Folder6
我喜欢这种结构,因为如果我需要找到文件夹下的所有文件,我可以进行如下查询:
SELECT * FROM Folders WHERE ParentID LIKE '0000%' -- to find all folders under Folder1
要删除文件夹及其所有子文件:
DELETE FROM Folders WHERE ID='0004' AND ParentID LIKE '00000004%'
要移动文件夹及其子项,必须将使用同一父项的所有记录更新为新父项.
而且我不希望linit文件夹或子文件夹级别
一个明显的限制是子文件夹的数量限制为您的ParentID字段的大小.
我可以想到一些你可以构建它的方法,但没有什么能够击败显而易见的事情:
使用实际的文件系统.
我会研究使用某种树数据结构