外键约束的作用

外键是该表是另一个表之间联接的字段 外键必须为另一个表中的主键 

外键的用途是确保数据的完整性。它通常包括以下几种: 1 实体完整性,确保每个实体是唯一的(通过主键来实施) 

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

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

FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。 外键是用来控制数据库中数据的数据完整性的,就是当你对一个表的数据进行操作和他有关联的一个或更多表的数据能够同时发生改变这就是外键的作用
时间: 2024-10-12 21:14:39

外键约束的作用的相关文章

MySQL外键约束的使用

软件工程试验二中要求建立如下数据库: 使用MySQL建立一个“图书数据库“ BookDB,包含两张表:– Book {ISBN (PK), Title, AuthorID (FK), Publisher, PublishDate, Price}– Author {AuthorID (PK), Name, Age, Country} 其中FK是 foreign key的意思,即给Book数据表加上一个外键约束,下面先解释下外键约束的作用. 定义外键主要是为了维护关系数据库的完整性,使相关数据表之间

mysql的外键约束

创建表格: #首先登录mysql mysql -uroot 打开一个数据库 mysql>use db1; 创建一个父表,我们命名为province, mysql> create table province ( -> id smallint auto_increment key, -> name varchar(10) NOT NULL -> ); 创建一个子表,命名为student,其中其pid引用来自province的id, mysql> create table

外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)

1.1.1 外键约束 Create database day16; Use day16; 创建部门表: create table dept( did int primary key auto_increment, dname varchar(20) ); insert into dept values (null,'研发部'); insert into dept values (null,'教研部'); insert into dept values (null,'市场部'); 创建员工表: c

MYSQL外键约束的参照操作

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松.这里以MySQL为例,总结一下3种外键约束方式的区别和联系. 这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组. 首先创建用户组表: 创建用户组表 create table t_group ( id int not null, name varcha

MySQL外键约束

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表. 外键是用来保证数据的完整性和一致性,通过外键的检查而使不正确的删除,插入操作失败. 不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松. 触发器同样也能完成修改或者删除操作的级联操作,2者的区别如下(自己的理解): 1.触发器会更耗资源,对原表的操作和对从表的级联操作是在一个事务中的. 2.表的数据量不大,结构不复杂时优先考虑外键约束. 3.触发器比外键约

【转】MySQL外键约束On Delete、On Update各取值的含义

转载地址:http://hi.baidu.com/jxqlovejava/item/3d2cc5b5d689917c244b0920 ? 先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性. 当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除. 当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录

SQL的主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

SQL的主键和外键约束详解及用途

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄.身份证号是唯一能确