第七节 关系数据库规范化理论.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分析S-D和S-L关系模式 S-D(Sno,Sname,Ssex,Sdept) S-L(Sdept,Sloc) 对S-D,有:Sno Sname,Sno Ssex, Sno Sdept,因此S-D是3NF的。 对S-L,有:Sdept Sloc,因此S-L也是3NF的。 S-L-C最终分解结果 S-D(Sno,Sname,Ssex,Sdept) Sno为主码 Sdept为引用S-L关系模式的外码 S-L(Sdept,Sloc) Sdept为主码 没有外码 S-C(Sno, Cno, Grade) (Sno,Cno)为主码 Sno为引用S-D关系模式的外码 课堂练习1 设有关系W(工号, 姓名, 工种, 工种定额工资), 将其规范化到3NF,正确的答案是( ). W1(工号, 姓名), W2(工种, 定额) W1(工号, 工种, 定额), W2(工号, 姓名) W1(工号, 姓名, 工种), W2(工种, 定额) 以上都不对 课堂练习2 在关系模式R(A,B,C,D)中,有函数依赖集F={B C,C D,D A},则R能达到 。 A 1NF; B 2NF; C 3NF; D 以上三者都不行。 候选码是 ? 答案:B 原因:关系模式R的候选码是B,因为B C,C D,D A,所以存在非主属性D对候选码的传递函数依赖,R不是3NF。又因为不存在非主属性对候选码的部分函数依赖,所以R 是2NF。 课堂练习3 若关系R的候选码都是由单属性构成的,则R的最高范式必定是 。 A INF; B 2NF; C 3NF; D 无法确定。 答案:B 原因:候选码由单属性构成,一定不会存在非主属性对候选码部分函数依赖 总结: 1、规范化的过程实际是通过把范式程度低的关系模式分解成若干个范式程度高的关系模式来实现的,分解的最终目的是使每个规范化的关系模式只描述一个主题。 2、模式分解不能破坏原来的语义,同时还要保证不丢失原来的函数依赖关系。 3、通常的数据库设计中一般要达到3NF即可。 BC范式(BCNF) 定义: 关系模式RU,F∈1NF,若X→Y且Y ? X时X必包含有候选码时,则RU,F ∈BCNF。 等价于:每一个函数依赖的决定因子都是候选码。 BCNF定义 若R∈1NF,且能决定其它属性取值的属性(组)必定包含候选码,则R∈BCNF。 如果一个关系的每个决定因素都是候选码,则其是BCNF。 如果一个关系的每个函数依赖的左部都是候选码,则其是BCNF。 如果R∈3NF,并且不存在主属性对非主属性的函数依赖,则其是BCNF。 BCNF(续) [例5] 关系模式C(Cno,Cname,Credit) C∈3NF C∈BCNF [例6] 关系模式S(Sno,Sname,Sdept,Sage) 假定Sname也具有唯一性 S有两个候选码Sno,Sname S∈3NF。 S ∈ BCNF BCNF(续) [例7]关系模式SJP(S,J,P) 语义:S是学生,J是课程,P是名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一个名次只有一个学生(没有并列) 函数依赖:(S,J)→P;(J,P)→S (S,J)与(J,P)都可以作为候选码,属性相交 SJP∈3NF, SJP∈BCNF 规范化举例 设有关系模式:Student(学号,姓名,导师号,导师名,课程号,课程说明,成绩) 语义:一名学生只有一个导师,学生可选多门课。 将其规范化成3NF的。 1.此表是1NF,其函数依赖为: 学号→姓名,学号→导师号,学号→导师名,课程号→课程说明, (学号,课程号)→成绩 主码为(学号,课程号) 存在部分函数依赖关系,不是2NF,首先将其分解为2NF。 学生(学号,姓名,导师号,导师名), 课程(课程号,课程说明), 成绩(学号,课程号,成绩) 均为2NF 2.判是否为3NF “学生”表不是3NF,其函数依赖为: 学号→姓名,学号→导师号,导师号→导师名,∴学号→导师名 消除依赖于决定者的属性,把它们放在一个单独的表中,得到: 学生(学号,姓名,导师号),导师(导师号,导师名) 传递 关系模式:Student(学号,姓名,导师号,导师名,课程号,课程说明,成绩) 规范化关系模式: 课程(课程号,课程说明), 成绩(学号,课程号,成绩) 学生(学号,姓名,导师号) 导师(导师号,导师名)

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档