数据库第五章作业

来源:互联网 发布:找一个程序员女朋友 编辑:程序博客网 时间:2024/05/17 07:31

2、关系模式:

     学生(学号,姓名,出生日期,系名,班号,宿舍区);班级(班号,专业名,系名,人数,入校年份);

     系(系名,系号,系办公室地点,人数);学会(学会名,成立年份,地点,人数);

     学生-学会(学号,学会名,入会年份)。

     (1)学生(学号,姓名,出生日期,系名,班号,宿舍区):

            最小函数依赖集:学号——>姓名,学号——>出生日期,学号——>系名,学号——>班号,系名——>宿舍。

            传递依赖:学号——>宿舍。

            候选码:学号。外码:班号,系名。

     (2)班级(班号,专业名,系名,人数,入校年份):

            最小函数依赖集:班号——>专业名,班号——>人数,班号——>入校年份,专业名——>系名。

            传递依赖:班号——>系名。

            候选码:班号。外码:系名。

      (3)系(系名,系号,系办公室地点,人数):

             最小函数依赖集:系号——>系名,系名——>系号,系号——>系办公室地点,系号——>人数。

             无传递依赖。候选码:系名,系名。外码:无。

      (4)学会(学会名,成立年份,地点,人数):

            最小函数依赖集:学会名——>成立年份,学会名——>地点,学会名——>人数。

             无传递依赖。候选码:学会名。无外码。

       (5)学生-学会(学号,学会名,入会年份):

            最小函数依赖集:(学号,学会名)——>入会年份。

            无传递依赖,是完全函数依赖。候选码:(学号,学会名)外码:学号,学会名。

3、(1)R的候选码为BD。(BD)3 = BDAC。

     (2)将F中的函数依赖都分解为右部为单属性的函数依赖.
              F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}
             去掉F中冗余的函数依赖.
              判断A→C是否冗余.
             设:G1={C→A,B→A,B→C,D→A,D→C,BD→A},得(A)G1+=A
              ∵C不属于(A)G1+   ∴ A→C不冗余
             判断C→A是否冗余.
            设:G2={A→C,B→A,B→C,D→A,D→C,BD→A},得(A)G2+=C
             ∵A不属于(C)G2+   ∴ C→A不冗余
             判断B→A是否冗余.
            设:G3={A→C,C→A,B→C,D→A,D→C,BD→A},得(B)G3+=BCA
            ∵A属于(B)G3+   ∴ B→A冗余
            判断B→C是否冗余.
            设:G4={A→C,C→A,D→A,D→C,BD→A},得(B)G4+=B
             ∵C不属于(B)G4+   ∴ B→C不冗余
            判断D→A是否冗余.
            设:G5={A→C,C→A,B→C,D→C,BD→A},得(D)G5+=DCA
             ∵A不属于(D)G5+   ∴ D→A冗余
              判断A→C是否冗余.
            设:G6={A→C,C→A,B→C,BD→A},得(D)G6+=D
            ∵C不属于(D)G6+   ∴ D→C不冗余
            判断BD→A是否冗余.
            设:G7={A→C,C→A,B→C,D→C},得(BD)G7+=BDCA
            ∵A不属于(BD)G7+   ∴ BD→A冗余

            综上所述:Fm={A→C,C→A,B→C,D→C}

         (3)τ={AC,BC,DC,BD}

5、将函数依赖集F分解为右边为单属性的函数依赖:

          F={ABE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF}。

         去掉F中冗余的函数依赖.
              判断AB→E是否冗余.
             设:G1={BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF},得(AB)G1+=AB
              ∵E不属于(AB)G1+   ∴ AB→E不冗余
             判断BC→D是否冗余.
            设:G2={ABE,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF},得(BC)G2+=BCA
             ∵D不属于(BC)G2+   ∴ BC→D不冗余
             判断BE→C是否冗余.
            设:G3={ABE,BCD,CDB,CEA,CEF,CFB,CFD,CA,DE,DF},得(BE)G3+=BE
            ∵C不属于(BE)G3+   ∴ BE→C不冗余
            判断CD→B是否冗余.
            设:G4={ABE,BCD,BEC,CEA,CEF,CFB,CFD,CA,DE,DF},得(CD)G4+=CDAEFB
             ∵B属于(CD)G4+   ∴ CD→B冗余
            判断CE→A是否冗余.
            设:G5={ABE,BCD,BEC,CDB,CEF,CFB,CFD,CA,DE,DF},得(CE)G5+=CEFABD
             ∵A属于(CE)G5+      ∴ CE→A冗余
              判断CE→F是否冗余.
            设:G6={ABE,BCD,BEC,CDB,CEA,CFB,CFD,CA,DE,DF},得(CE)G6+=CEA
            ∵F不属于(D)G6+      ∴ CE→F不冗余
            判断CF→B是否冗余.
            设:G7={ABE,BCD,BEC,CDB,CEA,CEF,CFD,CA,DE,DF},得(CF)G7+=CFDABE
            ∵B属于(CF)G7+   ∴ CF→B冗余

            判断CF→D是否冗余.
            设:G7={ABE,BCD,BEC,CDB,CEA,CEF,CFB,CA,DE,DF},得(CF)G7+=CFDABE
            ∵D属于(CF)G7+   ∴ CF→D冗余

            判断C→A是否冗余.
            设:G7={ABE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,DE,DF},得(C)G7+=C
            ∵A不属于(C)G7+   ∴ C→A不冗余

           判断D→E是否冗余.
            设:G7={ABE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DF},得(D)G7+=DF
            ∵E不属于(D)G7+   ∴ D→E不冗余

          判断D→F是否冗余.
            设:G7={ABE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE},得(D)G7+=DF
            ∵F属于(D)G7+   ∴ D→F冗余

            Fm={ABE,BCD,BEC,CEF,CA,DE}。

8、(1)关系中l类(只出现在左边)L=(IB)
              关系中R类(只出现在右边)R=(DQ)
              关系中LR类(两边都有)LR=(S)
              关系中NLR类(两边都没有)NLR=(O)
              NLR类O一定是侯选码的一部分。
              (IB)的属性闭包为LBDQS
              所以R的侯选码为IBO

     (2) Fm={SD,IS,ISQ,BQ}

          SD不满足BCNF范式,把R分解为R11(SD),R12(BOISQ),F11(SD),F12(IS,ISQ,BQ);

         ISQ不满足BCNF范式,继续分解,R11(SD),R12(ISQ),R13(BOQ),F11(SD),F12(IS,ISQ),F13(BQ)。

            则{R11,R12,R13}为最后结果。

0 0