数据库系统范式教程

上传人:豆浆 文档编号:4712888 上传时间:2017-08-06 格式:PPT 页数:73 大小:351KB
返回 下载 相关 举报
数据库系统范式教程_第1页
第1页 / 共73页
数据库系统范式教程_第2页
第2页 / 共73页
数据库系统范式教程_第3页
第3页 / 共73页
数据库系统范式教程_第4页
第4页 / 共73页
数据库系统范式教程_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《数据库系统范式教程》由会员分享,可在线阅读,更多相关《数据库系统范式教程(73页珍藏版)》请在金锄头文库上搜索。

1、,数据依赖对关系数据库的影响函数依赖关系模式的范式关系模式的规范化数据依赖的公理系统,数据依赖对关系模式的影响,关系模式设计不规范会带来一系列的问题数据冗余、更新异常、插入异常、删除异常示例1: 关系模式 R(Tname, Addr, C#, Cname)一个教师只有一个地址(户口所在地)一个教师可教多门课程一门课程只有一个任课教师因此R的主码是(C),R的一个实例,问题(1):数据冗余,教师T1教了三门课程,他的地址被重复存储了2次。,问题(2):更新异常,如果T1的地址变了,则需要改变3个元组的地址;若有一个未更改,就会出现数据不一致。但DBMS无法获知这种不一致。,问题(3):插入异常,

2、如果要增加一名教师,但他还未带课,则C#和Cname为空,但由于C是主码,为空违反了实体完整性,所以这名教师将无法插入到数据库中。,问题(4):删除异常,如果教师T3现在不带课了,则需将T3的元组删去,但同时也把他的姓名和地址信息删掉了。,如何解决?,方法:模式分解方法1:R分解为R1(Tname, Addr)R2(C#,Cname)方法2R1(Tname, Addr, C# )R2( C#, Cname)方法3R1( Tname, Addr)R2( Tname, C#, Cname),授课信息丢失了,R1中问题依然存在,基本解决问题,示例2:描述学校的数据库:学生的学号(Sno)、所在系(S

3、dept)系主任姓名(Mname)、课程名(Cname),成绩(Grade)单一的关系模式 : Student 其中: U Sno, Sdept, Mname, Cname, Grade FSno Sdept, Sdept Mname, (Sno,Cname) Grade,数据依赖对关系模式的影响(续),学校数据库的语义: 一个系有若干学生,一个学生只属于一个系; 一个系只有一名主任; 一个学生可以选修多门课程,每门课程有若干学生选修; 每个学生所学的每门课程都有一个成绩。,Sno,Cname,Grade,Sdept,Mname,Student关系模式上的一组函数依赖,关系模式Student中

4、存在的问题, 数据冗余太大浪费大量的存储空间 例:每一个系主任的姓名重复出现 更新异常(Update Anomalies)数据冗余 ,更新数据时,维护数据完整性代价大。 例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组,关系模式Student中存在的问题, 插入异常(Insertion Anomalies)该插的数据插不进去 例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。 删除异常(Deletion Anomalies)不该删除的数据不得不删 例,如果某个系的学生全部毕业了, 我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。,数据依赖

5、对关系模式的影响(续),结论:Student关系模式不是一个好的模式。“好”的模式不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数 据依赖。,规范化理论,规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。,要解决的内容,到底什么样的模式才最佳?怎么分解才能达到要求?标准是什么?如何实现?,函数依赖,关系模式是对关系的描述,它由五部分组成:R(U,D,Dom,F)R为关系模式名;U是一个属性集;D是U中属性的值所来自的域;Do

6、m是属性向域的映射集合;F是属性间的依赖关系。,函数依赖,定义11.1 设 R(U)是一个关系模式,U是R 的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记做XY。,函数依赖,换一种说法:设关系模式R(A1,A2,An)或简记为R(U),U是R的属性集合,X和Y是U的子集。r是R的任意一个实例(关系),若r的任意两个元组t1、t2,由t1X=t2X可导致t1Y=t2Y,即如果X相等则Y也相等,则称Y函数依赖于X或称为X函数决定Y,记作 XY。,函数依赖,即R的X属

7、性集上的值可唯一决定R的Y属性集上的值。也即对于R的任意两个元组,X上的值相等,则Y上的值也必相等。,重要说明,1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名年龄”这个函数依赖只有在不允许有同名人的条件下成立。,函数依赖,3. 若XY,则X叫做决定因素。4. 若XY,YX,则记做 X Y。 5. 若Y不函数依赖于X,则记做XY。,完全函数依赖与部分函数依赖,定义11.2 在R(U)中,如果XY,并且对于X的任何一个真子集X,都有XY,则称Y完全函数依赖于X,记

8、做XY。否则称 称Y部分函数依赖于X。记做XY。在例1中(Sno,Cname)Grade 是完全函数依赖; (Sno,Cname)Sdept 是部分函数依赖;,P,F,F,传递函数依赖,定义11.3 在关系模式R(U)中,如果XY,YZ,且Y X,YX,则称Z传递函数依赖于X,记作X Z 。在例1中Sno Sdept, Sdept Mname成立, 所以Sno Mname传递函数定义中YX是必须的,因为如果 YX ,则X Y,这实际上是Z直接依赖于X,而不是传递函数依赖了。,传递,传递函数依赖,例如,在关系Student(Sno,Sname,Ssex,Sage,Sdept)中,有SnoSsex

