




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2005-9-4,1,第五章 关系数据库理论,2005-9-4,2,关系数据库设计中存在的问题,示例: 考虑为管理职工的工资信息而设计一个关系模式。,2005-9-4,3,存在的问题分类,插入异常 如果没有职工具有8级工资,则8级工资的工资数额就难以插入。 删除异常 如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。 数据冗余 职工很多,工资级别有限,每一级别的工资数额反复存储多次。 更新异常 如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。,2005-9-4,4,关系数据库设计中存在的问题,解决之道:模式分解,2005-9-4,5,有关学生的关系模式S(S# , SN , SD , DEAN , C# , G),问题:它有哪些数据冗余? 问题:它有哪些不良的数据依赖?,2005-9-4,6,讨论关系数据库逻辑设计问题: 针对一个具体问题,应该 如何构造一个适合于它的数据库模式? 即应该构造几个关系模式? 每个关系由哪些属性组成?,2005-9-4,7,下面首先回顾一下关系模型的形式化定义。,一个关系模式应当是一个五元组 R(U, D, DOM, F) 说明: 关系名R,它是符号化的元组语义; 一组属性U; 属性组U中属性所来自的域D; 属性到域的映射DOM; 属性组U上的一组数据依赖F。 由于D和DOM对模式设计关系不大,因此我们在本章中把关系模式看作是一个三元组:RU,F 当且仅当U上的一个关系r满足F时,r称为关系模式RU,F的一个关系。,2005-9-4,8,第一范式 关系,作为一张二维表,我们对它有一个最起码的要求:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。 我们的任务是研究模式设计,研究设计一个“好”的(没有“毛病”的)关系模式的办法。 数据依赖 数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。 现在人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖(Functional Dependency简记为FD)和多值依赖(Multivalued Dependency简记为MVD)。 比如描述一个学生的关系,可以有学号(SNO),姓名(SNAME),系名(SDEPT)等几个属性。由于一个学号只对应一个学生,一个学生只在一个系学习。 因而当“学号”值确定之后,姓名和该生所在系的值也就被唯一地确定了。就象自变量x确定之后,相应的函数值f(x)也就唯一地确定了一样,我们说SNO函数决定SNAME和SDEPT,或者说SNAME,SDEPT函数依赖于SNO,记为SNOSNAME,SNOSDEPT。,2005-9-4,9,建立一个描述学生的数据库,分析: 面临的对象有 学生(用学号SNO描述) 系(用系名SDEPT描述) 系负责人(用其姓名MN描述) 课程(用课程名CNAME描述) 成绩(G)。 现实世界的已知事实告诉我们 1一个系有若干学生,但一个学生只属于一个系; 2一个系只有一名(正职)负责人; 3一个学生可以选修多门课程,每门课程有若干学生选修; 4每个学生学习每一门课程有一个成绩;,2005-9-4,10,如果只考虑函数依赖这一种数据依赖,我们就得到了一个描述学校的数据库模式SU,F,它由一个单一的关系模式构成: U = SNO,SDEPT,MN,CNAME,G F = SNOSDEPT,SDEPTMN,(SNO,CNAME)G 这组函数依赖如图5.l所示。,2005-9-4,11,前面的学生模式有下述三个“毛病”:,1.插入异常 如果一个系刚成立尚无学生,或者虽然有了学生但尚未安排课程。那么我们就无法把这个系及其负责人的信息存入数据库。 2.删除异常 反过来,如果某个系的学生全部毕业了,我们在删除该系学生选修课程的同时,把这个系及其负责人的信息也丢掉了。 3.冗余太大 比如,每一个系负责人的姓名要与该系每一个学生的每一门功课的成绩出现的次数一样多。这样,一方面浪费存储,另一方面系统耍付出很大的代价来维护数据库的完整性。比如某系负责人更换后,就必须逐一修改有关的每一个元组。,2005-9-4,12,为什么会发生插入异常和删除异常呢 ?,这是因为这个模式中的函数依赖存在某些不好的性质。假如我们把这个单一的模式改造一下,分成三个关系模式: S(SNO,SDEPT, SNOSDEPT); SG(SNO,CNAME,G, (SNO,CNAME)G); DEPT(SDEPT,MN, SDEPTMN); 这三个模式都不会发生插入异常、删除异常的毛病,数据的冗佘也得到了控制。 一个模式的函数依赖会有哪些不好的性质,如何改造一个不好的模式,这就是下一节规范化理论讨论的内容。,2005-9-4,13,定义5.1函数依赖,定义5.1 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作XY。,例如: 每个学生有且只有一个专业,即“学号”决定“专业” 。 因此,“专业”函数依赖于“学号”。学号专业 注意,AB时,A和B的关系通常是N:1。即有许多学生选修同一个专业,但一个人只能有一个专业。 函数依赖可包含属性组,如,(学号,课程名)成绩 区别情况: 若X(Y,Z),则XY,XZ。 比如,学号(姓名,专业),则学号姓名,学号专业 若(X,Y)Z,一般情况下,XZ和YZ都不成立 比如, (学号,课程名)成绩,但“学号”或“课程名”本身都不能单独决定“成绩”,2005-9-4,14,函数依赖:设R(U)是属性集U上的关系模式,X , Y U, r是R(U) 上的任意一个关系,如果成立对t , s r,若tX = sX,则tY = sY,那么称“X函数决定Y”,或“Y函数依赖于X”,记作XY。称X为决定因素。 如:S# SN, (S#,C#) G 如果X Y,但Y X,则称其为非平凡的函数依赖,否则称为平凡的函数依赖。 如(S#,SN) SN是平凡的函数依赖,2005-9-4,15,定义5.2 完全函数依赖,定义5.2 在R(U)中,如果XY,且对于任意X的真子集X,都有XY ,则称Y对X完全函数依赖, 记作X Y ,否则称为Y对X部分函数依赖,记作X Y。 例如:(S#,C#) Grade 找出S中的另一部分函数依赖。 U = SNO,SDEPT,MN,CNAME,G F = SNOSDEPT,SDEPTMN,(SNO,CNAME)G ,2005-9-4,16,定义5.3 传递函数依赖,定义5.3 在R(U)中,如果XY,(Y X),Y X,YZ,则称Z对X传递函数依赖。 加上条件YX,是因为如果YX,则XY,实际上是直接函数依赖而不是传递函数依赖。 例如: S(SNO,SDEPT, SNOSDEPT); SG(SNO,CNAME,G, (SNO,CNAME)G); DEPT(SDEPT,MN, SDEPTMN) 则,SNO SDEPT,SDEPT MN 想一想还有没有别的例子?,2005-9-4,17,检验:AC?CA?ABD? 辨识: 满足依赖的关系: 依赖在模式的某个关系实例上成立。 模式上成立的依赖: 依赖在模式的所有关系实例上都成立。,2005-9-4,18,练习,找出可能的函数依赖。,2005-9-4,19,定义码,定义5.4 设K为RU,F中的属性或属性组合,若K U则K为R的候选码(Candidate key)。若候选码多于一个,则选定其中的一个为主码(Primary key)。 包含在任何一个候选码中的属性,叫做主属性(Prime attribute)。不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码(All-key)。 例如; 关系模式R(P,W,A),属性P表示演奏者,W表示作品,A表示听众。假设一个演奏者可以演奏多个作品,某一作品可被多个演奏者演奏。听众也可以欣赏不同演奏者的不同作品,这个关系模式的码为(P,W,A),即All-key。,2005-9-4,20,定义5.5 外码,定义5.5 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称 X是R的外部码(Foreign key)也称外码。 主码与外部码提供了一个表示关系间联系的手段。 主码:若R(U , F)有多个候选码,则可以从中选定一个作为R的主码。 主属性:包含在每一个候选码中的属性,称作主属性。 全码:关系模式的码由整个属性组构成。,2005-9-4,21,范例,关系模式S(S# , SN , SD , DEAN , C# , G) 主码:(S#,C#) 函数依赖: (S#,C#) G S# SN,(S#,C#) SN S# SD,(S#,C#) SD SD DEAN,2005-9-4,22,范式,定义 范式是对关系的不同数据依赖程度的要求。 通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化(概念的纯粹化)。,1NF,2NF,3NF,4NF,BCNF,5NF,2005-9-4,23,定义 1NF,定义 关系中每一分量不可再分。即不能以集合、序列等作为属性值。,2005-9-4,24,1NF,分量是否需要再分,与具体应用有关!如果用到值的一部分,则需要进一步分割。 如果只是查询出生日期,则它满足1NF。 如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF。 如果比较两人的生肖呢?,2005-9-4,25,关系模式 S(S# , SN , SD , DEAN , C# , G) 不良特性 插入异常:如果学生没有选课,关于他的个人信息及所在系的信息就无法插入。 删除异常:如果删除学生的选课信息,则有关他的个人信息及所在系的信息也随之删除了。 更新异常:如果学生转系,若他选修了k门课,则需要修改k次。 数据冗余:如果一个学生选修了k门课,则有关他的所在系的信息重复,2005-9-4,26,2NF,定义5.6 若R1NF,且每个非主属性完全依赖于码,则称R2NF。(即消除非主属性对码的部分依赖)。 关系模式 S( S# , C# , SN , SD , DEAN , G) S2NF,因为(S#,C#) SN, (S#,C#) CN 改造 非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为:SC(S# , C# , G) S_SD(S# , SN , SD , DEAN) 练习 关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于1NF而不属于2NF。,2005-9-4,27,S_SD(S# , SN , SD , DEAN) 不良特性 插入异常:若系中没有学生,则有关该系的信息就无法插入。 删除异常:如果学生全部毕业了,则在删除学生信息的同时有关该系的信息也随之删除了。 更新异常:如果学生转系,不但要修改SD,还要修改DEAN,如果换系主任,则该系每个学生元组都要做相应修改。 数据冗余:每个学生都存储了所在系的系主任的信息。,2005-9-4,28,定义 3NF,定义5.7 关系模式R中,若不存在这样的码X,属性组Y及非主属性Z(Z Y),使得下式成立, XY , YZ , YX 则称R3NF(即消除非主属性对码的传递依赖)。 如S_SD 3NF,因为有S#SD,SDDEAN 改造 将S分解为:STUDENT(S# , SN , SD) DEPT(SD , DEAN),2005-9-4,29,3NF,练习 关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF。,2005-9-4,30,示例,SPC(S# , P# , C#),即(学号,教师编号,课程号) 假设每位老师只教授一门课, 则P# C# (S#,P#) C# (S#,C#) P#,某学生选定一门课,就对应一位老师 (S#,P#),(S#,C#)为候选码。 思考: 这三个属性是否都是主属性? SPC 3NF ?请参考课本Page 176上的3NF定义 提示: 注意定义5.7中的一词“非主属性”,2005-9-4,31,不良特性 插入异常:如果没有学生选修某位老师的任课,则该老师担任课程的信息就无法插入。 删除异常:删除学生选课信息,会删除掉老师的任课信息。 更新异常:如果老师所教授的课程有所改动,则所有选修该老师课程的学生元组都要做改动。 数据冗余:每位学生都存储了有关老师所教授的课程的信息。 症由:主属性对码的不良依赖。,2005-9-4,32,定义 BCNF,定义 5.8 关系模式R中,对于属性组X,Y,若XY 且Y X时X必含有码,则R BCNF。 即每一个决定因素都包含码。 如SPC BCNF,因为P# C#,而P#不是码。 改造 将S分解为(S#,P#),(P#,C#)。 思考 关系模式SCO(S# , C# , ORDER),表示学生选修课程的名次,有函数依赖(S#,C#) ORDER, 假定同一课程每个名次只有一人则(C#,ORDER) S#,它属于哪个范式?它的码是什么?该关系模式有何不良特性? 关系模式STJ(S#,T#,J#),一个教师只教一门课,一门课有若干教师,则(S#,J#)T#,(S#,T#)J#,T#J#。STJ BCNF,2005-9-4,33,例如 :关系模式TEACH(C#,P#,B#),一门课程由多个教员担任,一门课程使用相同的一套参考书。它的码是(C#,P#,B#),所以属于BCNF。,不良特性 插入异常:当某门课程增加一名教员时,该门课程有多少本参考书就必须插入多少个元组;同样当某门课程需要增加一本参考书时,它有多少个教员就必须插入多少个元组。 删除异常:当删除一门课程的某个教员或者某本参考书时,需要删除多个元组。 更新异常:当一门课程的教员或参考书作出改变时,需要修改多个元组。 数据冗余:同一门课的教员与参考书的信息被反复存储多次。,2005-9-4,34,定义多值依赖,定义 描述型:关系模式R(U),X、Y、Z U,并且Z = U X Y,多值依赖X Y成立当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。 如在关系模式TEACH中,对(C1 , B1)有一组P#值(P1 , P2),对(C1 , B2)也有一组P#值(P1 , P2),这组值仅取决于C#的取值,而与B#的取值无关。因此,P#多值依赖于C#,记作C# P#,同样有C# B#。,2005-9-4,35,多值依赖(),形式化:关系模式R(U),X、Y、ZU,Z=UX Y,对于R(U)的任一关系r,若存在元组t1,t2,使得t1X = t2X,那么就必然存在元组t3,t4,使得: t3X = t4X = t1X = t2X t3Y = t1Y, t4Y = t2Y t3Z = t2Z, t4Z = t1Z 则称Y多值依赖与X,记作X Y。 若(C#, P#, B#)满足C#P#,含有元组t1=(C1, P1, B1),t2=(C1, P2, B2),则也一定含有元组t3=(C1, P1, B2),t2=(C1, P2, B1)。,2005-9-4,36,多值依赖(),找出关系上所满足的多值依赖。,CB?若使BC成立,需加入哪些元组?,t1 t2,t3 t4,t3 t4,2005-9-4,37,多值依赖(),性质 多值依赖具有对称性,即 若XY,则XZ,其中Z=UXY。 函数依赖是多值依赖的特例,即 若XY,则XY。 若XY,UXY=,则称XY为平凡的多值依赖。,2005-9-4,38,多值依赖 Vs 函数依赖(),区别 函数依赖规定某些元组不能出现在关系中,也称为相等产生依赖。 多值依赖要求某种形式的其它元组必须在关系中,称为元组产生依赖。 有效性范围 XY的有效性仅决定于X、Y属性集上的值,它在任何属性集W(XY W U)上都成立。 若XY在R(U)上成立,则对于任何Y Y,均有XY 成立。,2005-9-4,39,多值依赖 Vs 函数依赖(),XY的有效性与属性集范围有关。 XY在属性集W(XY W U)上成立,但在U上不一定成立。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省北川县通口河鱼类资源调查及禁渔效果初步评估
- 耳穴刮痧联合头部经络梳理对肝火扰心型不寐患者的应用研究
- 玉米根茬挖掘装置及关键部件设计与试验研究
- 办公档案柜合同范例
- 磁饱和式可控电抗器振动噪声与其铁心饱和程度的关系研究
- 滤池式微生物电化学反应器对畜禽废水的深度处理研究
- 企业合作合同范例范例
- 关于文化演出安全合同范例
- 产床购销合同范例
- 个人安全协议合同范例
- 2025年工程策划勘察设计合作框架协议书
- 2025年哈尔滨铁道职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 国外银发经济发展
- 2025年高考作文素材积累之《人民日报》时评观点摘抄(标题、开头、分论点、结尾)
- 2024年07月上海兴业银行上海分行招考笔试历年参考题库附带答案详解
- 中药玫瑰花培训
- 广东省佛山市(2024年-2025年小学六年级语文)统编版小升初真题((上下)学期)试卷及答案
- 2025年吉林通化梅河新区(梅河口市)专项引进高层次教育人才40人高频重点提升(共500题)附带答案详解
- 湖北日报传媒集团(湖北日报社)招聘笔试冲刺题2025
- 危险性较大工程培训课件
- 建筑施工安全员述职
评论
0/150
提交评论