我正在拼凑一个图像网站。基本模式非常简单 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
should外键luResolutionTypes.resolutionTypeID
。当前的问题是,当第一次发出标志时,没有逻辑解析类型(我会声明这是一个很好的用途)NULL
);然而,如果设置了一个值,它应该是查找表的外键。
我找不到针对这种情况的 MySQL 语法解决方法。它存在吗?最佳亚军是:
- 添加“无审核”解决方案类型
- Add a
NULL
进入luResolutionTypes.resolutionTypeID
(这甚至可以在AUTO_INCREMENT
柱子?)
感谢您的见解!
PS Bonus 指向任何告诉我在数据库中是“索引”还是“索引”的人。
跟进:感谢 Bill Karwin 指出表结构中的语法错误(不要将列设置为NOT NULL
如果你想让它允许NULL
!)。一旦我有足够的业力给你这些奖励积分,我就会:)