在数据库中明确设置关系有什么好处

时间:2010-07-08 03:38:39

标签: mysql database-design relation

当您创建数据库架构并提出所有外键时。在数据库中明确定义它们有什么好处?

有优势吗?

如果它是依赖的MySQL是我将要使用的数据库。

3 个答案:

答案 0 :(得分:4)

外键约束用于维护Referential Integrity,这是一个数据库约束,可确保数据之间的引用确实有效且完整(数据库不仅应存储数据,还应确保其质量)。换句话说,它们有助于确保表之间的关系保持一致。来自维基百科:

  

参照完整性是数据的属性,当时   满意,需要每一个价值   关系的属性(列)   (表)作为另一个的值存在   属性在不同(或相同)   关系(表)。

     

不那么正式,而且是关系型的   数据库:用于参照完整性   保持表中的任何字段   声明外键可以包含   只有父表的值   主键或候选键。对于   例如,删除记录   包含a引用的值   另一个表中的外键会   打破参照完整性。一些   关系数据库管理系统   (RDBMS)可以强制引用   完整性,通常是通过删除   外键行也是如此   保持诚信,或通过返回   错误而不执行删除。   可以确定使用哪种方法   通过参照完整性约束   在数据字典中定义。

     
     

alt text

     

没有的数据库示例   强制执行参照完整性。在   这个例子,有一个外键   专辑表中的(artist_id)值   引用一位不存在的艺术家    - 换句话说,有一个外国人   键值没有对应的   引用的主键值   表。这里发生了什么事   有一位艺术家叫   “Aerosmith”,artist_id为“4”,   这是从艺术家删除   表。然而,专辑“吃了   Rich“提到了这位艺术家   引用完整性,这个   是不可能的。

为了在MySQL的两个表之间创建一个外键,两个表都需要是InnoDB表(使用默认的MyISAM表类型,你可以“定义”一个外键但它们不能实际做任何事情)。

答案 1 :(得分:2)

数据完整性 - 约束有助于确保不同表中的数据一致。另一个好处是DBMS的查询优化器可以使用约束,这将有助于优化某些查询的性能。

答案 2 :(得分:1)

正确定义主/外键关系后,数据库会处理强制引用完整性。您将不被允许插入违反您在数据库级别指定的限制的数据。