数据库的三大范式例题
本篇文章给大家带来《数据库的三大范式例题》,石家庄人才网对文章内容进行了深度展开说明,希望对各位有所帮助,记得收藏本站。
在数据库设计中,为了避免数据冗余和数据异常,需要遵循一定的规范,这就是数据库范式。数据库范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构化的,同时,效率也会得到提高。数据库范式是数据库设计中必不可少的知识点,下面介绍数据库设计的三大范式,并给出数据库三大范式的例题。
1NF:
第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。
2NF:
第二范式(2NF)是在满足第一范式的基础上,消除了非主属性对码的部分函数依赖。也就是说,一个数据库表中非主属性必须完全依赖于主键,而不能只依赖于主键的一部分。
3NF:
第三范式(3NF)是在满足第二范式的基础上,消除了非主属性对码的传递函数依赖。也就是说,一个数据库表中不包含非主属性对码的传递函数依赖。简而言之,第三范式就是属性不依赖于其它非主属性。
数据库三大范式例题
下面以学生信息表为例,说明如何将一个不符合范式的表逐步优化到第三范式。
不符合任何范式的学生信息表:
| 学生姓名 | 课程 | 老师 | 老师电话 | 学生住址 ||---|---|---|---|---|| 张三 | 语文 | 李老师 | 13812345678 | 北京市海淀区 || 张三 | 数学 | 王老师 | 13998765432 | 北京市海淀区 || 李四 | 英语 | 刘老师 | 13711112222 | 上海市浦东新区 |
分析:
这张表中,学生姓名、课程、老师、老师电话、学生住址都属于基本数据项,因此满足第一范式。但是,这张表存在以下问题:
1. 数据冗余:例如,张三的住址信息重复存储了两次。2. 数据更新异常:如果张三的住址信息发生变化,需要修改两条记录,否则就会出现数据不一致的情况。3. 数据插入异常:如果只知道学生姓名和课程,无法插入数据,因为缺少老师和老师电话信息。4. 数据删除异常:如果删除张三的语文课程信息,同时也会删除张三的住址信息。
优化到第二范式的学生信息表:
为了解决上述问题,可以将学生信息表拆分成两个表:学生表和课程表。
学生表:
| 学生ID | 学生姓名 | 学生住址 ||---|---|---|| 1 | 张三 | 北京市海淀区 || 2 | 李四 | 上海市浦东新区 |
课程表:
| 课程ID | 课程 | 老师 | 老师电话 | 学生ID ||---|---|---|---|---|| 1 | 语文 | 李老师 | 13812345678 | 1 || 2 | 数学 | 王老师 | 13998765432 | 1 || 3 | 英语 | 刘老师 | 13711112222 | 2 |
分析:
经过拆分后,学生表和课程表都符合第二范式,消除了数据冗余和数据异常。但是,这张表仍然存在以下问题:
1. 数据冗余:例如,李老师的电话信息重复存储了两次。2. 数据更新异常:如果李老师的电话信息发生变化,需要修改两条记录,否则就会出现数据不一致的情况。
优化到第三范式的学生信息表:
为了解决上述问题,可以将课程表中的老师电话信息拆分到老师表中。
学生表:
| 学生ID | 学生姓名 | 学生住址 ||---|---|---|| 1 | 张三 | 北京市海淀区 || 2 | 李四 | 上海市浦东新区 |
课程表:
| 课程ID | 课程
| 老师ID | 学生ID ||---|---|---|---|| 1 | 语文 | 1 | 1 || 2 | 数学 | 2 | 1 || 3 | 英语 | 3 | 2 |老师表:
| 老师ID | 老师 | 老师电话 | |---|---|---|| 1 | 李老师 | 13812345678 | | 2 | 王老师 | 13998765432 | | 3 | 刘老师 | 13711112222 |
分析:
经过再次拆分后,学生表、课程表和老师表都符合第三范式,消除了数据冗余和数据异常。石家庄人才网小编认为数据库设计的时候,尽量满足第三范式,这样可以减少数据冗余,提高数据的一致性。
有关《数据库的三大范式例题》的内容介绍到这里,想要了解更多相关内容记得收藏关注本站。
- 上一篇:height 的动词和名词
- 下一篇:返回列表
版权声明:《数据库的三大范式例题》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/quanzi/24151.html