当您创建数据库架构并提出所有外键时。在数据库中明确定义它们有什么好处?
有优势吗?
如果它是依赖的MySQL是我将要使用的数据库。
答案 0 :(得分:4)
外键约束用于维护Referential Integrity,这是一个数据库约束,可确保数据之间的引用确实有效且完整(数据库不仅应存储数据,还应确保其质量)。换句话说,它们有助于确保表之间的关系保持一致。来自维基百科:
参照完整性是数据的属性,当时 满意,需要每一个价值 关系的属性(列) (表)作为另一个的值存在 属性在不同(或相同) 关系(表)。
不那么正式,而且是关系型的 数据库:用于参照完整性 保持表中的任何字段 声明外键可以包含 只有父表的值 主键或候选键。对于 例如,删除记录 包含a引用的值 另一个表中的外键会 打破参照完整性。一些 关系数据库管理系统 (RDBMS)可以强制引用 完整性,通常是通过删除 外键行也是如此 保持诚信,或通过返回 错误而不执行删除。 可以确定使用哪种方法 通过参照完整性约束 在数据字典中定义。
没有的数据库示例 强制执行参照完整性。在 这个例子,有一个外键 专辑表中的(artist_id)值 引用一位不存在的艺术家 - 换句话说,有一个外国人 键值没有对应的 引用的主键值 表。这里发生了什么事 有一位艺术家叫 “Aerosmith”,artist_id为“4”, 这是从艺术家删除 表。然而,专辑“吃了 Rich“提到了这位艺术家 引用完整性,这个 是不可能的。
为了在MySQL的两个表之间创建一个外键,两个表都需要是InnoDB表(使用默认的MyISAM表类型,你可以“定义”一个外键但它们不能实际做任何事情)。
答案 1 :(得分:2)
数据完整性 - 约束有助于确保不同表中的数据一致。另一个好处是DBMS的查询优化器可以使用约束,这将有助于优化某些查询的性能。
答案 2 :(得分:1)
正确定义主/外键关系后,数据库会处理强制引用完整性。您将不被允许插入违反您在数据库级别指定的限制的数据。