【问题标题】:php-file manager db design (mysql)php 文件管理器数据库设计 (mysql)
【发布时间】:2011-01-10 09:10:40
【问题描述】:

有关图像的信息(宽度/高度)无关紧要。如果我需要,我会把它放在另一张桌子上,但我不需要图像信息。你觉得这个数据库设计怎么样?对于特定表,您如何看待 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;

【问题讨论】:

    标签: php mysql database database-design


    【解决方案1】:
    • name应该是唯一的

    • 由于区分大小写,因此不应在此列中使用utf8_unicide_ci

    例如在linux中(不在window中)

    example.jpg != example.JPG

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

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

    • 其他图像的附加信息,如宽度、高度可以存储到表格中以便于搜索/过滤

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

    【讨论】:

    • 列名为什么要唯一?我可以在我的文件系统中有这个:A>B>A>B(其中 > 表示“有子目录”)!
    • 因为我使用 č、ć、ž、š、đ 字符,我必须按文件名(a、b、c、č、ć、...)对文件进行排序,你有什么建议而不是 utf8_unicode_ci,最好的选择是什么?
    • @predrag.music - 各有利弊,这些字符可以用iso-8859-*表示,并且可以将utf-8数据存储到拉丁表中
    • @ajareal:我将 mb_substr() 用于我继承的一些应用程序,但我无法摆脱它凌乱的感觉......
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多