SJK关系数据理论资料.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 二、第四范式(4NF) 定义6.10 关系模式RU,F∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ? X), X都含有码,则R∈4NF。 说明: 4NF不允许有典型的多值依赖(非平凡,非函数依赖) 4NF只允许有函数依赖型的多值依赖, 且左边含有码 如果R ∈ 4NF, 则R ∈ BCNF * 第四范式(续) 例: Teach(C,T,B) ∈ 4NF 存在非平凡的多值依赖C→→T,且C不是候选码 用投影分解法分解为如下两个关系模式: CT(C, T) CB(C, B) C→→T, C→→B是平凡多值依赖 4NF * CT(C,T) CB(C,B) 分解后的CTB的几个问题得到解决。 参考书只需在CB中存储一次。 当某门课增加一名任课教师后,只需在CT中增加一个元组。 某门课去掉一本参考书,只需在CB关系中删除一个相应的元组 * 课堂作业: 试举出三个多值依赖的例子。分别说明更新异常,并分解。 (1)(中小学)一个年级有多个学生,一个年级每个学生使用相同的一套教材。 R1(年级,学生号,教材名) (2)一个专业多个班级,一个专业每个班级开设相同的一组课程。 R2(专业,班级,课程名) (3)一个仓库有多个保管员,一个仓库每个保管员保管员相同的一组货物。 R3(仓库,保管员,货物) * 学生数据库 STUDENT(SNO,SNAME,SAGE,SSEX,SDEPT) COURSE(CNO,CNAME,CPNO) SC(SNO,CNO,GRADE) 是否4NF? * 6.2 规范化小结 6.2.1 第一范式(1NF) 6.2.2 第二范式(2NF) 6.2.3 第三范式(3NF) 6.2.4 BC范式(BCNF) 6.2.5 多值依赖与第四范式(4NF) 6.2.6 规范化小结 * 6.2.6 规范化小结 关系数据库的规范化理论是数据库逻辑设计的工具。 一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。 规范化程度可以有多个不同的级别 * 规范化(续) 规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化 * 规范化(续) 关系模式规范化的基本步骤 1NF ↓ 消除非主属性对码的部分函数依赖 消除决定属性 2NF 集非码的非平 ↓ 消除非主属性对码的传递函数依赖 凡函数依赖 3NF ↓ 消除主属性对码的部分和传递函数依 赖 BCNF ↓ 消除非平凡且非函数依赖的多值依赖 4NF * 规范化的基本思想 消除不合适的数据依赖的各关系模式达到某种程度的“分离” 采用“一事一地”的模式设计原则 让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去 所谓规范化实质上是概念的单一化 * 规范化(续) 不能说规范化程度越高的关系模式就越好 在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式 上面的规范化步骤可以在其中任何一步终止 * 综合练习 现在有关于学生成绩管理的关系模式, 有属性:学号,姓名,班号,班名,系号,系名,课号,课名,学期,成绩。 ALL(S#,SNAME,CLA#,CLANAME,D#,DNAME,C#,CNAME,TERM,GRADE) 写出其存在的合理的函数依赖,说明是何范式,举例说明更新异常,并分解,转化为高范式,如仍存在更新异常,则继续分解。 * ALL(S#,SNAME,CLA#,CLANAME,D#,DNAME,C#,CNAME,TERM,GRADE) 函数依赖: S#?SNAME, S#?CLA#, CLA#?CLANAME, CLA#?D#, D#?DNAME,C#?CNAME, (S#,C#,TERM)?GRADE 主码是:(S#,C#,TERM) 存在非主属性对码部分依赖(SNAME,CNAME),属于1NF 存在问题: 学生信息冗余,修改学生信息? 插入新生? 删学生成绩? 课程信息冗余,修改课程信息? 插入新课程? 删学生成绩? *

文档评论(0)

三哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档