第六章 关系数据理论

6.1 泛关系模式

6.1.1关系模式的形式化定义

关系模式的一般形式:R(U, D, DOM, F)

R :关系名

U :全部属性集合

D :属性所来自的域的集合

DOM:属性向域的映像集合

F :属性间数据的依赖关系集合

规范化理论主要讨论R <U, F>。

6.1.2泛关系模式

泛关系模式:把现实问题的所有属性组成一个关系模式

6.1.3泛关系模式存在的问题

(1) 数据冗余

(2) 更新异常

(3) 插入异常

(4) 删除异常

产生问题的原因:属性间约束关系(即数据间的依赖关系)太强。

解决问题的方法:分解关系

 

6.2函数依赖

函数依赖是判断关系模式规范化程度的基础理论。

6.2.1函数依赖的定义和性质

函数依赖:是数据依赖的一种,它反映一个关系中属性或属性组之间相互依存、互相制约的关系。

这种约束关系通过属性间的值相等与否来体现数据间的相互联系

定义:设R(U)是属性U上的一个关系模式,X和Y均为U={A ,A ,…,A }的子集,r为R的任一关系。

如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y](即r中不可能存在

两个元组在X上的属性值相等,而在Y上的属性不等),则称X函数决定Y,或称Y函数依赖于X,记为X→Y

例1:具有函数依赖关系

sno→sname

cno→cname

(sno,cno)→grade

例2:不具有函数依赖关系

sno→× grade

cno→× tname

例3:例: Student(Sno, Sname, Ssex, Sage, Sdept)假设不允许重名,则有:

Sno → Ssex,   Sno → Sage , Sno → Sdept,Sno ←→ Sname  Sname → Ssex, Sname → Sage, Sname → Sdept

若X→Y,并且Y→X,  则记为X←→Y

属性间的联系决定函数依赖关系:

设X、Y均是U的子集,则:

(1)X和Y间联系是1:1,则X→Y,Y→X;

(2)X和Y间联系是M:1(M>1),则X→Y;

(3)X和Y间联系是M:N(M,N>1),则X、Y间不存在函数依赖。

6.2.2完全函数依赖和部分函数依赖

1)完全函数依赖:F

在R(U)中,如果X→Y,并且对于X的任何真子集X都不存在X’→Y,则称Y完全函数依赖

于X,记作X F Y

2)部分函数依赖 P

如果X→Y,且X中存在一个真子集X’使得X’→Y成立,则Y部分函数依赖于X,记作X P Y。

例:设有关系模式R(U,F),求其中的候选码:

       U={A,B,C,D,E,P},   

       F={A→B,C →P,E →A,CE →D}

解:候选码 F U(完全依赖)

先找出推导式左端;其次,进行组合推到;选出能全部推导出的,并判断单一的是否会推出U,如果不能则为F,如果能则为P

答案:(C,E)

6.3低级范式

设K为关系模式R<U,F>中的属性或属性组合,如果 则K称为R的一个候选码

若有多个候选码,则选定其中的一个做为主码

6.3.1范式的概念

关系模式满足的确定约束条件称为范式,根据满足约束条件的级别不同,范式由低到高分为1NF、2NF、3NF、BCNF等。

满足最低要求的称为第一范式。

6.3.2第一范式(1NF)

关系模式的所有域为简单域,其元素不可再分,即属性不能再分,每个属性是数据项而不是属性组。

不满足1NF的关系称为非规范化关系。

6.3.3第二范式(2NF)

给定关系模式R及其上的函数依赖集F,如果R的任何一个非主属性完全依赖于它的每个候选码,则称R是第二范式,简记为2NF。

定理:一个2NF的关系模式必定是1NF的。

步骤:1.找出候选键 2.找出非主属性 3.找非主属性的反例(不能存在非主属性被除候选码以外的属性推出)

SCT(sno,cno,cname,grade,tname,salary)

F={(sno,cno)→grade,cno→cname, cno→tname, tname→salary}

候选键:(sno,cno)

存在非主属性cname对候选码(sno,cno)的部分函数依赖cno->cname,所以为1NF

解决办法:

分解:SC ( sno,cno,grade )  CT ( cnocname,tname,salary )

