什么是范式?第一范式、第二范式、第三范式的区别?

参考链接:
https://www.zhihu.com/question/24696366
总结:
范式的含义:
符合某种级别的关系模式的集合。表示一个关系内部的各属性之间联系的合理化程度。可以理解为:数据表的表结构所符合的某种设计标准的级别。
第一范式:是对关系模式的基本要求。不满足第一范式的关系,不能称为关系型数据库。符合第一范式的关系,每个属性都不可以再分割。
但是如果仅仅满足第一范式:仍然存在数据冗余过大、插入异常、删除异常、修改异常等的问题。
第二范式:建立在第一范式的基础上,首先满足第一范式。
消除了非主属性对码的部分函数依赖。
概念解析:
函数依赖,在一张表中,属性x(可能为一个属性也可能为一个属性组)确定的情况下,Y的取值必定可以确定。我们就说Y依赖于X。跟y=f(x)的关系很相似。
衍生三个函数依赖 的概念:
完全函数依赖,部分函数依赖,传递函数依赖。
属性Y依赖于属性X。X可能为一个属性或者一个属性组。
完全函数依赖::如果X为一个属性,那么Y对于X就是完全函数依赖。如果X为一个属性组,对于X的任何一个真子集X”,Y都不能依赖于它。那么函数Y对于X完全函数依赖。
部分函数依赖:
如果,X为一个属性组。对于X的某个真子集,Y依赖于它。那么就成函数Y对于X部分函数依赖。
传递函数依赖::如果Z函数依赖于Y,Y函数依赖于X;X不依赖于Y,Y不包含于X。那么我们就称之为Z传递依赖于X。
码:
假设K为表中某个属性或者某个属性组。对于除了K以外的其他的属性,都完全依赖函数依赖于K。我们就称K为候选码,简称 。加入K中的属性确定的情况下,其他的属性,完全都能确定,如果K不确定或者K中的任何一个属性不确定,其他的属性不能确定,我们就说K为。一张表中可以有超过一个码。
包含在任何一个码中的属性称为主属性。其余的称为非主属性,即任何一个码中都不包含的属性,成为非主属性。
如何判断一个数据表,是否满足第二范式:
第一步:先找出数据库中所有的码。
先找出单个属性,再找出两个属性的组合,再找出三个属性的….
技巧:如果某个属性或者属性组是码,记为K。那么包含这个K的属性组一定不是码。
第二步:根据码找出所有的主属性,去除所有的主属性,剩下的就是非主属性了。
第三步:查看非主属性,是否有对码。查看非主属性,对码是否是完全函数依赖。如果是,就是符合第二范式。否则就不符合。

第三范式:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

你可能感兴趣的:(什么是范式?第一范式、第二范式、第三范式的区别?)