一、基本概念
定义:范式是指数据建模中必须遵守一定的规则
目的:降低数据的冗余性
缺点:获取数据时,需要通过Join拼接出最后的数据
分类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。
一般建模只需要满足第三范式即可
二、函数依赖
在学习范式之前需要知道函数依赖
1.完全函数依赖
如上表所示,学号、课程能推出分数,但缺少其中一个就推不出分数。即:分数完全依赖于学号、课程
2.部分函数依赖
如上表所示,学号、课程能推出姓名,但缺少其中一个也可以推出姓名。即:姓名部分依赖于学号、课程
3.传递函数依赖
如上表所示,学号推出系名,系名推出系主任,但系主任推不出学号,系主任主要依赖于系名。即:系主任传递依赖于学号;即通过A得到B,通过B得到C,但是C得不到A,那么C传递依赖于A。
三、三范式区别
(1)第一范式1NF
核心原则:满足属性不可切割
下表不符合第一范式表格设计
ID | 商品 | 商品ID | 用户ID |
---|---|---|---|
001 | 5台笔记本 | XXX旗舰店 | 8477 |
下表符合第一范式表格设计
ID | 商品 | 数量 | 商品ID | 用户ID |
---|---|---|---|---|
001 | 笔记本 | 5 | XXX旗舰店 | 8477 |
(2)第二范式2NF
核心原则:不能存在 非主键字段 部分函数依赖 主键字段
上表主键是(学号、课程),其中姓名、系名、系主任都部分依赖于(学号、课程)
即通拆分表,满足第二范式核心原则
表一:
表二:
其中表二仍然存在数据冗余的现象,两条相同的数据又重复存储了,则需要通过第三范式解决
(3)第三范式3NF
核心原则:不能存在 非主键字段 传递函数依赖 主键字段
将上面的表二继续拆分成两张表,满足第三范式核心原则
以上内容了解知道即可
参考:atguigu