9、, SnoSage, SnoSdept, Sno Sname(无重名),但SsexSage。,传递函数依赖,在关系SC(Sno,Cno,Grade)中,有 SnoGrade, CnoGrade , (Sno,Cno)Grade,(Sno,Cno)是决定属性集。在关系Std(Sno,Sdept,Mname)中,有 SnoSdept,SdeptMname,Sno Mname。,传递,F,函数依赖的多对一关系,函数依赖实际上是指一个关系模式中一个属性集和另一个属性集间的多对一关系 例如选课关系SC(S#, C#, Score)存在由属性集S#,C#到属性集Score的函数依赖对于任意给定的S#值和C

10、#值,只有一个Score值与其对应反过来,可以存在多个S#值和C#值,它们对应的Score值相等,函数依赖,FD是否成立,唯一办法是仔细考察应用中属性的含义。FD实际上是对现实世界的断言。数据库设计者在设计时把应遵守的函数依赖告知DBMS,则DBMS会自动检查关系的合法性。,函数依赖,例如Student关系模式中,S# Sname (单个属性可去掉括号,简写成 S# Sname) SC关系模式中, S#,C# Score对于关系模式 R(Tname, Addr, C#, Cname)若一门课只能有一个教师,则有 C# Tname若一门课可有多个教师任教,则有 C# Tname不成立因此FD是与

11、具体应用相关的。,码,定义11.4:设K为关系模式R(U,F)中的属性或属性集合,若KU,则K为R的候选码(Candidate Key)。若候选码多于一个,则选定其中一个为主码(Primary Key)。主属性、非主属性、全码。定义11.5:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。,F,码,码是关系模式中的一个重要概念。候选码能够唯一地标识关系的元组;是关系模式中一组最重要的属性。主码又和外码一起提供了一个表示关系间联系的手段。,码,例: R(Tname, Addr, C#, Cname)F=TnameAddr, C#Cname, C#TnameC#T

12、name,Addr,C#,Cname所以C是候选码,若C#Tname不成立,则候选码为Tname, C#,范式(Normal Form),范式:满足特定要求的模式不同级别的范式要求各不相同范式可以作为衡量一个关系模式好坏的标准若关系模式R满足范式xNF,记RxNF规范化:将低一级范式的关系模式通过模式分解转换为高一级范式的关系模式集合的过程5NF 4NF BCNF 3NF 2NF 1NF,19711972,E.F. Codd,1974,Boyce and Codd,19761979,Fagin,第一范式(1NF),定义11.6 如果一个关系模式R的所有属性都是不可分的基本数据项,(即对于关系模

13、式R的任一实例,其元组的每一个属性值都只含有一个值),则 R1NF。1NF是关系的基本要求,否则不能称其为关系数据库。,第一范式(1NF)-例,满足第一范式的关系模式并不一定是一个好的关系模式。 如:SLC(Sno,Sdept,Sloc,Cno,Grade)码为(Sno,Cno),第一范式(1NF)-例,函数依赖包括: (Sno,Cno) Grade Sno Sdept (Sno,Cno) Sdept Sno Sloc (Sno,Cno) Sloc Sdept Sloc(因为每个系只住在一个地方),f,p,p,SLC关系模式上的一组函数依赖,第一范式(1NF)-例,对前例分析:非主属性 Sde

14、pt 和 Sloc 部分函数依赖于码(Sno,Cno)。SLC关系存在数据冗余、更新异常、插入异常、删除异常4个问题。因此SLC不是一个好的关系模式。应消除部分函数依赖,可用投影分解法分解为两个关系模式:,第一范式(1NF)-例,SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)依赖关系为: (Sno,Cno) Grade Sno Sdept Sno Sloc显然,分解后非主属性都完全函数依赖于码了,使以上4个问题得到一定解决,SC,SL属于2NF。,第二范式(2NF),定义11.7: 若关系模式R1NF,且每一非主属性完全函数依赖于R的码,则R2NF。2NF含义:R(A,

15、B,C,D,E), A,B为主码,则有A,BC, A,BD, A,BE但C、D、E都不局部函数依赖于A,B即AC、 BC、 AD、 BD、 AE、 BE中任何一个均不成立,2NF例子,供应关系 R(S, P, city, status, Price, QTY)F=S#city, S#status , P#Price, city status,S#,P# QTY 所以主码为S,P但city和Price都局部函数依赖于主码所以R 2NF,不满足2NF带来的问题,R( S, P, city, status, Price, QTY)插入异常:没有供应零件的供应商无法插入删除异常:删除供应商的供货信息同时删除了供应商的其它信息更新异常:供应商的city修改时必须修改多个元组数据冗余:同一供应商的city被重复存储,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号