ORACLE数据依赖及范式
Posted swust_wjy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE数据依赖及范式相关的知识,希望对你有一定的参考价值。
一、数据依赖
1.什么是数据依赖?
一个关系中的属性相互之间存在联系,称之为数据依赖。
数据依赖可分为函数依赖和多值依赖两种。
1.1函数依赖
定义:设R(U)是属性集U上的一个关系模式,X,Y是U的子集,若对关系模式R(U)的任何一个当前关系,不可能有两个元组在属性集X上的值相同而在属性集Y上的值不同,则称X函数决定Y或Y函数依赖于X,
记作X -> Y。称X为决定因素。
举例:如果X -> Y,但Y ⊈ X,则称其为非平凡的函数依赖,否则称为平凡的函数依赖。
(S#,Sname)-> Sname是平凡的函数依赖
1.1.1传递函数依赖:
在R(U)中,如果X->Y,Y -> Z,且Y ⊈ X,Y -/-> X,则称Z对X传递函数依赖。
如果Y->X则不存在传递函数依赖
传递函数依赖有时会引发异常,需要破坏掉传递函数依赖
1.1.2部分函数依赖
如果AB->C,B->C,则C对AB部分函数依赖,即只需要主码的一部分即可推出函数式右边的。
部分函数依赖引发异常
二、码
候选码:
主码:若R(U , F)有多个候选码,则可以从中选定一个作为R的主码。
主属性:包含在每一个候选码中的属性,称作主属性。
全码:关系模式的码由整个属性组构成。如SCP(S#,C#,P#)
三、范式
定义:
范式就是符合某一种级别的关系模式的集合。范式表达了关系的不同数据依赖程度。
关系中范式的级别越高越好,通常3范式已经可以达到我们的目标,因为范式级别越高,关系越多。
1NF即1范式
定义:关系中每一个分量不可再分,是最小的分量。关系模式中的所有域为简单域,其元素不可再分,即属性不能再分,是属性项而不是属性组。
2NF
定义:消除了部分依赖的范式
每个非主属性完全依赖于码(消除非主属性对码的部分依赖)
3NF
定义:消除了传递依赖的范式,消除了非主属性对码的传递依赖。
BCNF(改进的第三范式)
定义:在第三范式的基础上,对于每个函数依赖,在函数依赖的左边都包含了主码。
四、模式分解
模式分解要保持函数的依赖,分解要具有无损连接性。
分解算法一
例1.
R(CTHRSG)F=C ->T,HT ->R,HR ->C,HS ->R,
CS ->G
1、每个函数依赖形成一个关系
2、码相同的关系合并
3、如果分解后的某关系R1,是另一关系R2的子集,则消去R1.
F=C ->T,HT ->R,HR ->C,HS ->R,CS ->G
R1(CT),R2(HTR),R3(HRC),R4(HSR),R5(CSG)
分解算法二
例2.R(CTHRSG)
F=C ->T,HT ->R,HR ->C,HS ->R,CS ->G
分解方法
1 在合成法的基础上增加关系R(X),X是原关系的码
2 如果新增加的关系R已经包含在其他关系中,则消去R
F=C ->T,HT ->R,HR ->C,HS ->R,CS ->G
R1(CT),R2(HTR),R3(HRC),R4(HSR),R5(CSG)
R6(HS)
HS为码,因为R4(HSR)中已经包含了HS两项属性,故不需要R6
最终分解结果:
R1(CT),R2(HTR),R3(HRC),R4(HSR),R5(CSG)
五、最小函数依赖集
定义:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
(1) F中任一函数依赖的右部仅含有一个属性。
(2) F中可以被间接推出来的去掉
以上是关于ORACLE数据依赖及范式的主要内容,如果未能解决你的问题,请参考以下文章