数据库范式通俗理解

写在前面

数据库范式一直是一种很难理解的,各种翻译版本讲解的方式都比较难理解,在这重新梳理下自己的理解范式

一、范式

NF (normal from) 规范的形式

二、1NF

要求我们表中的每个字段都必须是最基本的属性,即原子属性(不可再拆分)。

例如:学生表中,有学号,姓名,联系方式,这个联系方式就不满足1NF,因为联系方式还可以拆分为手机号,微信号,QQ号等。

三、2NF(重点是完全依赖于候选键)

要求表中所有的非主键属性都依赖于完全的候选键(非候选键的部分、多个候选键)。如果候选键只有一个属性,那么只需要考虑其他属性都依赖于主键就好了。

例如:学生选课表,主键是学号和课程号,非主键属性是选课的时间,系统确认的时间,所选课程的名字,课程名字只依赖于候选键中的课程ID,而不是整个候选键。

四、3NF

满足第二范式的情况下,要求所有非键属性不应该依赖于其他非候选键。避免发生传递依赖。

名词解释:

  1. 传递依赖:属性可以通过一个中间属性得出其他属性。
  2. 例如:学生表,主键是学号,非主键属性为学生姓名、所在院系Id,所在院系名。院系名称依赖于院系ID,在这个表中传递依赖于学生ID。

五、BCNF

要求所有属性(包含候选键中的属性)不能依赖其他非候选键,不能存在传递依赖于主键。

名词解释:

  1. 首先跟3NF的区别,3NF是非键属性,BCNF是所有属性。
  2. 什么是键属性,主键可以由多个属性组成,其中的属性叫做键属性,其他的属性叫做非键属性。
    3.例如:学生专业学分表,其中包含字段:学生ID,专业,导师,学生专业学分,这其中学生ID和专业是联合主键 。由于一个老师执教一个专业,所以,主键属性中专业依赖于导师属性,传递依赖于候选键。
  3. 如果候选键是单属性,怎在3NF的基础上,一定满足BCNF。

六、4NF

不存在多值依赖。

名词解释:

  1. 多值,关系中存在多个属性,且这几个属性不能直接确定其他值
  2. 必须通过其中几个一起确定一个值

最后

如果还是不理解,可以看这个博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值