2011-01-10 73 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