详解MySQL:数据完整性
数据库  /  管理员 发布于 6年前   205
数据完整性分为:实体完整性,域完整性,参考完整性。
参考完整性:
参照完整性指的就是多表之间的设计,主要使用外键约束。
多表设计: 一对多、多对多、一对一设计
一:实体(行)完整性
实体完整性通过表的主键来实现。
使用主键来表示一条记录的唯一,且不为空
语法:primary key
主键分类:
逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)
业务主键:例如username,参与实际的业务逻辑。
特点:唯一,not null
自动增长:auto_increment
例如:
create table person2(id int primary key auto_increment,name varchar(100));
二:域(列)完整性
非空约束:not null
唯一约束:unique
creat table person3(id int not null unique,name varchar(20) not null unique,gender varchar(20) not null,phone char(11) unique #不能有,);
三:参照完整性
1,一对多
a:例如:客户和订单的关系就是一对多,一个客户可以有多张订单,一张订单属于一个客户;
b:外键设置到多的一方
语法输入创建一对多:
创建客户表:
create table customers(id int,name varchar(20),address varchar(100),primary key(id));
创建订单表:
create table orders(id int,order_num int primary key,price float(4,2),customer_id int, constraint customer_ord_fk foreign key(customer_id) references customers(id));
注:constraint: 约束,foreign key: 外键,references: 参照
创建一个名叫customer_ord_fk的外键约束,外键指的是customer_id,参照的是 customers表中的id列
表格操作创建一对多
customers表
orders表
orders外键设置
创建一个名叫customer_ord_fk的外键约束,外键栏位customer_id,参照的是 customers表中的id列
扩展:四种子表的删除更新策略:
2,多对多
创建老师表:
Create table teachers(id int primary key auto_increment,name varchar(20) ,gender char(5),subject varchar(20));
创建学生表:
Create table students(id int primary key , name varchar(20),age int);
第三张为关联表:
Create table teacher_student( id int,t_id int,s_id int,primary key(t_id,s_id) constraint teacher_id_fk foreign key(t_id) references students(id), constrains student_id_fk foreign key(s_id) references teachers(id));
表格操作多对多
创建老师表:
创建学生表:
第三张表:
3,一对一
(1)一般情况,设计一张表格即可
(2)设计成两张表格
法1:第二张表格中创建一个字段作为外键(设置求唯一 unique)对应第一张表格中的主键;
法2:直接使用第二张表格中的主键作为外键,对应第一张表格的主键。
两张表:unique很重要
create table user(id int primary key auto_increment,name varchar(20),age int);
create table card(id int primary key auto_increment,num varchar(20) not null,address varchar(100) not null,user_id int unique,constraint user_card_fk foreign key(user_id) references user(id));
以上所述是小编给大家介绍的MySQL数据完整性详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号