1. 什么是三范式
-- 设计关系型数据库表时,要想设计一个好的关系,必须使关系满足 一定的约束条件,这些约束条件就是 范式
2.为什么设计数据库要遵循 范式
-- 1. 使数据库简洁、结构明晰
-- 2. 不会发生插入、删除、更新操作带来的异常
-- 3. 避免数据冗余
3. 范式的种类
-- 第一范式(1NF)
-- 第二范式(2NF)
-- 第三范式(3NF)
-- 巴斯-科德范式(BCNF)
-- 第四范式(4NF)
-- 第五范式(5NF,又称完美范式)
-- 一般来说,数据库只需要满足第三范式就行了
4. 第一范式
-- 保证每列的原子性 : 数据库表中所有字段的值都是不可分解的原子值,不是集合、数组等非原子项
5. 第二范式
-- 保证每张表只描述一个事情
-- 示例(不符合第二范式)
学号 姓名 年龄 课程 成绩 学分
1 张飞 20 数学 90 2
2 关羽 21 语文 91 1
2 关羽 21 英语 91 1
3 张飞 22 英语 92 2
4 张让 25 英语 90 2
-- 分析
-- 1. 满足第一范式(字段的原子性)
-- 2. 不满足 第二范式
-- 描述了两个信息 : 1.学生信息 2. 课程信息
-- 存在问题
-- 1. 数据冗余
-- 同一门课程中,学分重复了
-- 同一个学生 参加了多门课程, 学号、姓名、年龄重复了
-- 2. 更新异常
-- 如果某们课程调整了学分,包含这门课程的所有记录,都得更新数据 (数据一致性成本较大)
-- 3. 插入异常
-- 如果开设一门新课程,如果没人选这门课程,该课程的信息无法存储
-- 4. 删除异常
-- 如果完成课程的学生记录删除,该门课程也会被删除
-- 示例(符合第二范式)
-- 学生信息表
学号 姓名 年龄
1 张飞 20
2 关羽 21
3 张让 25
-- 课程信息表
课程 学分
数学 2
语文 1
英语 3
-- 学生成绩表
学号 课程 成绩
1 数学 2
2 语文 1
2 英语 1
3 英语 2
4 英语 2
6. 第三范式
-- 保证 每列都 和 主键相关
-- 也就是 表的字段 和 主键 直接对应,不依靠其他字段
-- 分析
-- 学号 与 学分对应 需要依靠课程名称
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界