2012-04-14 93 views
0

我必须在MySql中创建一个“虚拟文件系统”(使用asp.net作为web应用程序)。这不会很复杂,可能最多2-3个子文件夹“深”,每个文件夹中最多可包含10个文件。每个用户在登录后都将拥有自己的文件夹和文件。管理员应能够制作“模板”,并为新用户分配模板。一个模板将包含几个文件夹和文件。这就是我在如何制作头脑的问题。我想我至少接近设计桌子,但我不确定。这里是我迄今创建的表格:MySql中的虚拟文件夹系统,带有“模板”

Files 
ID 
Name 
ContentType 
FileDataSize 
FileData 
Parent_Folder_ID 

Folders 
ID 
Name 
Parent_Folder_ID 

Users 
ID 
Name 
Email 
Password 

Templates 
ID 
Name 

User_Templates 
User_ID 
Template_ID 

我在正确的轨道上吗?或者我错过了什么?

+0

我想我会使用[嵌套](http://en.wikipedia.org/wiki/Nested_set_model)文件夹层次结构。邻接列表可以工作,但由于需要递归而很痛苦。您似乎缺少将用户链接到文件夹的关联表。 – nnichols 2012-04-14 11:27:29

回答

1

这看起来很简单,这可能只是为您的目的。 您将遇到的唯一问题是,您将需要几个查询来确定叶节点的完整路径。

解决这个最简单的方法,就是真正的完整路径存储在一个单独的列,如:

文件夹1 /文件夹2 /节点

不漂亮,但肯定的是绝对最容易处理用。

或者,您可以使用预定义树遍历算法,但这可能更复杂,并且在获取子树的速度很快时,更新可能会非常慢。

+0

你的意思是将一个“FullPath”列添加到文件夹表中? – 2012-04-14 09:59:49

+0

嗯,是的,但试试吗?你需要什么查询?一旦你写下这些查询,你将会很快找到缺失的东西和难点 – Evert 2012-04-14 10:42:56

+0

是的,我会试一试。感谢提示Evert :-) – 2012-04-14 11:20:35