<数据库原理二>参考习题解答
上海大学 董健全
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·(CC+C)+ … +CCC+ … C)=C·20+C·21+C·22+ … +C·2n=(1+2)n=3n
即平凡的FD有3n。因而非平凡的FD有4n-3n个。
5.3 对函数依赖XY的定义加以扩充,X和Y可以为空属性集,用φ表示,那么Xφ,φY,φφ的含义是什么?
答:据推理规则的自反律可知,X φφ φ是平凡的FD,总是成立的。
φ Y表示在当前关系中,任意两个元组的Y值相等,也就是当前关系的Y值都相等。
5.4 已知关系模式R(ABC),F是R上成立的FD集,F={ AB,BC },试写出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试举出反例说明下列规则不成立:
① { AB }{ B→A }
② { ABC,AC }{ B→C }
③ { ABC }AC }
答:设有三个关系:
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={ AB,CB },则相对于F,试写出关系模式R的关键码。并说明理由。
解:R的关键码为ACD。因为从已知的F,只能推出ACDABCD。
5.8 设关系模式R(ABCD),F是R上成立的FD集,F={AB,BC},
1试写出属性集BD的闭包(BD)+
2试写出所有左部是B的函数依赖(即形为“B?”)。
解:①从已知的F,可推出BDBCD,所以(BD)+=BCD。
②由于B+=BC,因此左部是B的FD有四个:
Bφ,BB,BC,BBC。
5.9设关系模式R(ABC)分解成ρ={ AB,BC },如果R上的FD集F={ AB },那么这个分解是损失分解。试举出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={ AC,BC },试分别求F在模式AB和AC上的投影。
答:πAB(F)=φ(即不存在非平凡的FD)
    πAC(F)={ AC }
5.12设关系模式R(ABC),F是R上成立的FD集,F={ BA,CA },ρ={ AB,BC }是R上的一个分解,那么分解ρ是否保持FD集F?并说明理由。
答:已知F={ BA,CA },而πAB(F)={ BA },πBC(F)=φ,
    显然,分解ρ丢失了FD  CA。
5.13设关系模式R(ABC),F是R上成立的FD集,F={ BC,CA },那么分解ρ={ AB,AC }相对于F,是否无损分解和保持FD?并说明理由。
答:①已知F={ BC,C数据库设计的意义→A },
πAB(F)=φ,πAC(F)={ CA }
显然,这个分解丢失了FD  BC
② 用测试过程可以知道,ρ相对于F是损失分解。
5.14设关系模式R(ABCD),F是R上成立的FD集,F={ AB,BC,AD,DC },ρ={ AB,AC,BD }是R的一个分解。
1相对于F,ρ是无损分解吗?为什么?
2试求F在ρ的每个模式上的投影。
3ρ保持F吗?为什么?
答:①用测试过程可以知道,ρ相对于F是损失分解。
πAB(F)={ AB },πAC(F)={ AC },πBD(F)=φ。
③显然,分解ρ不保持FD集F,丢失了BC、AD和DC等三个FD。
5.15设关系模式R(ABCD),R上的FD集F={ AC,DC,BDA},试说明ρ={ AB,ACD,BCD }相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此ρ相对于F是损失分解。
5.16设关系模式R(ABCD),F是R上成立的FD集,F={ ABCD,AD }。
1试说明R不是2NF模式的理由。
2试把R分解成2NF模式集。
答:①从已知FD集F,可知R的候选键是AB。
另外,ABD是一个局部依赖,因此R不是2NF模式。
3此时R应分解成ρ={ AD,ABC },ρ是2NF模式集。
5.17设关系模式R(ABC),F是R上成立的FD集,F={ CB,BA }。
1试说明R不是3NF模式的理由。
2试把R分解成3NF模式集。
答:①从已知FD集F,可知R的候选键是C。
从CB和BA,可知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小时内删除。