模式分解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.保持FD (函数依赖)的分解
定义1:设F 是属性集U 上的FD 集,Z 是U 的子集,F 在Z 上的投影用πZ (F)表示,定义为
πZ (F)={X →Y|X →Y ∈F +,且XY ⊆Z}
定义2. 设},...{1K R R =ρ 是R 的一个分解,F 是R 上的FD 集,如果有)(1F R i k
i π=Y ╞ F ,那么称分解ρ保持函数依赖集F 。 根据定义1,测试一个分解是否保持FD ,比较可行的方法是逐步验证F 中的每个FD 是否被)(1F R i k
i π=Y 逻辑蕴涵。如果F 的投影不蕴涵F ,而我们又用},...{1K R R =ρ表达R ,很可能会找到一个数据库实例σ 满足投影后的依赖,但不满足F 。对σ的更新也有可能使r 违反FD 。
案例1:
R (T#,TITLE ,SALARY )。如果规定每个教师只有一个职称,并且每个职称只有 一个工资数目,那么R 上的FD 有T#→TITLE 和TITLE →SALARY 。
如果R 分解成ρ={R 1,R 2},其中R 1={T#,TITLE},R 2={T#,SALARY }。则该分解具有无损连接性,但未保持函数依赖,丢失了依赖TITLE →SALARY 。
习题1:
设关系模式R (ABC ),ρ={AB ,AC}是R 的一个分解。试分析分别在F 1={A →B};F 2={A →C ,B →C},F 3={B →A},F 4={C
→B,B→A}情况下, 是否具有无损分解和保持FD的分解特性。
算法1:分解成2NF模式集的算法
设关系模式R(U),主码是W,R上还存在FD X→Z,并且Z是非主属性和X⊂W,那么W→Z就是非主属性对码的部分依赖。此时,应把R分解成两个关系模式:
R1(XZ),主码是X;
R2(Y),其中Y=U-Z,主码仍为W,外码是X(参照R1)利用外码和主码的连接可以从R1和R2重新得到R。
如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中的每个关系模式都是2NF为止。
案例2:设有一个反映球队及球队队员每场比赛进球数的关系模式:R(队员编号,队员名,比赛场次,进球数,球队名,教练名)如果规定每个队员只能属于一个球队,每个球队只有一个教练,队员名可能重复。
(1)试写出关系模式R的基本FD和关键码。
(2)说明R不是2NF模式的理由,并把R分解成2NF模式集。
算法2:分解成3NF模式集的算法
设关系模式R(U),主码是W,R上还存在FD X→Z,并且Z是非主属性,Z /⊆X,X不是候选码,那么W→Z就是非主属性对码的传递依赖。此时,应把R分解成两个关系模式:R1(XZ),主码是X;
R2(Y),其中Y=U-Z,主码仍为W,外码是X(参照R1)利用外码和主码的连接可以从R1和R2重新得到R。
如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中的每个关系模式都是3NF为止。
案例3:进而把案例2的R分解成3NF模式集,并说明理由。
算法3. 分解成3NF模式集的合成算法
无损分解,且保持依赖地分解成3NF模式集。
(1)对于关系模式R和R上成立的FD集F,先求出F 的最小依赖集,然后再把最小依赖集中那些左部相同的
FD用合并性合并起来。
(2)对最小依赖集中,每个FD X→Y去构成一个模式XY。(3)在构成的模式集中,如果每个模式都不包含R的侯选码,那么把侯选码作为一个模式放入模式集中。
这样得到的模式集是关系模式R的一个分解,并且这个分解即是无损分解,又保持了FD。
案例4:设关系模式R(ABCDE),R的最小依赖集为{A→B,C→D}。从依赖集可知,R 的侯选码为ACE。
先根据最小依赖集,可知,ρ={ AB,CD},然后再加入由侯选码组成的模式ACE。因此最后结果ρ={AB,CD,ACE}是一个即保持FD又具有无损分解性。
课后练习题:
简述函数依赖集G是最小依赖集所需满足的几个条件。
解: (1)G中每个FD的右边都是单属性;
(2)G中没有冗余的F,即G中不存在这样的函数依赖X→Y,使得G —| X→Y| 与G 等价;
(3)G中每个FD的左边没有冗余的属性,即G中不存在这样的函数依赖X→Y,X有真子集W,使得G-|X→Y| U |W→Y| 与G等价。
关系模式R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A},求R的候选健及B+。
解:函数依赖中的只在左边出现的属性:无;
只在右边出现的属性:无;
左右都没出现的属性:无
左右都出现的属性:A,B,C,D,E
A的闭包:A+为ABCDE=U, 即A是候选码;
E的闭包:E +为ABCDE=U, E是候选码。
CD的闭包:CD+为ABCDE =U,CD是候选码。
B的闭包B+:
令U0=B, 在依赖中,找到B→D,
U1=U0 ∪ D = BD, 依赖中,左边为B,D,或BD的没有了,即B+ =BD
案例:设有一个反应公司职工相关信息的关系模式:
R(职工号,职工名,部门号,工资,部门名,部门主任,社团名,社团角色)
如果规定:
职工号、部门号惟一;每个部门有多名职工,每名职工在固定的部门;每个部门有一个部门主任;每个职工可以参加多个社团,并且在社团中承担一定的角色,每个社团有多名职工。
(1)根据上述规定,写出模式R的基本FD和关键码。
解:R基本FD: 职工号→职工名,职工号→部门号,部门号→部门名,部门号→部门主任,(职工号,社团号)→社团角色
R关键码为:(职工号,社团号)
(2)R最高达到第几范式,并说明理由。
解:最高达到1NF,因为在函数依赖中存在“职工号→职工名”,且候选码是(职工号,社团号),存在非主属性对码的部分函数依赖。
(3)将R规范到3NF。
解:按照左部相同原则将FD分组:
(1): 职工号→职工名,职工号→部门号
(2):部门号→部门名,部门号→部门主任
(3):(职工号,社团号)→社团角色
将上述每组中涉及的属性组成一个关系模式如下所示: