数据库设计:识别外键有什么意义?

时间:2010-11-24 00:55:45

标签: mysql database database-design

我正在使用MySQL Workbench来建模我的数据库。在其中,我可以通过识别外键等来创建关系。这有什么意义呢?没有这些关系,我能够很好地运行我的查询。

我的表确实有一个外键的实际列,我只是没有在MySQL Workbench中定义它们。意思是,我没有连接表格的那些线。

6 个答案:

答案 0 :(得分:4)

外键做了一些事情。最明显的是,它们为您提供内置的数据完整性,正如Macy Abbey所提到的那样。

有趣的是,您喜欢的RDBMS的查询优化器也可以使用外键等约束来进行其他优化。基本上,数据库可以确定它是否可以比您更好地编写查询。外键的存在使数据库能够做出这些假设。你可以在Do Foreign Key Constraints Help Performance?找到一个很好的例子。虽然该链接是特定于SQL Server的,但无论数据库引擎如何,原理都是相同的。

答案 1 :(得分:3)

外键对于确保数据完整性很有用。如果您定义它们,数据库本身将确保不允许将无效的外键值插入表中。

答案 2 :(得分:2)

如果您没有外键,则表示您没有关系。因此,您没有Relational数据库;它是一桶鱼,没有完整性,你不会拥有关系数据库的力量(Jeremiah的答案只是众多的一个项目。)

答案 3 :(得分:2)

使用外键关系可以获得以下好处:

  1. 参照完整性(当然)
  2. 优化器在某些情况下可以生成更好的执行计划
  3. 工具支持(元数据,迁移,分析等)
  4. 我首先使用可用的每种类型的约束。 然后,如果它显示会损害性能,我会开始删除内容。这是一个很好的策略,让你晚上睡得好。

答案 4 :(得分:1)

如果您不了解数据完整性限制及其在数据库设计中的重要作用,那么我建议您在开始设计数据库之前先学习一门课程或学习一些书籍。聘请一些专业知识来帮助您完成当前项目可能是一个好主意。

答案 5 :(得分:0)

您可以在没有外键的情况下为数据库建模。但是,始终建议使用外键来保持数据的一致性。如果您未在数据库中使用外键,则必须手动更改查询跟踪外国身份证。但是,如果你确实指定了外键,那么不仅对你来说更容易,而且sql也会更容易映射你的数据..