MySQL外键是否允许为NULL?

我拼凑了一个图片网站。基本模式是非常简单的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!)。一旦我有足够的业力为您提供这些奖励积分,我就会:)

回答:

您可以通过NULL在外键列中允许解决此问题tblImageFlags.resolutionTypeID


PS Bonus指向任何告诉我的人,就数据库而言,是“索引”还是“索引”。

索引 的复数应该是 index

根据布莱恩·加纳(Bryan A.

Garner)的《现代美国人的用法》:

出于普通目的, 索引 是首选的复数,而不是 索引 。… 索引 虽然比 论坛教条要不要

那么自命不凡,但仍然自命不凡。一些作家更喜欢在技​​术方面的 索引 ,例如在数学和科学方面。虽然不是最好的多个 指数指数

是在这个意义上允许的“指标”。…避免单数 索引 ,即复数 索引的倒数 形式。 __

以上是 MySQL外键是否允许为NULL? 的全部内容, 来源链接: utcz.com/qa/429549.html

回到顶部