- 2
- 0
- 约9.19千字
- 约 69页
- 2017-06-26 发布于湖北
- 举报
分解结果 R1 (CT) R2 (HTR) R3 (HRC) R4 (HSR) R5 (CSG) 算法6.5 (分解法)转换为BCNF的无损连接分解。 例5:利用算法6.5分解下面的关系。 R(CTHRSG) F={C ?T,HT ?R,HR ?C,HS ?R, CS ?G} 第一种分解 R1(CT) R2(HRC) R3(HSR) R4(HSG) 第二种分解 R1(CSG) R2(CT) R3(CHR) R4(HSC) 算法6.6 达到4NF的具有无损连接性的分解 例5:利用算法6.6分解下面的关系。 R(CTHRSG) F={C ?T,HT ?R,HR ?C,HS ?R,CS ?G} M={C ? ?HR,T ? ?HR} R1(CT) R2(HRC) {C ? ?HR} R3(HSR) R4(HSG) R(A,B,C,D) F={A →D,E →D,D →B,BC →D,DC →A} (1)求后选码 (2) 转换为3NF既有无损连接性又保持函数依赖的分解。 (3) 转换为BCNF的无损连接分解。 作业 1NF(Ⅱ) 分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割。 如果只是查询出生日期,则它满足1NF。 如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF。 姓名 生日 王军 68.7.10 张立 69.7.10 李明 80.3.28 姓名 年 月日 王军 68 7.10 张立 69 7.10 李明 80 3.28 2NF(Ⅰ) 关系模式S(S# , SN , SD , DEAN , C# , G) 不良特性 插入异常:如果学生没有选课,关于他的个人信息及所在系的信息就无法插入。 删除异常:如果删除学生的选课信息,则有关他的个人信息及所在系的信息也随之删除了。 更新异常:如果学生转系,若他选修了k门课,则需要修改k次。 数据冗余:如果一个学生选修了k门课,则有关他的所在系的信息重复。 2NF(Ⅱ) 定义 若R?1NF,且每个非主属性完全依赖于码,则称R?2NF(消除非主属性对码的部分依赖)。 S(S# , SN , SD , DEAN , C# , G) 如S?2NF,因为(S#,C#) SN, (S#,C#) SD 改造:用投影分解 非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为:SC(S# , C# , G) S_SD(S# , SN , SD , DEAN) 示例 R(sno,cno,grade,cname,credit) sno:学生学号; cno:课程编号; grade:成绩; cname:课程姓名; credit :课程学分 不是2NF 3NF(Ⅰ) S_SD(S# , SN , SD , DEAN) 不良特性 插入异常:如果系中没有学生,则有关系的信息就无法插入。 删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了。 更新异常:如果学生转系,不但要修改SD,还要修改DEAN,如果换系主任,则该系每个学生元组都要做相应修改。 数据冗余:每个学生都存储了所在系的系主任的信息。 3NF(Ⅱ) 定义 关系模式R U , F 中,若不存在这样的码X,属性组Y (Y ? X)及非主属性Z,使得下式成立, X?Y , Y?Z , Y?X 则称R?3NF(消除非主属性对码的传递依赖)。 如S_SD ?3NF,因为有S#?SD,SD?DEAN 改造 将S分解为:STUDENT(S# , SN , SD) DEPT(SD , DEAN) 3NF(Ⅲ) Example: 关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF。 (A,B)?C ,C ?D BCNF(Ⅰ) 示例 SPC(S# , P# , C#), P# ? C#,每位老师只教授一门课 (S#,P#)? C# (S#,C#)? P#,某学生选定一门课,就对应一位老师 (S#,P#),(S#,C#)为候选码。 思考 SPC ? 3NF ? BCNF(Ⅱ) 不良特性 插入异常:如果没有学生选修某位老师的任课,则该老师担任课程的信息就无法插入。 删除异常:删除学生选课信息,会删除掉老师的任课信息。 更新异常:如果老师所教授的课程有所改动,则所有选修该老师课程的学生元组都要做改动。 数据冗余:每位学生都存储了有关老师所
原创力文档

文档评论(0)