2010-05-05 59 views
2

我想弄清楚在sql中製作文件夾系統的最佳方法。 我正在做一個網站,將使用類似的系統作爲瀏覽器在Windows中。文件夾sql編程

您打開您的c:驅動器,您會看到一些文件夾和文件,然後打開一個文件夾並在其中看到更多文件和文件夾。

所以我問,我會用這個表,只是指向父id號或什麼?

我有這個在我的腦海中..你做了一個主文件夾,它得到了u_id = 1。然後我在該文件夾中創建一個文件,它得到u_id = 2和p_id = 1,所以我知道它有嗎?與文件夾相同。

這都將是一個表中,但我不能不禁想起有這一些重大缺陷..

回答

2

我將在幾個不同的方式解決這個:

添加Folders表,這些列和其他任何你需要:

FolderId [INT] 
ParentFolderId [NULL INT] 
Key [VARCHAR(MAX)] 

什麼鑰匙持有我S中的當前子組合,像這樣的每一個的ParentId:

19-144-444- 

這是什麼讓你做的是很容易找到的子文件夾沒有遞歸。

添加Files表,這些列:

FileId [INT] 
FolderId [INT] 

在大多數情況下,文件將具有與它們相關的更多的元數據,因此沒有理由過度使用一個表

+0

我特別跟隨如果您的RDBMS沒有一種方便遞歸查詢的方法(許多不這樣做),那麼使用Key方法。 – 2010-05-05 16:37:29

+0

所以如果我明白這個權利..鑰匙擁有在當前文件夾下的所有東西的ID ..? 小丟失:o – eski 2010-05-05 16:42:17

+0

不,密鑰持有其所有祖先 – hunter 2010-05-05 16:51:01

2

你所描述的是一個樹狀分層結構。 使用遞歸鍵來指示父子關係是正確的。

一個很好的設計實例:

ID int (PK) 

Parent int nullable (FK) 

Foldername varchar(100) 

使用的文件,按照獵人的帖子

相關問題