第二范式的一些理解

第二范式比较官方的解释是:
第二范式( 2NF )要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属
性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个员工的区分,该身份证号码即为候选键,
任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分。 第二范式( 2NF )要求实
体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。如果存在,那么这个属
性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常
需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于
主键。
 
嗯,读完之后似懂非懂,最后到底是个什么玩意,还是一脸懵逼
 
一、我们先从概念入手:
比如一张表中有这么些属性:key1,key2,列1,列2,列3
其中key1和key2组成主键,第二范式就是说列1、2、3完全依赖于key1+key2,而不是仅依赖于key1或者仅依赖于key2(也就是部分依赖)。
大白话说就是只要你告诉我key1和key2 的值,我就能立马确定出列1、2、3的值,但是如果你只告诉我key1或者key2的值,那么抱歉,鬼知道列1、2、3的值是多少,除非它是部分依赖。
从函数方面看完全依赖,z=2x+3y   (类比 x:key1; y:key2; z:列1、2、3)  ,只知道x或者y的值是无法确定出z值的!
部分依赖就是z=2x、z=3y ,不再具体解释
说了这么多,应该理解 完全依赖和部分依赖 的意思了吧🐶
二、为什么
那么再说一说为什么要有第二范式:
举个例子:
学号、课程、姓名、门派、掌门、分数,我们用 ‘学号+课程’ 作为主键来建表
可以看到,表里有很多重复的数据,造成数据冗余,就像一个人明明可以一句话就能说清楚的事,非要重复多遍,是不是有种欠抽的感觉!
后来经过我们的前辈研究发现,凡是有这种数据冗余的现象都有部分依赖迹象的存在,就像该表中的  姓名、门派、掌门部分依赖于学号,最后把它总结归纳为第二范式,编入我们的三浪箴言,,额。。。是三范式箴言。
所以我们把上表拆分为两张:
 
以上内容纯属自己的见解,如有不对的地方,望指正,谢谢🙏
 
参考资料:
 
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值