<数据库原理二>参考习题解答
上海大学 董健全
5.2 设关系模式R有n个属性,在模式R上可能成立的函数依赖有多少个?其中平凡的FD有多少个?非平凡的FD有多少个?
解:这个问题是排列组合问题。FD形为X Y,从n个属性值中选择属性组成X共有C+C+ … +C=2n种方法;同理,组成Y也有2n种方法。因此组成X Y形式应该有2n·2n=4n种方法。即可能成立的FD有4n个。
平凡的FD要求Y X,组合X Y形式的选择有:
C·C+C·(C+C)+C·(C+C+C)+ … +C(C+C+ … C)=C·20+C·21+C·22+ … +C·2n=(1+2)n=3n
即平凡的FD有3n。因而非平凡的FD有4n-3n个。
5.3 对函数依赖X→Y的定义加以扩充,X和Y可以为空属性集,用φ表示,那么X→φ,φ→Y,φ→φ的含义是什么?
答:据推理规则的自反律可知,X φ和φ φ是平凡的FD,总是成立的。
而φ Y表示在当前关系中,任意两个元组的Y值相等,也就是当前关系的Y值都相等。
5.4 已知关系模式R(ABC),F是R上成立的FD集,F={ A→B,B→C },试写出F的闭包F+。
解:据已知条件和推理规则,可知F+有43个FD:
A φ AB φ AC φ ABC φ B φ C φ
A A AB A AC A ABC A B B C C
A B AB B AC B ABC B B C φ φ
A C AB C AC C ABC C B BC
A AB AB AB AC AB ABC AB BC ф
A AC AB AC AC AC ABC AC BC B
A BC AB BC AC BC ABC BC BC C
A ABC AB ABC AC ABC ABC ABC BC BC
5.5 设关系模式R(ABCD),如果规定,关系中B值与D值之间是一对多联系,A值与C 值之间是一对一联系。试写出相应的函数依赖。
解:从B值与D值之间有一对多联系,可写出函数依赖D B,从A值与C值之间是一对一联系。可写出函数依赖A C和C A。
5.6试举出反例说明下列规则不成立:
① { A→B }⊨{ B→A }
② { AB→C,A→C }⊨{ B→C }
③ { AB→C }⊨{ A→C }
答:设有三个关系:
r1 A B r2 A B C r3 A B C
1 1 2 1 2 1 2 3
2 1 2 2 2 1 3 4
3 2 3
(1)在关系r1中,A→B成立,但B→A不成立。
(2)在关系r2中,AB→C和A→C成立,但B→C不成立
(3)在关系r3中,AB→C成立,但A→C不成立。
5.7 设关系模式R(ABCD),F是R上成立的FD集,F={ A→B,C→B },则相对于F,试写出关系模式R的关键码。并说明理由。
解:R的关键码为ACD。因为从已知的F,只能推出ACD→ABCD。
5.8 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C},
1试写出属性集BD的闭包(BD)+。
2试写出所有左部是B的函数依赖(即形为“B→?”)。
解:①从已知的F,可推出BD→BCD,所以(BD)+=BCD。
②由于B+=BC,因此左部是B的FD有四个:
B→φ,B→B,B→C,B→BC。
5.9设关系模式R(ABC)分解成ρ={ AB,BC },如果R上的FD集F={ A→B },那么这个分解是损失分解。试举出R的一个关系r,不满足mρ(r)=r。
解:这个反例r可以举测试时的初始表格:
A B C
AB a1 a2 b13
BC b21 a2 a3
πAB(r)⋈πBC(r)有四个元组:
A B C
a1 a2 b13
a1 a2 a3
b21 a2 b13
b21 a2 a3
即mρ(r)≠r。
5.10试解释数据库“丢失信息”与“未丢失信息”两个概念。“丢失信息”与“丢失数据”有什么区别?
答:数据库中丢失信息是指r≠mρ(r),未丢失信息是指r=mρ(r)。
丢失信息是指不能辨别元组的真伪,而丢失数据是指丢失元组。
5.11设关系模式R(ABC),F是R上成立的FD集,F={ A→C,B→C },试分别求F在模式AB和AC上的投影。
答:πAB(F)=φ(即不存在非平凡的FD)
πAC(F)={ A→C }
5.12设关系模式R(ABC),F是R上成立的FD集,F={ B→A,C→A },ρ={ AB,BC }是R上的一个分解,那么分解ρ是否保持FD集F?并说明理由。
答:已知F={ B→A,C→A },而πAB(F)={ B→A },πBC(F)=φ,
显然,分解ρ丢失了FD C→A。
5.13设关系模式R(ABC),F是R上成立的FD集,F={ B→C,C→A },那么分解ρ={ AB,AC }相对于F,是否无损分解和保持FD?并说明理由。
答:①已知F={ B→C,C数据库设计的意义→A },
而πAB(F)=φ,πAC(F)={ C→A }
显然,这个分解丢失了FD B→C
② 用测试过程可以知道,ρ相对于F是损失分解。
5.14设关系模式R(ABCD),F是R上成立的FD集,F={ A→B,B→C,A→D,D→C },ρ={ AB,AC,BD }是R的一个分解。
1相对于F,ρ是无损分解吗?为什么?
2试求F在ρ的每个模式上的投影。
3ρ保持F吗?为什么?
答:①用测试过程可以知道,ρ相对于F是损失分解。
②πAB(F)={ A→B },πAC(F)={ A→C },πBD(F)=φ。
③显然,分解ρ不保持FD集F,丢失了B→C、A→D和D→C等三个FD。
5.15设关系模式R(ABCD),R上的FD集F={ A→C,D→C,BD→A},试说明ρ={ AB,ACD,BCD }相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此ρ相对于F是损失分解。
5.16设关系模式R(ABCD),F是R上成立的FD集,F={ AB→CD,A→D }。
1试说明R不是2NF模式的理由。
2试把R分解成2NF模式集。
答:①从已知FD集F,可知R的候选键是AB。
另外,AB→D是一个局部依赖,因此R不是2NF模式。
3此时R应分解成ρ={ AD,ABC },ρ是2NF模式集。
5.17设关系模式R(ABC),F是R上成立的FD集,F={ C→B,B→A }。
1试说明R不是3NF模式的理由。
2试把R分解成3NF模式集。
答:①从已知FD集F,可知R的候选键是C。
从C→B和B→A,可知C→A是一个传递依赖,因此R不是3NF模式。
3此时R应分解成ρ={ CB,BA },ρ是3NF模式集。
5.18设有一个记录各个球队队员每场比赛进球数的关系模式
R(队员编号,比赛场次,进球数,球队名,队长名)
如果规定每个队员只能属于一个球队,每个球队只有一个队长。
1试写出关系模式R的基本FD和关键码。
2说明R不是2NF模式的理由,并把R分解成2NF模式集。
3进而把R分解成3NF模式集,并说明理由。
解:(1)根据每个队员只能属于一个球队,可写出FD:队员编号→球队名
根据每个球队只有一个队长,可写出FD:球队名→队长名
“每个队员每场比赛只有一个进球数”,这条规则也是成立的。因此还可写出FD:
(队员编号,比赛场次)→进球数
R的关键码为(队员编号,比赛场次)。
(2)R中存在这样的FD:
(队员编号,比赛场次)→(球队名,队长名)
队员编号 →(球队名,队长名)
可见前一个FD是局部依赖,所以R不是2NF模式。
R应分解成R1(队员编号,球队名,队长名)
R2(队员编号,比赛场次,进球数)
此处,R1和R2都是2NF模式。
(3)R2已是3NF模式。
在R1(队员编号,球队名,队长名)中,存在两个FD:
队员编号 → 球队名
球队名 → 队长名
关键码为队员编号,存在传递依赖,因此R1不是3NF模式。
R1应分解成R11(队员编号,球队名)
R12(球队名,队长名)
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,ρ= { R11,R12,R2 }。
5.19设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。
如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。
试回答下列问题:
(1)根据上述规定,写出模式R的基本FD和关键码;
(2)说明R不是2NF的理由,并把R分解成2NF模式集;
(3)进而分解成3NF模式集。
解:(1)基本的FD有三个:
(职工编号,日期)→ 日营业额
职工编号 → 部门名
部门名 → 部门经理
R的关键码为(职工编号,日期)。
(2)R中有两个这样的FD:
(职工编号,日期)→(部门名,部门经理)
职工编号 → (部门名,部门经理)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论