免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2020年下半年 数据库系统工程师 上午试卷 综合知识
  第48题      
  知识点:   多值依赖   函数依赖   模式分解及分解后的特性
  关键词:   多值依赖   函数依赖   函数        章/节:   关系数据库       

 
关系模式R<U, D>中,D为R的函数依赖多值依赖的集合。将R分解为两个关系模式R1<U1,,D1>和R2<U2,D2>,则以下说法中错误的是(  )。
 
 
  A.  如果U1∩U2→U1-U2成立,那么此分解具有无损连接性
 
  B.  如果U1∩U2→→U1-U2成立,那么此分解具有无损连接性
 
  C.  如果U1∩U2→U1-U2不成立,那么此分解不具有无损连接性
 
  D.  如果U1∩U2→→U1-U2不成立,那么此分解不具有无损连接性
 
 
 

 
  第61题    2012年上半年  
   66%
给定关系模式R<U,F>,U:={A,B,C,D},F={A→B,BC→D},则关系R的候选键为(60)。对关系R分解为R1(A,B,C)和R2(A,C,..
  第48题    2022年上半年  
   30%
在关系模式"学生(学号,姓名,性别,年龄,系号,系名)"中,一个学生只能属于一个系,"系名"对于码"学号"的数据依赖是(..
  第35题    2014年上半年  
   61%
给定关系模式R(U,F),U={A,B,C,D},函数依赖集F={AB→C,CD→B}。关系模式R(33),且分别有(34)。若将R分解成p={R1(AB..
   知识点讲解    
   · 多值依赖    · 函数依赖    · 模式分解及分解后的特性
 
       多值依赖
        【定义7.9】若关系模式R(U)中,X、Y、Z是U的子集,并且Z=U-X-Y。当且仅当对R(U)的任何一个关系r,给定一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关,则称“Y多值依赖于X”“X多值决定Y”成立。记为:X→→Y。
        多值依赖具有如下6条性质:
        .多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。
        .多值依赖的传递性。即若X→→Y,Y→→Z,则X→→Z-Y。
        .函数依赖可以看成是多值依赖的特殊情况。
        .若X→→Y,X→→Z,则X→→YZ。
        .若X→→Y,X→→Z,则X→→Y∩Z。
        .若X→→Y,X→→Z,则X→→Z-Y。
 
       函数依赖
        【定义7.4】设R(U)是属性集U上的关系模式,X、Y是U的子集。若对R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作:X→Y。
        .如果X→Y,但,则称X→Y是非平凡的函数依赖。一般情况下总是讨论非平凡的函数依赖。
        .如果X→Y,但,则称X→Y是平凡的函数依赖。
        注意:函数依赖X→Y的定义要求关系模式R的任何可能的r都满足上述条件。因此不能仅考察关系模式R在某一时刻的关系r,就断定某函数依赖成立。
        例如,关系模式Student(Sno,Sname,SD,Sage,Sex)可能在某一时刻,Student的关系r中每个学生的年龄都不同,也就是说没有两个元组在Sage属性上取值相同,而在Sno属性上取值不同,但我们决不可据此就断定Sage→Sno。很有可能在某一时刻,Student的关系r中有两个元组在Sage属性上取值相同,而在Sno属性上取值不同。
        函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。例如,在没有同名的情况下,Sname→Sage,而在允许同名的情况下,这个函数依赖就不成立了。
        【定义7.5】在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'不能决定Y,则称Y对X完全函数依赖,记作:。如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:。部分函数依赖也称局部函数依赖。
        例如,给定一个学生选课关系SC(Sno,Cno,G),我们可以得到F={(Sno,Cno)→G},对(Sno,Cno)中的任何一个真子集Sno或Cno都不能决定G,所以,G完全依赖于Sno,Cno。
        【定义7.6】在R(U,F)中,如果X→Y,,Y→Z,则称Z对X传递依赖。
 
       模式分解及分解后的特性
               分解
               【定义7.19】关系模式R(U,F)的一个分解ρ是指ρ={R1(U1,F1),R2(U2,F2),…,Rn(Un,Fn)},其中:,并且没有,1≤ijn,Fi是F在Ui上的投影,
               对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有三种情况:
               (1)分解具有无损连接性。
               (2)分解要保持函数依赖。
               (3)分解既要无损连接性,又要保持函数依赖。
               无损连接
               【定义7.20】ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}是关系模式R(U,F)的一个分解,若对R(U,F)的任何一个关系r均有r=mρ(r)成立,则称分解ρ具有无损连接性,简称无损分解。其中,
               【定理7.1】关系模式R(U,F)的一个分解ρ={R1(U1,F1),R2(U2,F2)},具有无损连接的充分必要的条件是:U1∩U2→U1-U2∈F+或U1∩U2→U2-U1∈F+。证明略。
               保持函数依赖
               【定义7.21】设关系模式R(U,F)的一个分解ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)},如果,则称分解ρ保持函数依赖。
               判别一个分解的无损连接性算法
               【算法7.1】判别一个分解是否无损连接算法。
               关系模式R(U,F)的一个分解ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)},U={A1,A2,…,An},F={FD1,FD2,…,FDp},并设F是一个最小依赖集,记FDi为Xi→Aij。判断ρ是否无损连接的步骤如下:
               步骤1:建立一张nk行的表,每一列对应一个属性,每一行对应分解中的一个关系模式。若属性AjUi,则在ji行上填上aj,否则填上bij
               步骤2:对于每一个FDi做如下操作:找到Xi所对应的列中具有相同符号的那些行。考察这些行中li列的元素,若其中有aij,则全部改为aij,否则全部改为bmlim是这些行的行号最小值。该步骤执行时注意如下几点:
               .如果在某次更改后,有一行成为“a1a2,…,an”则算法终止,且分解ρ具有无损连接性,否则不具有无损连接性。
               .对F中p个FD逐一进行一次这样的处理,称为对F的一次扫描。
               步骤3:比较扫描前后的表有无变化,若有变化,则返回步骤2;否则算法终止。
               如果发生循环,那么前次扫描至少应使该表减少一个符号,表中符号有限,因此,循环必然终止。
               将关系模式转换成3NF且保持函数依赖的算法
               【算法7.2】转换成3NF且保持函数依赖的分解算法。
               步骤1:对R(U,F)的函数依赖集F进行极小化处理(处理后的结果仍记为F)。
               步骤2:找出不在F中出现的属性,将这样的属性构成一个关系模式。把这些属性从U中去掉,剩余的属性仍记为U。
               步骤3:若有X→A∈F,且XA=U,则ρ={R},算法终止。
               步骤4:否则,对F按具有相同左部的原则分组(假定分为k组),每一组函数依赖Fi所涉及的全部属性形成一个属性集Ui。若就去掉Ui。由于经过了步骤2,故合并属性集Ui。于是ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}构成R(U,F)的一个保持函数依赖的分解。并且,每个Ri(Ui,Fi)均属于3NF且保持函数依赖。
               将关系模式转换成3NF且无损连接又保持函数依赖的算法
               【算法7.3】将一个关系模式转换成3NF,使它既具有无损连接又保持函数依赖的分解。
               输入:关系模式R和R的最小函数依赖集F。
               输出:R(U,F)的一个分解ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)},Ri为3NF,且ρ具有无损连接又保持函数依赖的分解。
               操作步骤如下:
               (1)根据算法7.2求出保持依赖的分解ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)};
               (2)判断分解ρ是否具有无损连接性,若有,转(4);
               (3)令ρ=ρ∪{X},其中X是R的码;
               (4)输出ρ
               将关系模式转换成BCNF且无损连接的算法
               【算法7.4】将关系模式转换成BCNF,使它具有无损连接的分解。
               输入:关系模式R和函数依赖集F。
               输出:R(U,F)的一个分解ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)},Ri为BCNF,且ρ具有无损连接的分解。
               操作步骤如下:
               (1)令ρ={R};
               (2)若ρ中的所有模式都是BCNF,则转(4);
               (3)若ρ中Ri不属于BCNF,则Ri中必能找到一个函数依赖,且X不是Ri的候选码,将Ri分解为τ={Ri1(XA),Ri2(Ri-A)},并用分解τ代替Ri,转(2)。
               (4)输出ρ
               数据操纵语言(Data Manipulation Language,DML)用来表示用户对数据库的操作请求。一般地,数据操纵语言DML能表示如下的数据库操作:
   题号导航      2020年下半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第48题    在手机中做本题