MySQL的外键允许空?MySQL的外键允许空?(MySQL foreign key to allo

2019-05-11 20:50发布

我拼凑的图像网站。 其基本模式是非常简单的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语法的解决方法这种情况。 是否存在? 最好的亚军是:

  • 添加“非审”的决议类型
  • 添加一个NULLluResolutionTypes.resolutionTypeID (这会即使在工作AUTO_INCREMENT列?)

感谢您的见解!

PS奖励积分给谁就给谁告诉我是否在数据库的情况下,它的“指数”或“指数”。


追问 :感谢比尔Karwin指点出了什么竟然是在表结构中的语法错误(没有设置列NOT NULL如果你想让它允许NULL !)。 而一旦我有足够的业力给你的奖励积分,我会:)

Answer 1:

您可以通过允许解决这个NULL的外键列tblImageFlags.resolutionTypeID


PS奖励积分给谁就给谁告诉我是否在数据库的情况下,它的“指数”或“指数”。

指数的复数应的索引

据“ 美国现代用法 ”由布赖恩·A·加纳:

对于普通的目的, 指标是最好复数,而不是指数 。 ... 指数 ,虽然比论坛教理不太装腔作势,自命不凡是不过。 有些作家喜欢在指数的技术背景,在数学和科学。 虽然没有索引的最佳复数, 指数是在这个意义上允许的“指标”。 ...避免奇异指数之 ,从多个指标的背形成。



文章来源: MySQL foreign key to allow NULL?