MySQL的外键允许NULL?
我在拼凑一个图片网站。 基本模式的MySQL非常简单,但是在尝试表示与图像相关的可能的pipe理标志(“不适当”,“受版权保护”等)时遇到了一些麻烦。 我目前的想法如下:
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
在标志types的查找表上被外键控制,正如您可以想象的那样, tblImageFlags.resolutionTypeID
应该在luResolutionTypes.resolutionTypeID
外键。 现在的问题是,当一个标志第一次发布,没有逻辑parsingtypes(我会声明这是一个很好的使用NULL
); 但是,如果设置了值,则应该对查找表进行外键。
我无法find这种情况下的MySQL语法解决方法。 它存在吗? 最好的亚军是:
- 添加一个“未经审查”的分辨率types
- 将一个
NULL
条目添加到luResolutionTypes.resolutionTypeID
(这将甚至工作在AUTO_INCREMENT
列?)
感谢您的见解!
PS奖金指向谁告诉我,在数据库的情况下,它是“索引”还是“索引”。
后续 :感谢Bill Karwin指出了表结构中的一个语法错误(如果你希望它允许NULL
, NOT NULL
将列设置为NOT NULL
NULL
!)。 一旦我有足够的业力给你这些奖励点,我会:)
你可以通过在外键列tblImageFlags.resolutionTypeID
允许NULL
来解决这个问题。
PS奖金指向谁告诉我,在数据库的情况下,它是“索引”还是“索引”。
索引的复数应该是索引 。
根据Bryan A. Garner的“ Modern American Usage ”
对于普通的目的, 指数是优选的复数,而不是指数 。 尽pipe不像论坛或教条那么自命不凡,但是这种指责却是自命不凡的。 有些作者更喜欢技术上的指标 ,如math和科学。 虽然不是指数的最佳复数,但指数在“指标”的意义上是可以允许的。 …避免单一的指标,从复数指数的背后形成。