数据完整性约束(1)——实体完整性、参照完整性⼀.数据完整性的分类
在关系模型中,提供了实体完整性,参照完整性,⽤户定义完整性。
⼆.实体完整性
2.1什么是实体?
实体是⼀个数据对象,指的是客观存在并可以相互区分的事物,⽐如学⽣,⽼师等。⼀个实体在数据库中对应的是⼀条记录。
2.2实体完整性在MySQL中实现
实体完整性在MySQL中的实现是通过主键约束和候选键约束实现的。
2.2.1主键约束
⾸先,我们来了解⼀下主键是什么:主键是表中的某⼀列或者多个列的组合。多个列就是复合主键。
在MySQL中的主键必须保证⼀下⼏个要求:
1.⼀个表只能有⼀个主键,主键可以复合但是只有⼀个。
2.唯⼀性,主键的值在⼀张表⾥⾯是不能重复是唯⼀的,⽽且不能为空。
3.最⼩化原则,当⼀个复合主键删除掉复合的某⼀⾏后如果这个主键还是复合的,那么就是代表原来那个复合主键没有满⾜最⼩化原则。
2.2.2实现主键
使⽤关键字:primary key
⽅式⼀:单列主键
create table tb(
tb_pk int primary key
);
⽅式⼆:复合主键
create table tb(
tb_id int ,
tb_name varchar(10),
primary key (tb_id,tb_name)
);
2.2.3候选键约束
如果⼀张表中的某⼀个列可以唯⼀标识这张表,⼜不含其他多于的属性,那么他就是⼀个候选键。⽐如学⽣的学号。
同样的候选键也是⾮空并且唯⼀值,候选键也⽀持复合。
2.2.4候选键与主键键
表中主键只有⼀个但是候选键可以拥有多。
两者都会创建索引,主键是priamry key索引,但是候选键是unique索引
2.2.5实现候选键
使⽤关键字unique:
create table tb(
tb_id int ,
tb_name varchar(10),
unique(tb_id,tb_name)
);
三.参照完整性
在现实世界中存在多个对应的关系,那么这个对应关系就是参照完整性,也就是MySQL中的外键。
3.1参照完整性的定义为(图解):
3.2参照的完整性语法
关键字:foreign key
语法:
foreign  key  (本⾝表的列)  references
          从表表名(从表的主键)
          on delete restrict  |  cascade  |  set  null  |  no  action           on update restrict  |  cascade  |  set  null  |  no  action restrict :删除或者更新时,在外间中出现的值操作失败
cascade:将外键的值⼀同删除或者更新
set null :删除更新时外键的值被设置为空
例⼦⾸先说明有两张表:
create table tb(
tb_id int ,
tb_name varchar(10),
foreign key (tb_id) references tb1(tb_id) on delete cascade on update cascade
mysql删除重复的数据保留一条
);
create table tb1(
tb_id int primary key,
tb_name varchar(10),
unique(tb_id,tb_name)
);
3.3注意点
1.⾸先从表必须是存在的。
2.从表必须是主键被参照

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。