第2章 关系数据库基本原理(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2.3关系模式的分解1.问题的提出2.3.1函数依赖的基本概念2.3.2关系规范化2.3.3.关系的分解1.问题的提出关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式数据库逻辑设计的工具──关系数据库的规范化理论问题的提出例:描述教师课程安排的数据库:教师(Teacher)、所在院系(Department)、最后学位(Degree)教师职称(Occupation)、课程(Course)、总学时(TotalHour)数据库的语义:⒈每个教师只属于一个系;⒉一个教师可上多门课;⒊一门课可有多个教师上;问题的提出单一的关系模式:R{Teacher,Department,Occupation,Degree,Course,TotalHour}R{Teacher,Department,Occupation,Degree,Course,TotalHour}关系模式中存在的问题⒈数据冗余太大例:每一个教师或课程信息重复出现⒉更新异常数据冗余,更新数据时,维护数据完整性代价大。例:教师信息修改R{Teacher,Department,Occupation,Degree,Course,TotalHour}关系模式中存在的问题⒊插入异常该插的数据插不进去例,插入一个未安排课程的教师信息。⒋删除异常不该删除的数据不得不删例,取消某一门课或删除一个教师结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖。关系模式中存在的问题2.3.1函数依赖的基本概念规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。2.3.1函数依赖的基本概念1、函数依赖2、平凡函数依赖与非平凡函数依赖3、完全函数依赖与部分函数依赖4、传递函数依赖1、函数依赖定义1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y,X称为决定因素。例如:学号→姓名,学号→系名(学号,课程名)→成绩说明:2.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。1.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立2、平凡函数依赖与非平凡函数依赖例:在关系SC(Sno,Cname,Grade)中,学号课程号成绩非平凡函数依赖:(Sno,Cname)→Grade平凡函数依赖:(Sno,Cname)→Sno(Sno,Cname)→Cname定义2在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖3、完全函数依赖与部分函数依赖定义3在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y完全函数依赖于X,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XPY。完全函数依赖与部分函数依赖(续)例:在关系SC(Sno,Cname,Ssex,Grade)中由于:Sno→Grade,Cname→Grade,因此:(Sno,Cname)fGrade由于SnoSsex因此(Sno,Cname)pSsex4、传递函数依赖定义4在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z传递函数依赖于X。注:如果Y→X,即X←→Y(X,Y相互决定),则Z直接依赖于X。例:在关系Std(Sno,Sdept,Mname)中,有:Sno→Sdept,Sdept→MnameMname传递函数依赖于Sno提问一个不好的关系模式会存在哪些问题?什么是函数依赖、非平凡函数依赖、完全函数依赖?码、候选码、主码、主属性、非主属性码、候选码若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码主码若一个关系有多个候选码,则选定其中一个为主码(Primarykey)包含在任何一个侯选码中的属性,叫主属性,不包含在任何码中的属性叫非主属性或非码属性。码设K为关系模式RU中的属性或属性组合。若KfU,则K称为R的一个侯选码或码。若关系模式R有多个候选码,则选定其中的一个做为主码(Primarykey)。例如:student(sno,sname,sage,sdept)1.若允许重名,则只有一个侯选码sno;2.若不允许重名,则有两个侯选码:sno,sname,可以选其中一个为主码。2.3.2关系的规范化范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)范式各种范式之间存在联系:某一关系模式R为第n范式,可简记为R∈nNF。NF5NF4BCNFNF3NF2NF1第一范式(1NF)1NF的定义定义3.5如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。2NF2NF的定义定义3.6若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。例:SLC(Sno,Sdept,Sloc,Cno,Grade)∈1NFSLC(Sno,Sdept,Sloc,Cno,Grade)∈2NFSC(Sno,Cno,Grade)∈2NFSL(Sno,Sdept,Sloc)∈2NF3NF3NF的定义定义3.7若关系模式R∈1NF,且R中的每个非主属性都不传递函数依赖于R的码,则称R满足第三范式,记为R∈3NF。例,SL(Sno,Sdept,Sloc)∈2NFSL(Sno,Sdept,Sloc)∈3NF3NF例:2NF关系模式SL(Sno,Sdept,Sloc)中函数依赖:Sno→SdeptSdept→SlocSno→SlocSloc传递函数依赖于Sno,即SL中存在非主属性对码的传递函数依赖。3NF解决方法采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,Sdept)DL(Sdept,Sloc)SD的码为Sno,DL的码为Sdept。BC范式(BCNF)定义设关系模式R∈1NF,如果对于R的每个非平凡函数依赖X→Y,则X必含有候选码,那么R∈BCNF。设关系模式R的每一个函数依赖关系的左部都是R的一个候选关键字,则R属于BCNFBCNF例:在关系模式SCT(S#,C#,T)中,S#表示学号,C#为课程号,T表示教师。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称:T→C#,(S#,C#)→T,(S#,T)→C#判断下列三个关系模式是否满足BC范式1、course(cno,cname,ccredit)2、管理(仓库号,设备号,职工号)(语义:每个仓库有多个职工,一名职工只能在一个仓库工作,每个仓库一种设备仅有一名职工保管,每名职工可保管多种设备)职工号仓库号(仓库号,设备号)职工号2.3.3关系的分解1.关系模式分解的一般问题所谓关系模式的分解,就是对原有关系在不同的属性上进行投影,从而将原有关系分解为两个或两个以上的含有较少属性的多个关系关系模式经分解后,应与原来的关系模式等价,即两者对数据的使用者来说应该是等价的。关系模式分解的标准三种模式分解的等价定义⒈分解具有无损连接性⒉分解要保持函数依赖⒊分解既要保持函数依赖,又要具有无损连接性2.3NF分解(1)如果R不满足1NF条件,先对其分解,使其满足1NF。对R进行1NF分解的方法不是采用投影,而是直接将其复合属性进行分解,用分解后的基本属性集取代原来的属性,以获得1NF。2.3.3关系的分解例2-3将R(员工号,姓名,工资)进行分解,使其满足1NF条件。假定R的工资属性由基本工资和岗位工资组成,直接用属性集(基本工资,岗位工资)取代工资属性,得到新关系R_NEW(员工号,姓名,基本工资,岗位工资),R_NEW满足1NF。2.3.3关系的分解(2)R符合1NF条件但不符合2NF条件时,分解R使其满足2NF。(3)R符合2NF条件但不符合3NF条件时,分解R使其满足3NF。2.4关系模型的完整性约束2.4.1实体完整性所谓实体完整性,就是一个关系模型中的所有元组都是惟一的,也称为行完整性。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值,也不能有重复值2.4.1实体完整性注意:实体完整性规则规定基本关系的所有主属性都不能取空值例:选修(学号,课程号,成绩)“学号、课程号”为主码,则两个属性都不能取空值。2.4.2域完整性域完整性就是对表中列数据的规范,也称列完整性,用于限制列的数据类型、格式以及取值范围。2.4.3参照完整性当一个数据表中有外部关键字(即该列是另外一个表的关键字)时,外部关键字列的所有值,都必须出现在其所对应的表中,这就是参照完整性的含义。2.4关系模型的完整性约束2.4.4用户定义完整性学号姓名性别专业号年龄801张三女0119802李四男0120803王五男0120804赵六女0220805钱七男0219专业号专业名01信息02数学03计算机学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)2.5数据库的设计方法2.5.1数据库设计过程数据库设计过程一般包括:(1)需求分析(2)概念设计(3)逻辑设计(4)物理设计(5)实施与维护2.5数据库的设计方法E-R模型及其到关系模型的转化E-R模型关系模型对问题进行分析转化图2-2E-R模型到关系模型的转化过程1.独立实体到关系模型的转化实体码转化为关系表的关键属性,其他属性转化为关系表的属性2.5数据库的设计方法例:例如对于图2-3所示的学生实体,应将其转化为关系:学生(学号,姓名,民族,籍贯)学生学号民族籍贯姓名图2-3学生实体的E-R图2.5数据库的设计方法2.1:1联系到关系模型的转化11经理公司领导姓名住址出生年月电话民族公司名称电话类型注册地图2-41:1联系到关系模型的转化2.5数据库的设计方法对图2-4模型转化为关系模型:经理(姓名,民族,住址,出生年月,电话,公司名称)公司(公司名称,注册地,类型,电话,姓名)要转化1:1联系,先将两个实体型分别转换为关系模式后,再将联系的属性和其中一个实体型对应关系模式的主键属性加入到另一个关系模式中即可2.5数据库的设计方法3.1:n联系到关系模型的转化要转化1:n联系,需要在n方(即1对多关系的多方)实体表中增加一个属性,将对方的关键字作为外部关键字处理即可。1n学生班级属于姓名学号民族出生年月名称班号系年级专业图2-51:n关系到关系模型的转化2.5数据库的设计方法对图2-5进行转化,得到关系模型:学生(学号,姓名,民族,出生年月,班号)班级(班号,名称,年级,系,专业)在学生表中增加“班级”中的关键字“班号”作为外部关键字。车间(车间,电话,地址)工人(工号,姓名,年龄,性别,车间,聘期)电话车间地址聘期工号年龄性别姓名车间工人聘用1m2.5数据库的设计方法复习完整性的分类和内容?实体间联系如何转换?2.5数据库的设计方法4.m:n联系到关系模型的转化一个m:n联系要单独建立一个关系模式,分别用两个实体的关键字作为外部关键字。学习mn学生学号姓名出生年月民族课程号课程名学时数课程成绩图2-6m:n关系到关系模型

1 / 61
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功