mysql入门(三)

空扰寡人 提交于 2020-03-28 18:15:35

1. 数据的完整性

实体:一个实体就是一条记录
域:就是一个字段
引用的完整性:两张表之间的关联的完整(不可避免的)
自定义完整性:自己定义的规则,可以保证各种规范不出现偏差.

(1).保证实体完整性

1.自动增长的列(auto_increment)
2.主键的约束(primary key)
3.唯一键(unique)

(2)保证域的完整性

1.数据类型的约束
2.默认值的约束
3.非空的约束

(3)保证引用的完整性

建立外键->只能先删除从表,才能删除主表

(4)自定义的完整性

1.存储过程 (是mysql当中的特殊自定义函数)
2.触发器 (是一个特殊的存储过程,不用调用)

 

2. 外键(foreign key)

外键:从表的关联字段。外键的约束是为了保证引用的完整性,外键和主表的关联字段名字可以不一样,数据类型要一致.

特点:
1.主表中不存在的记录,从表中也不允许插入
2.主表中存在的记录,从表中可以先行删除
3.先删除从表,在删除主表

 --学校数据库,学生的信息是主表,成绩是从表 
create table userinfo(
    id int auto_increment primary key comment'学号',
    stu_name char(64)
);
    
insert into userinfo values(null,'小明'),(null,'小马'),(null,'小李'),(null,'小刘');
    
-- 对于从表来说,主键不一定是必须的,但是按照理论应当添加一个
create table score(
    sid int auto_increment primary key comment'主键',
    stuno int comment'学号',
    ch float,
    math float,
    -- 相当于把关键字写成函数用:从表score中的stuno字段关联主表userinfo中的id字段
    foreign key(stuno) references userinfo(`id`)
);

insert into score values(null,1,100,90),(null,3,130,130);

外键的操作:

1.严格约束(constraint);
2.置空操作(set null),主表删除,从表置空;
3.联级操作(cascade),主表更新,从表联动(更新);
4.删除的时候也可以使用cascade,这样可以保证表中没有垃圾数据。

外键在数据量比较小的时候使用,我们要设置外键,必须要对表的关系非常的清楚。在从表中的数据和主表中的数据不对等的时候,我们还需要手动添加或删除。

1.设置了外键会影响效率
2.一般来说,每个从表都是单独的数据

外键升级版本 -> 触发器

foreign key(stuno) references userinfo(`id`) on delete set null on update cascade  -- 在删除数据的时候设置为空(删完之后,这条信息就是垃圾了),                                                                                      在更新的时候级联

-- 完整的外键(在建表的时候)
foreign key(stuno) references userinfo(`id`) on delete cascade on update cascade  -- 在删除数据的时候级联,在更新的时候级联

删除外键,应当删除外键的名字

alter table score drop foreign key `score_ibfk_1`;

添加外键(建表的时候没有设置外键,建完表之后添加外键的操作),可以自定外键的名称(stuno_id)

alter table `score` add CONSTRAINT `stuno_id` FOREIGN KEY (`stuno`) REFERENCES `userinfo` (`id`)ON DELETE CASCADE ON UPDATE CASCADE;

 

3. 实体之间的关系

一个实体就是一条记录。

1.一对一的关系
2.一对多的关系
3.多对一的关系
4.多对多的关系

1). 一对一的关系

一个主表中的数据对应一个从表中的数据。

2). 一对多(多对一)的关系

订单系统:一个人买了很多不同类目的商品。

3). 多对多的关系

多对多关系中,不太区分谁是主要的表。

 

4. 数据库的设计

 

(1). 标识的实体

(2). 实体的属性

(3). 标识实体之间的关系:根据要求设计

(4). 生成E-R图

 

5. 数据的规范化

建立表的一些规范,统称为三范式。

(1)第一范式

第一范式:(1NF)确定每一列的数据原子化(不可在拆分)

(2)第二范式

第二范式:(2NF)基于第一范式,一张表描述一件事物(从表的非主键字段依赖主键字段)

(3)第三范式

第三范式:(3NF)必须基于第二范式,消除传递依赖(主键信息既可以查到说有关联信息)

 

 

 

 

https://blog.csdn.net/nihui123/article/details/90452750

https://www.runoob.com/mysql/mysql-database-export.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!