关系型数据库几大范式的理解总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关系型数据库⼏⼤范式的理解总结
范式的定义
关系型数据库中的关系是需要满⾜⼀定条件的,满⾜这些不同程度的规范化就叫做范式。

范式按照规范化程度从低到⾼排序为第⼀范式,第⼆范式,第三范式,BC范式,第四范式,第五范式。

前导知识
函数依赖
R(U)是属性集U的关系模型,X,Y是U的⼀个⼦集,对于R(U)中的任⼀个关系r,不可能存在两个元组在X上属性值相同,⽽在Y 上属性值不同。

则称X函数确定Y,或Y函数依赖X。

说⼈话:U是表(可能不⽌⼀个表,可以是有关系的多个表)的所有列,X,Y分别是这些属性列的⼀个⼦集,也就是若⼲个属性,对于所有在X这些属性上的值⼀样的⾏,在Y上的属性上也必须⼀样,满⾜这样条件的这若⼲个属性 X和Y叫称其函数依赖。

X相同则Y必须相同,但X不同Y可以相同,也可以不同。

如果Y是X的⼦集,就叫平凡的函数依赖,⼀般不考虑这种,因为就是废话,X整个都相同,⼦集肯定相同。

如果Y不是X的⼦集,叫做⾮平凡的函数依赖。

如果Y函数依赖X,那么X称为决定因素。

如果Y函数依赖X,但不依赖X的任何⼀个真⼦集,也就是X是极⼩的,那就称Y完全函数依赖X,否则称Y部分函数依赖X。

如果X决定Y,Y决定Z,且Y不决定X,那么称Z对X传递函数依赖。

码(键)
U是属性全集,K是U的⼦集,若U完全函数依赖K,则称K为候选码,候选码若有多个,任意选择⼀个都可作为主码,若U部分函数依赖K,则称K为超码。

显然,候选码当然也是超码,⽽且是最⼩的超码。

包含在任何⼀个候选码的属性都叫主属性,其他都叫⾮主属性。

在本书中主码和候选码统称为码,属性集K不是该关系模式(表)的码,⽽是另⼀个关系模式(表)的码,则称K为该关系模式(表)的外码。

求候选码
例⼦:
举例
有这样⼀个配件管理表WPE(WNO,PNO,ENO,QNT),其中WNO表⽰仓库号,PNO表⽰配件号,ENO表⽰职⼯号,QNT表⽰数
量。

有以下约束要求:
(1)⼀个仓库有多名职⼯;
(2)⼀个职⼯仅在⼀个仓库⼯作;
(3)每个仓库⾥⼀种型号的配件由专⼈负责,但⼀个⼈可以管理⼏种配件;
(4)同⼀种型号的配件可以分放在⼏个仓库中。

分析表中的函数依赖关系,可以得到:
(1)ENO->WNO;
(2)(WNO,PNO)->QNT
(3)(WNO,PNO)->ENO
(4)(ENO,PNO)->QNT
观察法?:
候选码的定义就是⼀组能决定所有列(某⼀个元组)的属性。

所以根据这4个函数依赖关系,(WNO,PNO)显然肯定是,因为它可以决定QNT,也可以决定ENO,加上它本⾝,就是属性全集U了。

⽽(ENO,PNO),虽然只有⼀个决定QNT,但是ENO可以单独决定WNO,所以显然(ENO,PNO)也就能⼀起决定QNT和WNO,因此也是候选码。

六⼤范式?
第⼀范式
定义
满⾜最基本的条件,每⼀个分量都是不可分的数据项。

说⼈话,每⼀列对应只有⼀个值。

第⼆范式
定义
R属于第⼀范式,且每⼀个⾮主属性完全函数依赖于任何⼀个候选码,则R属于第⼆范式
说⼈话,除了主码候选码之外的其他属性都要完全函数依赖于主码。

因为任意⼀个候选码都能作为主码,所以,也就是说,如果存在某个属性不是完全函数依赖于某⼀个候选码,可能是部分函数依赖,那就没了。

⽐如主键是(学号,课程号),但是现在有⼀个属性完全函数依赖于学号,⽽部分函数依赖于(学号,课程号),那就不满⾜第⼆范式。

第三范式
定义
R属于第⼆范式,若R中不存在码X,属性⼦集Y,⾮主属性Z,使得X决定Y,Y不决定X,Y决定Z,则R属于第三范式。

说⼈话,⾮主属性必须直接完全函数依赖于主键,中间不能有其他函数,即不能是传递函数依赖。

BC范式
定义
R属于第⼀范式,若X决定Y,且Y不是X的⼦集时X必含有码,即每⼀个决定因素都包含码,则R属于BC范式。

说⼈话,若R是第⼀范式,且每个属性不部分函数依赖于候选码也不传递函数依赖于候选码,则R是BC范式,具体以下三点。

所有⾮主属性对每⼀个码都是完全函数依赖。

(也是第⼆范式要求)
所有主属性对每⼀个不包含它的码也是完全函数依赖。

(也就是排除了所有属性对码的部分依赖)
没有任何属性完全函数依赖于⾮码的任何⼀组属性。

(排除传递函数依赖)
实际上,BC范式就是在第三范式的基础上消除了主属性的传递依赖。

第四范式
多值依赖
说⼈话,多值依赖就是⼀个表中多对多的关系,如果可以分成两列,这两列多对多,这就平凡的多值依赖,如果是分成三列,固定某⼀列的值,其他两列多对多,这就是⾮平凡的多值依赖,第四范式要消除的就是⾮平凡的多值依赖。

函数依赖是特殊的多值依赖,因为多对多其实也是⼀对多。

定义
R属于第⼀范式,对应R的每⼀个⾮平凡多值依赖,X->->Y,X都含有码,则R属于第四范式。

说⼈话,在满⾜第三范式的基础上,关系表中不能含有⼀个实体的两个或多个相互独⽴的多值因⼦。

或者说,满⾜第四范式即要求每个⾮平凡的多值依赖都含有码,也就是实际上是函数依赖。

第五范式
定义
第五范式是指关系模式R依赖均由R候选码所隐含。

这辈⼦应该不会⽤到的内容,就不管了。

相关文档
最新文档