- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习目标 理解关系模式可能的四种异常。 掌握函数依赖和多值依赖的基本概念。 掌握1NF、2NF、3NF、BCNF和4NF的概念和特点。 掌握规范化的基本步骤。 一、关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据库模式,即应该构造几个关系模式、每个关系模式由哪些属性组成等,这是数据库逻辑结构设计的问题。 以关系模型为背景,形成了数据库逻辑设计的一个有力工具-关系数据库的规范化理论。 二、概念回顾 关系:描述实体、实体间的联系。从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。 关系模式:用来定义关系。 关系数据库:基于关系模型的数据库,由一组关系组成,这组关系模式的全体就构成了该数据库的模式。 属性间的联系:有1对1,1对n,m对n三种 数据依赖的定义:通过一个关系中属性间值的相互关联(主要体现于值的相等与否)体现出来的数据间的相互联系。是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。 传递函数依赖: 在R(U)中,若X,Y,Z是R互不相同的属性集合, 若 X→Y,Y→Z, Y→X, 则称Z传递(Transfer)函数依赖于X。 记作: X→Z 若X→Y,Y→X, Y→Z,则Z直接函数依赖于X 码(key):又称关键字或键 定义: 设K为RU,F中的属性或属性组合,若K → U,则K为R的候选码。若候选码多于一个,则选其中一个为主码(Primary key)。 例:关系Student(Sno,Sname,Sage,Ssex,Sdept)若每个学生不允许重名, 则Sno,Sname是两个候选码;关系SC(Sno,Cno,Grade)中(Sno,Cno)是一个候选码。 1)函数依赖是完整性约束的一种特殊形式 2)函数依赖分为: 完全函数依赖 部分函数依赖 传递函数依赖 3)函数依赖是规范化理论的依据 4)函数依赖是规范化程度的准则 例如:如果选修课系统的数据库模式 仅由一个关系模式Student 构成 该关系模式的属性集合为: U={Sno, Sname, Cno, Cname,Grade }。 其中,学号(Sno)、学生名(sname)、 课程号(Cno)、课程名Cname, 成绩(Grade)。 关系模式Student中存在的问题: U={Sno, Sname, Cno, Cname, Grade } 数据冗余太大:浪费大量的存储空间。 每一个学生的名字Sname与该学生的每门课程的成绩出现的重复次数相同。 插入异常:该插的数据插不进去。 如果有学生但尚未选课,我们就无法把课程的信息存入数据库。 关系模式Student中存在的问题: U={Sno, Sname, Cno, Cname,Grade } 删除异常:不该删除的数据被删了。 如果某课程只有一个学生选修, 该学生毕业后,如果要删除该名学生的信息,则该门课程的信息也同时被删掉了。 更新异常:更新数据时维护数据完整性代价大。 如果要更改课程名,则必须更改所有选修该课程的元组。 是符合某一种级别的关系模式的集合。 关系数据库中的关系模式必须满足一定的要求,满足不同程度要求的为不同的范式。目前主要有六种: 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF) 、第五范式(5NF)。 满足最低要求的叫第一范式,在第一范式基础上进一步满足一些要求的为第二范式。其余以此类推。 各级范式关系: 5NF? 4NF? BCNF? 3NF? 2NF? 1NF 如果关系满足某个范式要求,也会满足较低级别范式的要求 通常将某一关系模式R为第n范式简记为R∈nNF 第一范式(1NF) 定义: 若关系模式R的所有属性都是不可分的基本数据项,则R ? 1NF。 说明: 1NF是关系模式的最起码要求 若R ? 1NF,则R不是关系数据库 如果选修课系统的数据库模式仅由一个关系模式Student 构成 存在的问题: 数据冗余太大:浪费大量的存储空间。 若某学生选修了多门课程,则他的sname值就要重复存储多次。 插入异常:该插的数据插不进去。 假设某学生还未选课,因cno是主属性,因此该学生信息无法插入。 删除异常:若一门课程仅被选修一次,现因某种原因,这门课程也没有被选修。因课程号cno是主属性,此操作将导致包括该课程的所有信息一起整个元组都要删除。 修改异常:更新数据时维护数据完整性代价大。 如果要更改课程名,则必须更改所有选修该课程的元组。 引起原因: sname、cname部分函数依赖于码(Sno,Cno)。 解决方法:分解关系模式,以此消除其中部分函数依赖。 例如:把上述模式分成三个关系模式: S(Sno,S
文档评论(0)