数据库课件6db关系数据库理论.ppt

上传人:牧羊曲112 文档编号:6578699 上传时间:2023-11-14 格式:PPT 页数:81 大小:391KB
返回 下载 相关 举报
数据库课件6db关系数据库理论.ppt_第1页
第1页 / 共81页
数据库课件6db关系数据库理论.ppt_第2页
第2页 / 共81页
数据库课件6db关系数据库理论.ppt_第3页
第3页 / 共81页
数据库课件6db关系数据库理论.ppt_第4页
第4页 / 共81页
数据库课件6db关系数据库理论.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《数据库课件6db关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《数据库课件6db关系数据库理论.ppt(81页珍藏版)》请在三一办公上搜索。

1、第六章 关系数据理论,任何一个二目关系模式R(A,B)一定属于BCNF吗?一个全是主属性的关系模式一定可以达到第几范式?一个全码的关系模式一定可以达到第几范式?关系模式R(A,B,C),有函数依赖集FAB C,BC A,则最高达到第几范式?,应用系统设计的共同问题:如何把现实世界表达成合适的数据库模式,即设计数据库的逻辑结构以关系模型为背景讨论:针对一个具体问题,如何构造合适的数据模式?构造几个关系?每个关系由哪些属性组成?等等。这些直接决定数据库的运行效率,关系DB设计理论(规范化理论)研究的是关系模式中各属性之间的数据依赖关系及其对关系模式性能的影响,探讨“好”的关系模式应该具备的性质,以

2、及达到“好”的关系模式的设计算法。规范化理论-解决如何设计一个适合的关系数据库系统的问题判断关系模式优劣的理论标准帮助我们预测可能出现的问题关系模型有严格的数学理论基础可以向其它模型转换具有普遍理论意义,关系模式的形式化定义,关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性间数据的依赖关系集合,6.1问题的提出,关系的规模 1.一个关系中信息量与关系的列数成正比,2.关系操作高效:关系运算、;单表低效:、;多表,增加关系中的列数是不是可以减少联接操作,是不是属性越多越好?,3.举例

3、1:Class(clno,dept,major)S(sno,sname,sex,birthdate,clno,address)C(cno,cname,score,pcno)SC(sno,cno,p1,p2,p3)max(clno,dept,major sno,sname,sex,birthdate,address cno,cname,score,pcno,p1,p2,p3),共18个属性,共15个属性,数据冗余设每个字段10 ByteS:有 50000个记录 50000603106 ByteClass:有1000个记录 1000303104 ByteC:有500个记录 500402104 By

4、teSC:有5000040个记录 500004050 1108 Byte共:31063104 2104 1108=10305104 1.0305108 max:5000040150300106 3108同一数据在DB中多次无控制冗余存放造成的。,Max表存在的问题,Max表存在的问题(续),插入异常:合法数据无法入库。关系 max码:(sno,cno)一个新生入校时,已是学生,但没有选课,这时不能入库,且查询学生时无法查到。删除异常:删除操作造成有效数据的丢失。如:有门课程只有一人选修,此人毕业时,将删除其所有选课程的信息。这时查询课程信息时将无法得到该课程。修改异常:一个数据的修改,引起数据

5、库中多处数据的更新。将“数据库原理”课程的名称改为“数据库系统基础”时,将需修改多个记录这些异常现象在有四个表时不会发生,所以数据库结构不是属性越多越好。,注意:,插入异常:该插入的数据未插入 不该插入的数据被插入删除异常:该删除的数据未删除 不该删除的数据被删除,4 举例2考虑为管理职工的工资信息而设计一个关系模式,该模式有什么问题?,插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入。删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次。更新异常:如果将5级工资的工

6、资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。,结论:该关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的:工号姓名 工号级别 级别工资,Max表存在问题原因,分析可知:这与数据库文件的结构中各属性间的关系 有关。sno 决定 sname,sex,clno,address,dept,majorClno 决定 dept,majorCno 决定 cname,score,pcnosno,cno 决定 p1 p2 p3,愿望,体现客观世界的信息 一个好的关系模式应冗余尽可能少;一个好的关系模式应避免

