2011-01-10 66 views
0

關於圖像的信息(寬度/高度)是不相關的。如果我需要的話,我會把它放在另一張桌子上,但我不需要圖像信息。你對這個db設計有什麼看法?你如何看待MyISAM和InnoDB的特定表格?php文件管理器db設計(mysql)

謝謝,感謝您的反饋。

DROP TABLE IF EXISTS `directory`; 
CREATE TABLE `directory` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `parent_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

DROP TABLE IF EXISTS `file`; 
CREATE TABLE `file` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `fk_directory_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

DROP TABLE IF EXISTS `tag`; 
CREATE TABLE `tag` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

DROP TABLE IF EXISTS `tags_files`; 
CREATE TABLE `tags_files` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `fk_file_id` int(11) DEFAULT NULL, 
    `fk_tag_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

回答

0

由於只有「ajreal」回答了這個問題,我決定我的db設計的基礎將是我建議的db設計。謝謝你的回答(投票:))。我知道,ajreal,關於存儲所有額外的信息(用戶,權利,acl,圖像大小等等......以及其他所有應該存儲的「小型信息」:)我只是想聽取其他意見)。謝謝。

1
  • name應該是唯一的

  • ,它不應該使用utf8_unicide_ci此列時,由於殼體敏感者,

例如,在linux(未在窗口)

​​

使用CI將使唯一的名稱問題

  • ,如果你需要大量的寫,InnoDB的應該是比較合適的

  • 其他圖像的附加信息一樣,寬度,高度可以存儲到表以設施檢索/過濾

  • 不太可能,你想保留文件的版本,但你應該存儲有關的創造者(如USER_ID)的信息,因此,您可以輕鬆地追溯信息

+0

爲什麼列名應該是唯一的?我可以在我的文件系統中有:A> B> A> B(其中>表示'有子目錄')! – 2011-01-10 09:25:48