关于范式的学习
范式
范式的基本概念
第一范式
1
数据表必须存在主键,并且字段满足原子性
第二范式
1
在第一范式的基础上,主键以外的其他字段必须 全部依赖 主键,不能 部分依赖
第三范式
1
在第二范式的基础上,主键以外的其他字段必须 直接依赖 主键,不能 传递依赖
举反例,认识范式
第一范式
学生编号 | 学生姓名 | 联系方式 |
---|---|---|
1001 | 张三 | 1332662,12736@gmail.com |
1002 | 王五 | 12332662,123456@qq.com |
1003 | 李四 | 17832662,1der36@163.com |
1001 | 赵六 | 145462662,35736@gmail.com |
问题:
- 不存在主键
- 联系方式字段,不满足原子性
修改:
学生编号(pk) | 学生姓名 | 电话 | 邮箱 |
---|---|---|---|
1001 | 张三 | 1332662 | 12736@gmail.com |
1002 | 王五 | 12332662 | 123456@qq.com |
1003 | 李四 | 17832662 | 1der36@163.com |
1004 | 赵六 | 145462662 | 35736@gmail.com |
第二范式
学生编号 + 教师编号(pk) | 学生姓名 | 教师姓名 |
---|---|---|
1001 + 001 | 张三 | 王老师 |
1002 + 002 | 王五 | 张老师 |
1003 + 003 | 李四 | 赵老师 |
1001 + 002 | 张三 | 张老师 |
问题:
- 学生姓名只部分依赖于主键
修改:
key:学生与教师满足多对多关系
学生表:
学生编号(pk) | 学生姓名 |
---|---|
1001 | 张三 |
1002 | 王五 |
1003 | 李四 |
教师表:
教师编号(pk) | 教师姓名 |
---|---|
001 | 王老师 |
002 | 张老师 |
003 | 赵老师 |
学生-教师 关系表:
|id(pk) |学生编号(fk)|教师编号(fk)|
| 1 |——-|——-|
| 2 | 1001 | 001 |
| 3 | 1002 | 002 |
| 4 | 1003 | 003 |
| 5 | 1001 | 002 |
第三范式
学生编号(pk) | 学生姓名 | 班级编号 | 班级 |
---|---|---|---|
1001 | 张三 | 001 | 一年一班 |
1002 | 王五 | 002 | 一年二班 |
1003 | 李四 | 003 | 一年三班 |
问题:
- 班级依赖于班级编号,不直接依赖于学生编号
修改:
key:学生与班级满足多对一关系
班级表:
班级编号(pk) | 班级 |
---|---|
001 | 一年一班 |
002 | 一年二班 |
003 | 一年三班 |
学生表:
学生编号(pk) | 学生姓名 | 班级编号(fk) |
---|---|---|
1001 | 张三 | 001 |
1002 | 王五 | 002 |
1003 | 李四 | 003 |
实际应用(设计数据库)
一对一:一张表
一对多:两张表,多做外键
多对多:三张表,两张数据表,一张关系表
关于范式的学习
http://lhystutest.top/2023/01/30/数据库/Mysql/关于范式的学习/