练习题3
3.1解释下列名词 1.函数依赖:
设有关系模式R(U),X和Y是属性集U的子集,函数依赖(functional dependency,简记为FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立。
这里t[X]表示元组t在属性集X上的值,其余类同。X→Y读作“X函数决定Y”,或“Y函数依赖于X”。FD是对关系模式R的一切可能的关系r定义的。对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之对应,或者说Y值由X值决定。因而这种依赖称为函数依赖。
2.平凡的函数依赖
对于FD X→Y,如果Y?X,那么称X→Y是一个“平凡的FD”,否则称为“非平凡的FD”。
正如名称所示,平凡的FD并没有实际意义,根据规则A1就可推出。人们感兴趣的是非平凡的FD。只有非平凡的FD才和“真正的”完整性约束条件相关。
从规则A4和A5,立即可得到下面的定理。 定理3.3 如果A1??An是关系模式R的属性集,那么X→A1??An成立的充分必要条件是X→Ai(i=1,?,n)成立。
3.函数依赖集F的闭包F+(Closure)
设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(Closure),记为F+。即
F+={ X→Y | F|=X→Y}。
4.属性集X的闭包X+
设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+
表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:
+
X={属性A | F|=X→A }
5.函数依赖的逻辑蕴含 设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F|=X→Y。
6.函数依赖集的等价
如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。
7.最小依赖集
如果函数依赖集G满足下列三个条件,则称为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}∪{W→Y}与G等价。 显然,每个函数依赖集至少存在一个等价的最小依赖集,但并不一定惟一。
8.无损分解
设R是一个关系模式,F是R上的一个FD集。R分解成数据库模式?={R1,R2?Rk}。
如果对R中满足F的每一个关系r,都有
9.泛关系假设
无损分解定义有一个先决条件,即r是R的一个关系。也就是先存在r(泛关系)的情况下,再去谈论分解,这就是关系数据库理论中著名的“泛关系假设”(Univarsal Relation Assumption)。
有泛关系假设时,r与m?(r)之间的联系,可用图3.3表示。从图中可看出m?(r)有两个性质:
(1)r?m?(r)
(2)设s=m?(r),则?R(r)=ri
i
r=?R(r)??R(r)????R(r)
12k那么称分解?相对于F是“无损连接分解”(Lossless Join Decomposition),简称为“无
损分解”,否则称为“损失分解”(Lossy Decomposition)。
R r s
?={R1,R2?Rk}
? r1,r2,?,rk
?
?
图3.3 泛关系假设下关系模式分解的示意图
10.Chase过程
“追踪”(chase)过程,用于测试一个分解是否是无损分解。
追踪过程的算法(无损分解的测试)
输入:关系模式R=A1?An,F是R上成立的函数依赖集,?={R1,?,Rk}是R的一
个分解。 输出:判断?相对于F是否具有无损分解特征。
方法:
①构造一张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过程)
③若修改的最后一张表格中有一行是全a,即a1a2?an,那么称?相对于F是无损分解,
否则称损失分解。
11.保持函数依赖
分解的另一个特征是在分解的过程中能否函数依赖集,如果不能保持FD,那么数据的
语义就会出现混乱。
设F是属性集U上的FD集,Z是U的子集,F在Z上的投影用?Z(F)表示,定义为
?Z(F)?{X?Y|X?Y?F,且XY?Z}
k?
设?={R1,?,Rk}是R的一个分解,F是R上的FD集,如果有??R(F)|?F,那么
ii?1称分解?保持函数依赖集F。
12.1NF
如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式(First Normal Form,简记为1NF)的模式。
13.2NF
如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。
14.3NF
如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三
范式(3NF)的模式。
15.BCNF
如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF。
16.MVD
设U是关系模式R的属性集,X,Y是U的子集,Z=U-X-Y,小写的xyz表示属性集XYZ的值。对于R的关系r,在r中存在元组(x,y1,z1)和(x,y2,z2)时,就也存在元组(x,y2,z1)和(x,y1,z2),那么称多值依赖(Multivalued Dependency,简记为MVD)X→→Y在模式R上成立。
17.平凡的MVD
对于属性集U上的MVD X→→Y,如果Y?X或XY=U,那么称X→→Y是一个平凡的MVD,否则称X→→Y是一个非平凡的MVD。
18.4NF
设D是关系模式R上成立的FD和MVD集合。如果D中每个非平凡的MVD X→→Y的左部
X都是R的超键,那么称R是4NF的模式。
3.2试解释下面两个“数据冗余”概念: 一、文件系统中不可避免的“数据冗余”
在数据管理中,数据冗余一直是影响系统性能的大问题。数据冗余是指同一个数据在系统中多次重复出现。在文件系统中,由于文件之间没有联系,引起一个数据在多个文件中出现。
二、关系数据库设计中应该尽量避免的“数据冗余” 数据库系统克服了文件系统的这种缺陷,但对于数据冗余问题仍然应加以关注。如果一
个关系模式设计的不好,仍然会出现像文件系统一样的数据冗余、异常、不一致等问题。
3.3关系模式的非形式化设计准则有哪几条?这些准则对数据库设计有什么帮助?
在讨论关系模式质量时,有四个非形式化的衡量准则。 准则3.1 关系模式的设计应尽可能只包含直接联系的属性,不要包含有间接联系的属性。也就是,每个关系模式应只对应于一个实体类型或一个联系类型。
准则3.2 关系模式的设计应尽可能使得相应关系中不出现插入、删除和修改等操作异常现象。如果出现任何异常,则要清楚地加以说明,并确保更新数据库的正确操作。设计成表
准则3.3 关系模式的设计应尽可能使得相应关系之中避免放置经常为空的属性。 准则3.4 关系模式的设计应尽可能使得关系的等值连接在主键和外键的属性上进行,并且保证连接以后不会生成额外的元组。
3.4对函数依赖X→Y的定义加以扩充,X和Y可以为空属性集,用Φ表示,那么X→Φ,Φ→Y,Φ→Φ的含义是什么?
解:根据函数依赖的定义,以上三个表达式的含义为:
1. 一个关系模式R(U)中,X,Y是U的子集,r是R的任一具体关系,如
果对r的任意两个元组t1、t2,由t1[X]=t2[X]必有t1[φ]=t2[φ]。即X→φ表示空属性函数依赖于X。这是任何关系中都存在的。 2. φ→Y表示Y函数依赖于空属性。由此可知该关系中所有元组中Y属性的值
均相同。
3. φ→φ表示空属性函数依赖于空属性。这也是任何关系中都存在的。
3.5用A1、A2和A3三条推理规则来证明3.2.3节中的定理3.2(推理规则A4~A8)
相关推荐: