2012-04-14 101 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