我在拼凑图像网站。基本模式相当简单的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语法解决方法这种情况。它存在吗?最好的跑者是:
>添加“未监控”分辨率类型
>向luResolutionTypes.resolutionTypeID添加一个NULL条目(这甚至会在AUTO_INCREMENT列中工作吗?)
感谢您的洞察!
PS Bonus指向谁告诉我在数据库的情况下是“索引”还是“索引”。
后续:感谢Bill Karwin指出什么是表结构中的语法错误(如果你希望允许NULL,不要将列设置为NOT NULL)。一旦我有足够的因果,给你这些奖励积分,我会:)