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