Mysql 数据库设计:what';识别外键的目的是什么?
我正在使用MySQL Workbench对我的数据库进行建模。在它中,我可以选择通过识别外键等来创建关系。这有什么意义?没有这些关系,我可以很好地运行查询Mysql 数据库设计:what';识别外键的目的是什么?,mysql,database,database-design,Mysql,Database,Database Design,我正在使用MySQL Workbench对我的数据库进行建模。在它中,我可以选择通过识别外键等来创建关系。这有什么意义?没有这些关系,我可以很好地运行查询 我的表确实有一个实际的外键列,我只是没有在MySQL工作台中定义它们。也就是说,我没有那些连接表的行。外键对于确保数据完整性很有用。如果您定义了它们,数据库本身将确保不允许将无效的外键值插入表中。您可以在没有外键的情况下对数据库进行建模。。但是,始终建议使用外键来保持数据一致性。。如果在数据库中没有使用外键,则必须手动更改查询并跟踪外键id。
我的表确实有一个实际的外键列,我只是没有在MySQL工作台中定义它们。也就是说,我没有那些连接表的行。外键对于确保数据完整性很有用。如果您定义了它们,数据库本身将确保不允许将无效的外键值插入表中。您可以在没有外键的情况下对数据库进行建模。。但是,始终建议使用外键来保持数据一致性。。如果在数据库中没有使用外键,则必须手动更改查询并跟踪外键id。但是,如果确实指定了外键,那么不仅对您来说,而且对sql来说,映射数据也会变得更容易。外键可以做一些事情。最明显的是,正如梅西·艾比(Macy Abbey)所提到的,它们为您提供了内置的数据完整性
有趣的是,您最喜欢的RDBMS的查询优化器也可以使用外键等约束进行额外的优化。基本上,数据库可以确定它在编写查询方面是否比您做得更好。外键的存在使数据库可以做出这些假设。你可以在网站上找到一个很好的例子。虽然该链接是特定于SQL Server的,但无论数据库引擎如何,其原理都是相同的。如果您不了解数据完整性约束及其在数据库设计中所起的重要作用,那么我建议您在开始设计数据库之前先学习一些课程或书籍。聘请一些专业人士来帮助您完成当前项目可能是一个好主意。如果您没有外键,您就没有关系。因此,您没有关系数据库;它是一桶鱼,没有完整性,您将没有关系数据库的能力(Jeremiah的答案只是众多答案中的一项)。使用外键关系可以获得以下好处:
然后,如果它被证明会影响性能,我就开始删除它。这是一个很好的策略,可以让你晚上睡个好觉。另外,请注意使用外键确实会带来一些开销(降低操作速度)。有趣的Jeremiah,根据我上面的帖子,我认为外键只会降低性能。谢谢+1在插入和更新数据时,外键约束将导致一些较小的开销。有一些特殊情况下,你想抛弃FK,但在大多数情况下,他们是你的朋友。(高写低读日志表是不需要FKs的一个示例。)