当前位置: 首页 > 面试题库 >

MySQL外键是否允许为NULL?

章威
2023-03-14
问题内容

我拼凑了一个图片网站。基本模式是非常简单的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是否允许使用嵌套事务? 问题答案: 支持。 您可以执行以下操作:

  • 问题内容: JPA规范是否允许对非主键列的简单引用? 我想在引用中使用在Countrys表上有一个简单的替代/自然键(UNIQUE,NOT NULL)列iso_code,但是Eclipse的Dali显示了验证错误,并且Hibernate抛出了MappingException。 是否允许这种常见情况? 问题答案: @axtavt:看来您的答案不正确。我刚刚收到了来自“ Pro JPA 2.0”作者的

  • 问题内容: MySQL是否自动索引外键列? 问题答案: 是的,但仅在innodb上。Innodb是当前唯一实现了外键的表格式。

  • 问题内容: 翻阅Bill Karwin的《 QL Antipatterns》一书,第3章,朴素树(邻接表,父子关系),其中有一个注释表的示例。 样本数据 该表具有comment_id,parent_id和comment列。parent_id是引用comment_id的外键。 comment_id自动从1开始递增。 问题。 如果假定parent_id是引用comment_id的外键,那么当具有外键的

  • 问题内容: 这是有效的json吗? http://jsonlint.com/表示同意。 http://www.json.org/没有说什么被禁止。 但这显然没有多大意义,对吗?大多数实现可能使用哈希表,因此无论如何都将其覆盖。 问题答案: JSON校验可以在https://www.jsonformatting.com/

  • 本文向大家介绍Mysql允许外网访问设置步骤,包括了Mysql允许外网访问设置步骤的使用技巧和注意事项,需要的朋友参考一下 1、打开mysql.exe(MySQL Command Line Client),输入密码 2、输入:use mysql; 3、查询host输入: select user,host from user; 4、创建host(如果有"%"这个host值,则跳过这一步) 如果没有"