什么是外键约束

什么是外键约束,第1张

外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列。

外键约束对子表如此检查处理:

在子表上进行INSERT、UPDATE  *** 作的限制是,要和主表中的主键值匹配,或为NULL, 否则不允许。

外键约束对父表如此检查处理:

在父表_上进行UPDATE、DELETE *** 作的限制,取决于在定义子表的外键时指定的ON UPDATE、ON DELETE子句(不同的DBMS支持的情况不尽相同)。众ON DELETE子 句各选项的作用:

1、No ACTION :删除主表记录,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。此为默认 *** 作(不指定ON DELETE子句, 系统自动采取的 *** 作)。

2、CASCADE  (级联):删除主表记录,也将删除子表中的匹配记录。

3、SET NULL :删除主表记录,将子表中的匹配记录的外键值改为NULL。

4、SET DEFAULT :删除主表记录,将子表中的匹配记录的外键值改为默认值。众ONUPDATE子句各选项的作用。

扩展资料

外键的用途是确保数据的完整性。它通常包括以下几种:

1、实体完整性,确保每个实体是唯一的(通过主键来实施)

2、域完整性,确保属性值只从一套特定可选的集合里选择

3、关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值。

约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了。

则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。

FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。

如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该 *** 作不可实现。

若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

参考资料来源:百度百科--外键

参考资料来源:百度百科--约束

数据库外键约束:这个是实现表与表之间的约束,从表的字段值必须在主表中。存在外键约束毕竟是一个约束,只是保证数据完整性的一个手段。

外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。

加入外键的条件:

1、两个表有相同属性字段,取值范围相同;

2、外键在主表中是主键或者是唯一字段;

3、外键可以是多个字段的组合。

数据库系统本身约束手段是更可靠的。对于开发来说,可能觉得建立外键关系没必要,但是到了以后维护阶段,或升级阶段,如果没有这个关系,可能不利维护工作的提升。表关系的建立,也阐述着具体的业务逻辑关系,增加了可读性。

在逻辑性,关联性比较强的时候不妨添加。其他时候简单的外键约束也是可以的,不需要一有关系就添加,但是要有其他机制保证数据完整性,毕竟外键对于开发有时候还是有限制。总的来说前期开发可以不管,后期维护尽量转移到数据库本身的约束来建立关系。

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

阻止执行:

1、从表插入新行,其外键值不是主表的主键值便阻止插入;

2、从表修改外键值,新值不是主表的主键值便阻止修改;

3、主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行);

4、主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

级联执行:

1、主表删除行,连带从表的相关行一起删除;

2、主表修改主键值,连带从表相关行的外键值一起修改。两种方法提供给用户选择。无论选取哪种方法,从表里都不会有多余行。从另一个角度理解,用拒绝同一事物在从表中的标志与主表不一致来实现与主表中的标志一致。

扩展资料:

外键使用原则:

1、 为关联字段创建外键。

2、 所有的键都必须唯一。

3、避免使用复合键。

4、外键总是关联唯一的键字段。

阻止执行和级联执行的两种实现方法,通过下面方式选择:

1、界面:设级联更新、级联删除两个选择方框,选取则级联执行、不选取则阻止执行;

2、命令:设E)kSCM)E、RESTRICT两个可选项,CASCADE为级联执行、RESTRICT为阻止执行。

参考资料来源:百度百科——外键


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11775388.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存