- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[教育]第6章关系数据库的规范化设计
例在学生选课、教师任课的关系模式中: R(S#,SNAME,C#,GRADE,CNAME,TNAME,TAGE) 如果规定:每个学生每学一门课只有一个成绩;每 个学生只有一个姓名;每个课程号只有一个课程名; 每门课程只有一个任课教师。 根据这些规则,可以知道(S#,C#)能函数决定 R的全部属性,并且是一个候选码。虽然(S#,SNAME,C#,TNAME)也能函数决定R的全部属 性,但相比之下,只能说是一个超码,而不能说是候 选码因为其中含有多余属性。 属性集的闭包 定义 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+={ 属性A | X→A在F+中 } 定理 X→Y能用FD推理规则推出的充分必要条件是Y?X+。 例 属性集U为ABCD,FD集为{ A→B,B→C,D→B }。则用上述算法,可求出A+=ABC, (AD)+=ABCD,(BD)+=BCD,等等。 FD推理规则的完备性 推理规则的正确性是指“从FD集F使用推理规则集推出的FD必定在F+中”,完备性是指“F+中的FD都能从F集使用推理规则集导出”。 也就是正确性保证了推出的所有FD是正确的,完备性保证了可以推出所有被蕴涵的FD。这就保证了推导的有效性和可靠性。 定理 FD推理规则{A1,A2,A3}是完备的。 FD集的最小依赖集 如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。 设F是属性集U上的FD集。如果Fmin是F的一个最小依赖集,那么Fmin应满足下列四个条件: ⑴ F+min =F+; ⑵ 每个FD的右边都是单属性; ⑶ Fmin中没有冗余的FD(即F中不存在这样的函数依赖X→Y,使得F与F-{ X→Y }等价); ⑷ 每个FD的左边没有冗余的属性(即F中不存在这样的函数依赖X→Y,X有真子集W使得F-{ X→Y }∪{ W→Y }与F等价)。 6.4 模式分解问题 定义 设有关系模式R(U),属性集为U,R1、…、Rk都是U的子集,并且有R1∪R2∪…∪Rk=U。关系模式R1、…、Rk的集合用ρ表示,ρ={R1,…,Rk}。用ρ代替R的过程称为关系模式的分解。这里ρ称为R的一个分解,也称为数据库模式。 定义 设F是属性集U上的FD集,Z是U的子集,F在Z上的投影用πZ(F)表示,定义为πZ(F)={ X→Y | X→Y∈F+,且XY?Z } 图4.5 模式分解示意图 无损分解 例 r C C 4 3 4 3 r A B C r 1 A B 2 A 1 1 1 1 1 1 1 1 2 1 1 2 图4.6 未丢失信息的分解 (b) (c) (a) r A B C r 1 A B r 2 A C r 1 r 2 A B 1 1 4 1 1 1 4 1 1 1 2 3 1 2 1 3 1 1 1 2 1 2 (a) (b) (c) (d) 图4.7 丢失信息的分解 定义 设R是一个关系模式,F是R上的一个FD集。R分解成数据库模式ρ={ R1,…,Rk }。如果对R中满足F的每一个关系r,都有 r=πR1(r)?πR2(r)? … ?πRk(r) 那么称分解ρ相对于F是“无损联接分解”(lossless join decomposition),简称为“无损分解”,否则称为“损失分解”(lossy decomposition)。 例 设关系模式R(ABC)分解成ρ={ AB,BC }。(a)和(b)分别是模式AB和BC上的值r1和r2,(c)是r1? r2的值。显然πBC(r1? r2)≠r2。 r 1 A B r 2 B C A B C a 1 b 1 a 1 b 1 c 1 b c 1 b 1 2 c 2 (a)关系r 1 (b)关系r 2 r r 1 2 (c) r r 1 2 无损分解的测试方法 算法 无损分解的测试 构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。 把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:对于F中一个FD X→Y,如果表格中有两行在X值上相等,在Y值上不相等,那么把这两行在Y值上也改成相等的值。如果Y值中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中一个bij替换另一个值(尽量把下标ij改成较小的数)。一直到表格不能修改为止。(这个过程称为chase过程) 若修改的最
文档评论(0)