数据库的三大范式(例子说明)

1.数据库的范式:主要分为三种

第一范式:列不可再分

举个🌰:

在我们生活当中,可能很多地方需要填写地址,这些地址会存储到数据库中。
比如现在有一列中存着一个地址:江苏省苏州市姑苏区。
数据库这一列中就可以再细分为哪个省哪个市。

一般在数据库当中,会用数字来代替重复过多导致冗余的字段,比如江苏省我们就可以用1来代替。那么表中的这列省份数据就可以省下很多空间内容

第二范式:一张表只描述一件事情

如果一个学校考试有许多科目,各科成绩要细分的话(比如需要统计出选择题,填空题和解答题各个的分数)那么每一门就需要创建多张表。

第三范式:表中的每一列和主键都是直接依赖关系,而不是间接依赖

这里还是举个🌰方便理解​:

大家QQ都发过说说吧。

你发一篇说说,那么你这篇说说的内容,作者,时间日期都会存到数据库当中。
当你的好友来评论时,你在下面进行回复,你回复的内容也会被存到数据库当中,那么这个回复的内容要不要把作者(也就是你)存进数据库呢?

其实是不用的。因为你在你的说说下回复了评论你的人
那么你这个回复是不是就可以通过评论你的这个人而找到发这篇说说的作者,那不就是找到回复的作者(你)。

这样就可以有效避免数据库数据冗余

image-20220603184500720

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给您举几个例子。 首先,我们来看一下第一范式(1NF)。1NF要求每个属性都是原子性的,不可再分。例如,考虑以下一个表格: | 学生姓名 | 课程1成绩 | 课程2成绩 | 课程3成绩 | | -------- | ---------- | ---------- | ---------- | | 张三 | 80 | 90 | 85 | | 李四 | 70 | 75 | 80 | | 王五 | 85 | 80 | 90 | 这个表格不符合1NF,因为课程成绩不是原子性的,应该将其拆分为多个表格。更合理的表格应该是这样的: | 学生姓名 | 课程编号 | 成绩 | | -------- | -------- | ---- | | 张三 | 1 | 80 | | 张三 | 2 | 90 | | 张三 | 3 | 85 | | 李四 | 1 | 70 | | 李四 | 2 | 75 | | 李四 | 3 | 80 | | 王五 | 1 | 85 | | 王五 | 2 | 80 | | 王五 | 3 | 90 | 这个表格符合1NF,因为每个属性都是原子性的。 接下来,我们来看一下第二范式(2NF)。2NF要求满足1NF,且非主键属性完全依赖于主键。例如,考虑以下一个表格: | 作者 | 书名 | 出版社 | | --------- | --------------- | ------------ | | 张三 | 《数据库设计》 | 机械工业出版 | | 李四 | 《C语言教程》 | 人民邮电出版 | | 张三 | 《编程思想》 | 机械工业出版 | 这个表格不符合2NF,因为出版社属性不完全依赖于主键(作者+书名),而是和作者相关。更合理的表格应该是这样的: | 作者 | 书名 | | ---- | --------------- | | 张三 | 《数据库设计》 | | 李四 | 《C语言教程》 | | 张三 | 《编程思想》 | | 书名 | 出版社 | | --------------- | ------------ | | 《数据库设计》 | 机械工业出版 | | 《C语言教程》 | 人民邮电出版 | | 《编程思想》 | 机械工业出版 | 这个表格符合2NF,因为非主键属性(出版社)完全依赖于主键(作者+书名)。 最后,我们来看一下第三范式(3NF)。3NF要求满足2NF,且不存在传递依赖。例如,考虑以下一个表格: | 学生姓名 | 班级 | 班级所在学院 | 学院所在城市 | | -------- | ---- | ------------ | ------------ | | 张三 | 1 | 计算机学院 | 北京市 | | 李四 | 2 | 机械学院 | 上海市 | | 王五 | 3 | 化学学院 | 北京市 | 这个表格不符合3NF,因为班级所在学院和学院所在城市之间存在传递依赖,即班级 -> 班级所在学院 -> 学院所在城市。更合理的表格应该是这样的: | 学生姓名 | 班级 | 班级所在学院 | | -------- | ---- | ------------ | | 张三 | 1 | 计算机学院 | | 李四 | 2 | 机械学院 | | 王五 | 3 | 化学学院 | | 学院名称 | 学院所在城市 | | ---------- | ------------ | | 计算机学院 | 北京市 | | 机械学院 | 上海市 | | 化学学院 | 北京市 | 这个表格符合3NF,因为不存在传递依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值