2010-03-03 48 views
4

我想做一個女巫的web應用程序,會有一些用戶使用不同的項目(如c項目,C++項目等)。我的問題是,我應該如何建立我的3個表格:用戶,項目,文件?一個用戶可以有很多項目(也會有共享項目),項目可以有文件夾(包)和文件,但是在文件系統上我不想讓該文件夾層次結構只指向數據庫中的特定文件。虛擬文件系統在數據庫中使用什麼結構?

I.e.我是user1,我有project1,裏面有3個文件夾:頭文件,資源,源文件和每個文件夾或根目錄下有幾個文件。問題是我想從user1中獲取所有與項目相關的數據並將其放在樹視圖中,但在服務器上,所有文件都位於具有隨機生成名稱的同一文件夾中。

回答

5

您可以使用下面的結構。

或者,您可以將文件存儲在某種BLOBMEDIUMBLOB)的數據庫中。

users 
    id 
    name 
    ... 

projects 
    id 
    name 
    ... 

user_projects 
    user_id 
    project_id 

folders 
    id 
    name 
    project_id 
    parent_folder_id 
    ... 

files 
    id 
    filename 
    parent_folder_id 
    name_in_filesystem 
    ... 

你的users列表,以及projects列表。 user_project表允許您將多個用戶分配給項目,並將多個項目分配給用戶。

folder屬於一個項目,並可以有一個parent_folder_id允許層次結構。每個文件都有一個parent_folder_id,這是對包含它的文件夾的引用。 name_in_filesystem是用來存儲文件的隨機名稱。

+0

好的答案是,將文件存儲在您的數據庫中,否則如果在更改過程中出現問題,您的文件可能與數據庫不同步。 – Thirler 2010-03-03 18:34:42

+0

很好的答案,但是不支持子文件夾。 – 2018-01-08 10:14:52

+0

@NorbertBoros對不起,如果我誤解你的評論,但'folders.parent_folder_id'將被用來創建文件夾的層次結構。 – 2018-01-08 10:20:14