7、插入、删除异常;异常原因是关系模式中存在不合适的属性间联系;解决策略是消去不合适联系;方法采用模式分解消去不合适的属性间联系。,负面影响:需要通过表连接做相关信息查询,系统开销大!,6.2 规范化,规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题,把不好的关系模式变成好的关系模式。,数据依赖,数据依赖函数依赖(Functional Dependency,FD)多值依赖(Multivalued Dependency,MVD)X数据依赖是针对数据模式,而不是特定的实例是属性间的关联是一种约束,假设给定 X 属性的值,就知道

8、 Y的值,那么 X 函数决定 Y,记作XY,函数依赖,函数依赖的定义:若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。称X为决定因素。若Y不函数依赖于X,则记为XY。,函数依赖,例如:SDC(SNO(学号),Sname(姓名),Sage(年龄),Sdept(系别),Dean(系主任),CNO(课程号),Grade(成绩)SDC中的函数依赖:SNO Sname SNO Sage SNOSDEPT,SDEPT DEAN,(SNO,CNO)GRADE,说明,函数依赖不是指关系模式R的某个或某些关

9、系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名年龄”这个函数依赖只有在不允许有同名人的条件下成立函数依赖反映了一种语义完整性约束,说明(续),函数依赖与属性间的联系类型有关,关系内属性间的联系11(one to one)关系 一一对应关系:y=f(x)单值函数 例:sno:sname 1:1(Students)一个学号只对应一个学生(S)1:n(one to many)一对多的关系 clno:sno 1:n 一个班级内对应多个学生(S)m:n(many to many)多对多关系 在sc 中 sno:cno

10、 m:n 多对多的关系(SC),根据函数依赖的定义,可找出下面规律:在一个关系模式中,如属性X,Y有1:1联系,则存在函数依赖XY、YX,可记作XY X、Y是1:m联系,则存在YX,但XY X、Y是n:m联系,则X、Y之间不存在任何函数依赖,说明(续),函数依赖,函数依赖的导出 通过关系中各属性的实际意义直接定义通过Amstrong公理推导通过有代表性的关系值反推,函数依赖举例,检验:AC?CA?ABD?辨识:模式上成立的依赖:依赖在模式的所有关系实例上都成立,函数依赖练习,找出上面关系可能满足的函数依赖,AB,AC,BC,A(B,C),(A,B)C,关系模式上的函数依赖是语义范畴的概念,我们

11、只能根据语义来确定函数依赖!,函数依赖的分类,平凡的函数依赖与非平凡的函数依赖如果XY,且YX,则称XY为平凡的函数依赖。即:如果对于函数依赖 A1A2An Ai,Ai是A中的一个,则该函数依赖就是平凡的函数依赖SNOSNO是平凡的函数依赖如果XY,且YX,则称XY为非平凡的函数依赖。如:snosname,sno sname 即:B中至少有一个属性不在A中说明:对任何R,一些平凡函数依赖总是成立的。,函数依赖的分类,完全函数依赖与部分函数依赖在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有 X Y,则称Y完全函数依赖于X,记作X F Y。若XY,但Y不完全函数依赖于X,则称Y

12、部分函数依赖于X,记作X P Y。,范例,关系模式SDC(SNO,Sname,Sage,SDept,DEAN,CNO,GRADE)主码:(SNo,CNo)函数依赖:(SNo,CNo)Grade Sno SName,(Sno,Cno)SName Sno SDept,(Sno,Cno)SDept SDept DEAN,注意:只有当决定因素是组合属性时,讨论部分依赖才有意义,传递函数依赖与直接函数依赖 在R(U)中,如果XY,(YX),YX,YZ,则称Z对X传递函数依赖,记做:,提问:找出SDC(SNO,Sname,Sage,SDept,DEAN,CNO,GRADE)中的传递函数依赖。,提问:找出关

13、系模式(工号、姓名、级别、工资)中的传递依赖。,说明:加上yx,是避免 x y,否则x z。,直接,x z,函数依赖的分类,传递,设有关系模式R(职工名,项目名,工资,部门名,部门经理),若规定每位职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。思考:关系模式R的基本函数依赖?(项目,职工)工资项目部门部门经理,6.2.2 码,码(形式化定义)定义:设有关系模式R(U,F),X为U的子集,若X U,则X为R的一个候选码(Candidate Key)。最简单情况单个属性为码;最极端情况全部属性为码,称为全码。,f,码,定义主码:若R(U,F)有多个候选码,则可

14、以从中选定一个作为R的主码。主属性:包含在每一个候选码中的属性,称作主属性。非主属性:不包含在每一个候选码中的属性,称作非主属性。全码:关系模式的码由整个属性组构成。,范例,找出下面关系模式的主码:SDC(SNO,SNAME,Sage,SDEPT,Dean,CNO,GRADE)函数依赖:,异常的原因数据依赖的约束解决方法数据库设计的规范化分解 范式是对关系的不同数据依赖程度的要求,是规范化过程中为不同程度的规范化要求而设立的不同标准。,范式(Normal Forms),规范化各种不同的范式都是以对关系模式的属性间允许的数据依赖加以限制的形式表示的。一个关系满足某个范式所规定的一系列条件时,它就

15、属于该范式。可以用规范化要求来设计数据库。也可以用来验证设计结果的合理性,用其指导优化过程。1NF2NF3NFBCNF4NF,范式(Normal Forms),当且仅当一个关系R(U)中,每一个元组的每一个属性只含有一个值(不可再分的基本数据元素,其原子值)时,该关系属于第一范式。即不能以集合、序列等作为属性值。要求属性是原子的。,范式第一范式(1NF),关系模型中的关系模式至少是 1NF,下面R为非1NF(非规范关系模式),转换将非1NF1NF去掉嵌套属性上层 R 重写行交叉处的值,1NF(),分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割。如果只是查询出生日期,则它

16、满足1NF。如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF。,1NF,关系模式SDC(SNO,SNAME,SDEPT,Dean,CNO,GRADE)码:(SNO,CNO),1NF,关系模式SDC1NF,但它有如下不良特性:,插入异常:若学生没有选课,则他的个人信息及所在系的信息就无法插入。,删除异常:若删除学生的选课信息,则有关他的个人信息及所在系的信息也随之删除了。,更新异常:如果学生转系,若他选修了k门课,则需要修改k条记录。,数据冗余:如果一个学生选修了k门课,则有关他的所在系的信息重复。,对于关系R,若R1NF,且每一个非主属性完全函数依赖于码,则R2NF。不

17、能部分依赖于码例:关系模式SDC(SNO,SNAME,SDEPT,Dean,CNO,GRADE)SDC2NF?步骤:先根据函数依赖确定候选码;再观察每个非主属性是否完全依赖于码。SNAME,SDEPT,DEAN 部分依赖于码(SNO,CNO)SDC2NF,第二范式(2NF),2NF,改造1.分解:非主属性有两种,一种完全依赖于码,一种部分依赖于码。将SDC分解为:学生与课程的联系:SC(SNO,CNO,Grade)学生实体:SDM(SNO,SNAME,SDEPT,DEAN)2.分析分解后的函数依赖:SC:2NFSDM:SNOSNAME,SNOSDEPT,SDEPT DEAN,SNODEAN,冗

18、余减少如果一个学生选修了k门课,则有关他的所在系的信息不重复避免了原修改麻烦如果某学生转系,若他选修了k门课,则只需要修改SDM中一条记录。避免了原插入异常若学生没有选课,则他的个人信息及所在系的信息可插入到SDM避免了原删除异常删除学生的选课信息(SC),则有关他的个人信息及所在系的信息(SDM)不随之删除,效果:解决了部分插入异常和更新异常,2NF,快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于1NF而不属于2NF。,2NF,S_L_C(SNO,SDEPT,SLOC,CNO,Grade),每个系的同学住在一处该模式属于2NF吗?,Sno,Cno,Grad

19、e,Sdept,Sloc,SLC不是一个好的关系模式,插入异常假设Sno95102,SdeptIS,SlocN的学生还未选课,因课程号是主属性,因此该学生的信息无法插入SLC。删除异常假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。,SLC不是一个好的关系模式,数据冗余度大如果一个学生选修了10门课程,那么他的Sdept和Sloc值就要重复存储了10次。修改复杂例如学生转系,在修改此学生元组的Sdept值的同时,还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗漏地修改K个元组中全部

20、Sdept、Sloc信息。,模式分解 SC(SNO,CNO,G)S_L(SNO,SDEPT,SLOC),分解后的函数依赖图,2NF,结论:(1)从1NF关系中消除非主属性对码的部分函数依赖得到2NF(2)如果关系R的主码是单属性或全体属性均为主属性,则R属于2NFQ:任何二元关系,是否一定属于2NF?,2NF,分析SDM(SNO,SNAME,SDEPT,DEAN)不良特性插入异常:如果系中没有学生,则有关系的信息就无法插入SDM删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了更新异常:如果学生转系,不但要修改SDEPT,还要修改Dean,如果换系主任,则该系每个学生

21、元组都要做相应修改数据冗余:每个学生都存储了所在系的系主任的信息说明:若R2NF,则R仍然具有增、删、改的异常!,对于关系R,若R2NF,且每个非主属性都不传递依赖于码,则R3NF。关系模式R中,若不存在这样的码X,属性组Y及非主属性Z(Z Y),使得下式成立,XY,Y X,YZ 则称R3NF,第三范式(3NF),非主属性对候选码的传递fd。候选码:SNO 非主属性:SNAME,SDEPT,DEAN fd:SNOSNAME,SNOSDEPT,SDEPT DEAN,SDEPT SNO;SNO DEAN,传递,SDM的异常原因及策略,SDM 3NF,3NF规范化投影分解,1.消去非主属性对码的传递

22、fd策略是使中间“传递者”不能传递,2.将SDM(SNO,SNAME,SAGE,SDEPT,DEAN)分解为:学生实体:STUDENT(SNO,SNAME,SAGE,SDept)系的实体:DEPT(SDept,DEAN)3.分解后3NF?STUDENT3NF DEPT 3NF,效果冗余有条件地减少系主任的信息只有一份。避免了原修改麻烦同学转系只要修改SDEPT,不要修改Dean,如果换系主任,则该系每个学生元组不要做相应修改避免了原插入异常系的信息单独维护(DEPT),无论系中没有学生避免了原删除异常如果学生全部毕业了,则只需删除STUDENT学生信息,不影响系的信息,1:若R1NF,且其候选

23、码为单个属性,则R2NF2:若R2NF,且至多存在一个非主属性,则R3NF3:任何二元关系模式必为3NF。,3NF的推论,快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF,课堂练习 Supplyer(SpNo,City,Area,Phone)SpNo供应商编号 Area城市所在地区 其中,SpNo是主码 函数依赖有哪些?属于2NF吗?属于3NF吗?,分析评价部分fd和传递fd是冗余及操作异常的重要根源。3NF不存在非主属性对候选码的部分fd和传递fd。3NF消去了大部分冗余及操作异常。并非所有的3NF都能完全消除冗余及操作异常。,示例 ST

24、C(S,T,C),每位老师只教授一门课,每门课有若干老师。某学生选定一门课,就对应一位老师。则它的一组函数依赖为:,T C(S,T)C;(S,C)T候选码为?,(S,T)和(S,C)思考STC 3NF?,yes!,非主属性:无,STC(S,T,C)的不良特性(并非所有3NF都存在不良特性)插入异常:如果没有学生选修某位老师的任课,则该老师担任课程的信息就无法插入;学生未选修课程,则无C和T信息,学生信息进入不了DB。删除异常:删除学生选课信息,会删除掉老师的任课信息更新异常:如果老师所教授的课程有所改动,则所有选修该老师课程的学生元组都要做改动数据冗余:每位学生都存储了有关老师所教授的课程的信

25、息,原因存在主属性对候选码的部分fd。TC(S,T)C存在主属性对候选码的传递fd。(S,C)T TC(S,C)C,p,t,关系模式R中,对于属性组X,Y,若XY且Y X时X必含有码,则R BCNF,范式Boyce/Codd范式(BCNF),范式Boyce/Codd范式(BCNF),stc(s,t,c)/学生,教师,课程tc/每位教师只上一门课s,ct s,tc/每门课有若干位教师T C,而T不含有码,改造:消去主属性对候选码的部分fd将STC(S,T,C)分解为 ST(S,T)BCNF TC(T,C)BCNF,冗余得到了较好控制很多学生选同一教师的一门课程时,课程信息只存一次。修改麻烦避免了

26、课程改名后,只在TC中改一元组(对同一教师)。插入异常避免了ST中可以插入未选修课程的学生信息。TC中可以插入无学生选修的课程和教师信息。删除异常避免了删去学生信息在ST中进行,教师及课程信息在TC中不受影响。,效果,最高范式BCNF是基于函数依赖的最高范式但不是数据库模式设计的最高范式属于BCNF的关系中必定满足:所有的非主属性对每一个码都是完全依赖的;所有的主属性对每一个不包含它自己的码都是完全依赖的;没有任何属性完全依赖于非码的任何一组属性排除了任何属性对码的传递依赖与部分依赖,范式Boyce/Codd范式(BCNF),BCNF,思考SCO(S,C,ORDER),表示学生选修课程的名次,

27、同一门课程的各个学生的名次没有并列。其函数依赖有:(S,C)ORDER,(C,ORDER)S。SCO属于BCNF吗?,BCNF,例:关系模式SNC(SNO,SNAME,CNO,SCORE),SNAME无重复分析:SNC的候选码(SNO,CNO)和(SNAME,CNO)非主属性:SCORE1NF?2NF?3NF?,YES!,YES!,YES!,此关系有什么问题?,冗余!,函数依赖:(SNO,CNO)SCORE(SNAME,CNO)SCORE(SNAMESNO),BCNF,BCNF?定义判断法:(SNAMESNO)决定因素不含有码 BCNF性质判断法:SNAMESNO(SNO,CNO)SNAME(

28、SNAME,CNO)SNO存在主属性对码的部分依赖 BCNF,P,P,定理:如果RBCNF,则R3NF 证明:(反证法)设RBCNF,但R3NF,则总可找到属性集X,Y,Z,其中X为候选玛,Y,Z为非主属性(R3NF,则存在多个非主属性,它们存在传递fd),使得XZ成立,即XY,而Y不包含R的候选码X,但YZ成立(Y是非主属性,这样决定因素不含候选码)。根据BCNF定义,RBCNF,与假设矛盾。定理得证。,t,1、关系规范化过程 非规范关系 去掉嵌套属性或重复组(使每个属性及其值都成为 1NF 不可再分的数据项)消去非主属性对候选KEY的部分fd 2NF 消去非主属性对候选KEY的传递fd 3

29、NF 消去主属性对候选KEY的部分和传递fd BCNF规范化规程主要为克服数据库逻辑结构中的插入异常、删除异常以及冗余过大的缺陷,关系规范化小结,2.结论3NF必定为2NF和1NF,反之不一定;BCNF必为3NF,反之不一定;3NF已在很大程度上控制了数据冗余;3NF已在很大程度上消去了插入和删除操作异常;3NF分解仍不够彻底(可能存在主属性对候选码的部分fd和传递fd);在fd范围内,BCNF下已完全消去了插入删除异常;范式并非越高越好;范式越高,异常越少,但查询操作越麻烦;适可而止:理论上:一般到3NF分解不唯一。,示例,C(City,Street,Zip)是3NF吗?是BCNF吗?,其中码是City,StreetCity主属性,Street主属性,Zip非主属性,City,StreetZipZip City,Zip不是候选码所以关系C是3NF,但不是BCNF,示例,关系W(工号,姓名,工种,定额)属于第几范式?规范化到第三范式,示例,部门(部门号,部门名,部门成员,部门总经理)属于第几范式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号