我正在拼凑一个图像网站。基本架构非常简单的 MySQL,但我在尝试表示与图像关联的可能管理标志时遇到了一些麻烦(“不适当”、“受版权保护”等)。我目前的想法如下:
tblImages (
imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
...
);
tblImageFlags (
imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
imageID INT UNSIGNED NOT NULL,
flagTypeID INT UNSIGNED NOT NULL,
resolutionTypeID INT UNSIGNED NOT NULL,
...
);
luResolutionTypes (
resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
resolutionType VARCHAR(63) NOT NULL,
...
);
(为了便于阅读而被截断;我发誓,各种外键和索引都是有序的)
tblImageFlags.flagTypeID
在标志类型的查找表上是外键的,你可以想象tblImageFlags.resolutionTypeID
应该是外键的luResolutionTypes.resolutionTypeID
. 手头的问题是,当第一次发出标志时,没有逻辑解析类型(我会声明这是一个很好的用途NULL
);但是,如果设置了一个值,它应该是查找表的外键。
我找不到针对这种情况的 MySQL 语法解决方法。它存在吗?最好的亚军是:
- 添加“无节制”分辨率类型
- 添加一个
NULL
条目luResolutionTypes.resolutionTypeID
(这甚至可以在AUTO_INCREMENT
列中工作吗?)
感谢您的洞察力!
PS Bonus 指向谁告诉我,在数据库的情况下,它是“索引”还是“索引”。
跟进:感谢 Bill Karwin 指出表结构中的语法错误(NOT NULL
如果您希望允许,请不要将列设置为NULL
!)。一旦我有足够的业力给你这些奖励积分,我会:)