【发布时间】:2011-11-21 12:12:20
【问题描述】:
我的数据库中有以下两个表(索引不完整,因为它将基于我使用的引擎):
表 1:
CREATE TABLE `primary_images` (
`imgId` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`imgTitle` varchar(255) DEFAULT NULL,
`view` varchar(45) DEFAULT NULL,
`secondary` enum('true','false') NOT NULL DEFAULT 'false',
`imgURL` varchar(255) DEFAULT NULL,
`imgWidth` smallint(6) DEFAULT NULL,
`imgHeight` smallint(6) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
`imgClass` enum('jeans','t-shirts','shoes','dress_shirts') DEFAULT NULL,
`imgFamily` enum('boss','lacoste','tr') DEFAULT NULL,
`imgGender` enum('mens','womens') NOT NULL DEFAULT 'mens',
PRIMARY KEY (`imgId`),
UNIQUE KEY `imgDate` (`imgDate`)
)
表 2:
CREATE TABLE `secondary_images` (
`imgId` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`primaryId` smallint(6) unsigned DEFAULT NULL,
`view` varchar(45) DEFAULT NULL,
`imgURL` varchar(255) DEFAULT NULL,
`imgWidth` smallint(6) DEFAULT NULL,
`imgHeight` smallint(6) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
PRIMARY KEY (`imgId`),
UNIQUE KEY `imgDate` (`imgDate`)
)
表 1 将用于创建一个缩略图库,其中包含指向更大版本图像的链接。 imgClass、imgFamily 和 imgGender 将优化显示的缩略图。
表 2 包含与表 1 中的图像相关的图像。因此使用primaryId 将表 1 中的单个图像与表 2 中的一个或多个图像相关联。这就是我正在考虑使用 InnoDB 的外键功能,但我也熟悉 MyISAM 中索引的功能。
无需过多研究其余字段,imgDate 用于对结果进行排序。
最后但并非最不重要的一点是,我应该提到这个数据库是只读的。所有数据将由我输入。有人告诉我,如果数据库是只读的,那么它应该是 MyISAM,但我希望您能了解您在我的情况下会做什么。
【问题讨论】:
-
这个问题引起争论...应该迁移到程序员...???
-
@IAbstract - 你谈到了我不知道的事情,但如果你能详细说明,我会很高兴...
-
Programmers.StackExchange.com 比 StackOverflow 更主观。提出问题的方式将引发关于哪个更好的辩论……而且,通常这些问题已经结束。但是由于程序员现在存在并且允许在问题中进行更多的主观性,似乎更适合......恕我直言。
标签: mysql database database-design innodb myisam