php-file manager db design(mysql)

时间:2011-01-10 09:10:41

标签: php mysql database database-design

有关图像(宽度/高度)的信息无关紧要。如果我需要,我会把它放在另一张桌子,但我不需要图像信息。您对此db设计有何看法?您如何看待MyISAM与InnoDB的具体表格?

谢谢,我感谢任何反馈。

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;

2 个答案:

答案 0 :(得分:2)

  • name应该是唯一的

  • 由于区分大小写,它不应该使用utf8_unicide_ci作为此列,

例如,在linux(不在窗口中)

example.jpg != example.JPG

使用ci会导致唯一名称问题

  • 如果你需要大量写作,innodb应该更合适

  • 其他图片,宽度,高度等附加信息可存储到表格中以便设施搜索/过滤

  • 您不太可能希望保留该文件的版本,但您应该存储有关创建者的信息(例如user_id),因此,您可以轻松追溯信息

答案 1 :(得分:0)

由于只有“ajreal”回答了这个问题,我认为我的数据库设计的基础将是我建议的数据库设计。感谢ajreal的回答(voteup :))。我知道,ajreal,关于存储所有其他信息(用户,权利,acl,图像大小,......以及应该存储的所有其余“小信息”:)我只是想听到另一种意见)。感谢。