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