若R中所有候选码均为单属性,此时1NF必为2NF。因为不可能存在某个非主属性部分函数依赖于候选键 。

结论:若R∈1NF,且R中所有候选码均为单属性,则R ∈ 2NF。

6.4高级范式

6.4.1第三范式(3NF)

给定关系模式R及其上的函数依赖集F,如果R的任何一个非主属性都不传递函数依赖于它的任何一个侯选键,则称R是第三范式,简记为3NF。(同时非主属性也不部分依赖于键)

定理:一个3NF的关系模式必定是2NF的。

~关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z

(Z  Y), 使得X→Y(Y 不函数决定X),Y→Z成立,则R<U,F> ∈3NF

~消除非主属性的传递函数依赖。

例1:CT ( cno,cname,tname,salary )

F={cno→tname,cno→cname,tname→salary},判断R属于第几范式。

解:存在非主属性salary传递函数依赖于候选键cno,故CT∈2NF,不是3NF。

可分解为:

C ( cno,cname,tname ),

T ( tname,salary ) 均是3NF

6.4.2 BC范式(BCNF)

给定关系模式R及其上的函数依赖集F,如果F中每个非平凡函数依赖X→Y的左部(决定因素)X中必含有候选键,则称R是Boyce/Codd 范式,简记为BCNF(改进的3NF)。

BCNF 含义

(1)非主属性对候选键完全函数依赖;

(2)非主属性不传递函数依赖于任何一个候选键;

(3)主属性对不含它的候选键完全函数依赖;

(4)主属性不传递函数依赖于任何一个候选键。

候选键为:(S,T)和(S,J)。R中没有非主属性,故R为3NF。

(1)函数依赖T→J的左部不是候选键,判断出R不是BCNF 。T是主属性,与候选键要区分

(2)也可由T→J知,存在主属性J对不包含它的候选键(S,T)的部分函数依赖,判断R不是BCNF。

 

候选键为:(S,J)和(P,J)不存在主属性对不包含它的候选键的部分和传递函数依赖,则R不但是3NF,也是BCNF。

或者说,每个函数依赖的左部都是候选键,则R满足BCNF。

练习1:

有关系SJP(S,J,P)

S表示学生,J表示课程,P表示名次

每个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生

是否满足3NF,是否满足BCNF

解:SJ ->P  ; JP->S

   候选码:(SJ),(JP)

   满足3NF,又推导式左端为候选码=>为BC范式

练习2:

R1:候选码:(A)(BC)(CD)(E)

又B->D中,B不为候选键(此处B为主属性,注意与候选键),所以不满足BC范式

R3:候选码:(AB)(AC),又C->E,不满足BC范式

练习

(1)R1(A,B,C),    F={A→B,B →C, C→A }

候选码(A)(B)(C)

主属性{A,B,C}  非主属性:空集

最高满足BCNF,每个函数依赖左端都是候选码

(2)R2(A,B,C),   F={A→B,B →C}

候选码(A)

主属性{A}  非主属性{B,C}

最高满足2NF,候选码是单属性符合2NF,但是存在非主属性C对于候选码A的传递函数依赖

(3)R3(A,B,C),   F={A→B,A →C }

候选码(A)

主属性{A}  非主属性{B,C}

最高满足BCNF,每个函数依赖左端都是候选码A

(4)R4(A,B,C),   F={A→B, C→B }

候选码(AC)

主属性{A,C}  非主属性 {B}

最高满足1NF,存在非主属性B对于候选码AC的部分函数依赖

(5)R5(A,B,C),   F={A→B }

候选码(AC)

主属性{A,C}  非主属性{B}

最高满足1NF,存在非主属性B对于候选码AC的部分函数依赖

(6)R6(A,B,C),   F={AB→C }

候选码(AB)

主属性{A,B}  非主属性{C}

最高满足BCNF,函数依赖左端都是候选码AB

总结:

1NF:非主属性对于候选码有部分函数依赖(即候选码中的某个主属性à非主属性)

2NF:任何一个非主属性都完全依赖它的每个候选码(存在函数传递依赖为2NF,侯à非à非)

3NF:任何一个非主属性都不传递函数依赖于它的任何一个候选键

BCNF:每个非平凡函数依赖X->Y的左部X中必含有候选键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值