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

为什么要在MySQL中使用外键约束?

诸嘉澍
2023-03-14
问题内容

我在想,

我确定可以控制添加的类型,因此在MySQL中使用约束作为外键的动机是什么?

它会提高性能吗?


问题答案:

外键强制执行参照完整性。这些约束保证了表中order_details具有order_id引用表的字段的orders行将永远不会具有表order_id中不存在的值orders

外键不需要具有有效的关系数据库(实际上MySQL的默认存储引擎不支持FK),但是对于避免断开关系和孤立行(即参照完整性),它们绝对是必不可少的。是必需的在数据库级别实施参照完整性的能力
Ç 在ACID站。

至于您对性能的关注,通常会有性能成本,但是可能会忽略不计。我建议您输入所有外键约束,如果您遇到无法解决的实际性能问题,请仅在没有它们的情况下进行试验。



 类似资料:
  • 问题内容: 在这里记录此信息是因为我只花了一个小时试图解决这个问题。 我有一个实体Foo,拥有: Hibernate为什么不在foo.bar-> bar.id上创建外键约束? 问题答案: 这是因为MySQL在使用ENGINE = MyISAM创建的表上不支持外键约束。您需要使用ENGINE = InnoDB创建(均为!)表。您可以通过调整,添加默认值或在JDBC URL中使用特殊变量来执行此操作:

  • 问题内容: 好的,假设我们有两个表,和。在评论中,我们有一列,它表示哪个用户键入了该特定评论。为什么我们需要将其指定为外键?如果我们不这样做,它将仍然有效。我们指定主键,因为据我所知,它可以使查询速度更快(我们只需要搜索一行,而当我们没有主键/索引时,则必须遍历所有行)。这只是一种良好的编码习惯吗? 问题答案: 使用外键时,您将获得: 数据的完整性 更快的查询。 用户: 用户ID: 1个 2个 3

  • 主要内容:在创建表时设置外键约束,在修改表时添加外键约束,删除外键约束MySQL外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西

  • 问题内容: 刚在Mac OS X 10.6上安装了MySQL 5.5,并且在许多表上都有一个奇怪的问题。下面是一个例子。插入行失败,但不应插入外键约束。它引用的外键确实存在。有任何想法吗? 更新 :多次删除并重新创建数据库后,我在上述插入失败后进行了操作,并得到了令人惊讶的结果。找不到父语言表!这似乎很奇怪…有什么想法吗? 更新2 :事实证明,这只是MySQL中的一个 巨大 错误。显然,最新版本的

  • 问题内容: 是否可以在MySQL中暂时禁用约束? 我有两个Django模型,每个模型都具有到另一个的外键。由于外键约束,删除模型实例将返回错误: 是否可以暂时禁用约束并仍然删除? 问题答案: 尝试或 确保 后。

  • 问题内容: 是否可以暂时禁用MySQL中的约束? 我有两个Django模型,每个模型都有一个到另一个的ForeignKey。由于ForeignKey约束,删除模型实例将返回错误: 是否可以暂时禁用约束并仍然删除? 问题答案: 尝试或 确保