0
点赞
收藏
分享

微信扫一扫

MYSQL-三大范式和表约束(通俗易懂)

先峰老师 2022-03-21 阅读 51
java后端

目录

?? 一,什么是范式

范式简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式

?? 二,三大范式的理解

1,第一范式(确保每列保持原子性)

例如:某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成个数据库表的字段
在这里插入图片描述

2,第二范式(保证每列都和主键相关)

例如:对于一张订单表,应该只包括订单信息,若第一张有数量信息,不符合第二范式,对于订单数量应该单独为一张表
在这里插入图片描述

3,第三范式(保证每列和主键直接相关,不能间接相关)

例如:在设计个订单数据表的时候,可以将客户编号作为个外键和订单表建立相应的关系
在这里插入图片描述

4,表的关系

(1)一对一

一对一就是个学生对应个学号
在这里插入图片描述

(2)一对多

一对多是 个班级包含多个学生(用两张表表示)
在这里插入图片描述

(3)多对多

张表中的条数据可以对应到另张表的多条数据

在这里插入图片描述

??三,表的约束有哪些

??1,约束类型

表约束也是为了规范程序员正确使用表的,但表约束是预
先设置的,设置之后就对所有插和修改立即生效

在这里插入图片描述

??2,表的约束

(1)非空约束:NOT NULL

创建的字段默认是可以为空的
在这里插入图片描述
而添加了非空约束之后,设置的字段就不能为空了。
语法

(2)主键约束:PRIMARY KEY

主键的特征:
1.主键可以由多个字段或单个字段组成
2. 主键不能为空且唯
3. 个表中只能有个主键
独立主键语法:

在这里插入图片描述

联合主键语法:

 示例:
> create table test5(
id int,
name varchar(250),
primary key(id,name)
);

在这里插入图片描述

(3)唯一约束:UNIQUE

唯约束就是对应字段的值是唯的,不能重复,但一个表可以有多个唯一索引
语法:

在这里插入图片描述

唯一约束和主键约束区别(面试常考)

(4)外键约束:FOREIGN KEY

外键用于关联其他表的主键或唯键
外键可以插入NULL,多个NULL,若外键指定了值,那这个值一定要有效,有效是这个值在主表存在了
语法:

示例:
创建学生表student,个学生对应个班级,个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

-- 重新设置学?表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(250) DEFAULT 'unkown',
qq_mail VARCHAR(250),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);

(5)默认值约束: DEFAULT

指定id列为主键

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大
值+1

举报

相关推荐

0 条评论