文档详情

11-第十章 关系数据理论-new.ppt

发布:2016-12-05约2.01万字共86页下载文档
文本预览下载声明
第十一章: 关系数据理论 问题的提出 规范化 数据依赖的公理系统 关系模式的分解 问题的提出 由ER模型翻译为关系模式, 得到的关系模式一定是好的吗? 一个好的设计不一定导致一个好的关系模式 ER的设计过程是主观的和复杂的 有些约束用ER无法表示 转换后的关系模式可能存在冗余 关系数据库设计中存在的问题 例1:考虑为管理职工的工资信息而设计一个关系模式。 冗余导致的问题分类 插入异常 如果没有职工具有8级工资,则8级工资的工资数额就难以插入。 删除异常 如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。 数据冗余 职工很多,工资级别有限,每一级别的工资数额反复存储多次。 更新异常 如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。 关系数据库设计中存在的问题 解决之道:模式分解 建立一个描述学生的数据库 面临的对象有 学生号(S#) 学生名(SN) 学生宿舍(Loc) 系名(Dept) 系负责人(Dean) 课程号(C#) 成绩(Grade) 现实世界的已知事实告诉我们 一个系有若干学生, 但一个学生只属于一个系 一个系只有一名(正职)负责人 一个学生可以选修多门课程,每门课程有若干学生选修 每个学生学习每一门课程有一个成绩 同一个系的同学被分配在同一个宿舍楼 建立一个描述学生的数据库 例2:有关学生的关系模式 S(S#, SN, Loc, Dept, Dean, C#, Grade) 关系数据库设计中存在的问题 例2:有关学生的关系模式 S(S#, SN, Loc, Dept, Dean, C#, Grade) 关系数据库设计中存在的问题 例2:有关学生的关系模式 S(S# , SN , Loc , Dept, Dean , C# , Grade) 问题:它有哪些数据冗余? 问题:它有哪些不良的数据依赖? 关系数据库设计中存在的问题 例2:有关学生的关系模式 S(S# , SN , Loc , Dept, Dean , C# , Grade) 结论: S(S# , SN , Loc , Dept, Dean , C# , Grade)不是一个好的关系模式 原因:其中存在的数据依赖具有不好的性质 一个好的关系模式应该具备以下四个条件 1) 尽可能少的数据冗余 2) 没有插入异常 3) 没有删除异常 4) 没有更新异常 关系数据库设计中存在的问题 例2:有关学生的关系模式S(S# , SN , Age , Dept, Dean , C# , Grade) 规范化: 为了控制由于冗余带来的问题而要求关系模式满足一定的范型,可以通过模式分解来达到,这一过程称之为规范化(Normalization) 数据依赖 数据依赖 实体内部各属性之间的联系, 是现实世界属性间相互联系的抽象, 体现在关系模式中的各属性之间相互依赖、相互制约的联系 数据依赖种类 函数依赖:最重要 多值依赖 连接依赖 函数依赖(Functional Dependency) 关系模式中属性之间的一种逻辑依赖关系 例如:S#与SN、Loc、Dept之间都有一种函数依赖关系 函数依赖的定义 设RU是属性集U上的关系模式, X, Y是U的子集, 若对于RU的任意一个可能的关系r, r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”, 记作X?Y X, Y含义: 假定关系r, r1和r2是其中两个元组, 如果 r1[X]=r2[X]=‘S1’ , 从应用要求可知 r1[Y]=r2[Y]=(‘赵亦’, ‘17’, ‘CS’), 即r1和r2是一个元组, 则X?Y X, Y含义: 若 X--SN, Y--Loc 假定r1和r2是关系r中的两个元组, 如果 r1[X]=r2[X]=‘赵亦’ , 从应用要求可知(重名) r1[Y]=‘一舍’ 而 r2[Y]=‘八舍’, 则X Y 函数依赖的定义 注意: 函数依赖是指关系模式R的一切关系均要满足的约束条件; 函数依赖和别的数据依赖一样是语义范畴的概念(只能从属性含义上加以说明, 不能在数据上加以证明) 关系中的所有元组应该满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件 当关系中的元组增加、删除或更新后都不能破坏这种函数依赖 ?语义确定属性之间的函数依赖,而不能单凭某一时刻关系中的实际数据值来判断 例如,对于关系模式S,即使当前关系中没有重名的记录,也只能存在函数依赖S#→SN,而不能存在函数依赖SN→S#,因为可能有新增加的一个重名的学生 函数依赖的定义 一些记号
显示全部
相似文档