数据库原理课件第4章.ppt_第1页
数据库原理课件第4章.ppt_第2页
数据库原理课件第4章.ppt_第3页
数据库原理课件第4章.ppt_第4页
数据库原理课件第4章.ppt_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 关系数据库的规范化设计 第六章 关系数据理论 4.1 问题的提出 4.2 规范化 4.3 数据依赖的公理系统 *4.4 模式的分解 4.5 小结 一、概念回顾 v关系 v关系模式 v关系数据库 v关系数据库的模式 关系模式的形式化定义 关系模式由五部分组成,即它是一个五元组: r(u, d, dom, f) r: 关系名 u: 组成该关系的属性名集合 d: 属性组u中属性所来自的域 dom: 属性向域的映象集合 f: 属性间数据的依赖关系集合 四、关系模式的简化表示 v关系模式r(u, d, dom, f) 简化为一个三元组: r(u, f) v当且仅当u上的一个关系r满足f时,r称为 关系模式 r(u, f)的一个关系 4.1 问题的提出 关系数据库逻辑设计 针对具体问题,如何构造一个适合于 它的数据模式 数据库逻辑设计的工具关系数据 库的规范化理论 例1建立一个描述学校教务的数据库: 学生的学号(sno)、所在系(sdept ) 系主任姓名(mname)、课程名( cname) 成绩(grade) 单一的关系模式 : student u sno, sdept, mname, cname, grade u sno, sdept, mname, cname, grade u sno, sdept, mname, cname, grade 属性组u上的一组函数依赖f: f sno sdept, sdept mname, (sno, cname) grade snocname sdeptmname grade 关系模式中存在的问题 数据冗余太大 浪费大量的存储空间 例:每一个系主任信息重复出现 更新异常 数据冗余 ,更新数据时,维护数据完整性 代价大。 例:系主任信息修改 关系模式中存在的问题 插入异常 该插的数据插不进去 例,插入一个新系信息。 删除异常 不该删除的数据不得不删 例,某系学生全部毕业 关系模式student中存在的问题 1. 数据冗余太大 2. 更新异常(update anomalies ) 3. 插入异常(insertion anomalies) 4. 删除异常(deletion anomalies ) 数据依赖对关系模式的影响(续) 结论: nstudent关系模式不是一个好的模式。 n“好”的模式: 不会发生插入异常、删除异常、更新异 常, 数据冗余应尽可能少 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合 适 的数据依赖 什么是数据依赖(续) 数据依赖 v一个关系内部属性与属性之间的约束关系 v现实世界属性间相互联系的抽象 v数据内在的性质 v语义的体现 什么是数据依赖(续) 数据依赖的类型 v函数依赖(functional dependency,简记 为fd) v多值依赖(multivalued dependency,简 记为mvd) v其他 分解关系模式 v把这个单一模式分成3个关系模式: s(sno,sdept,sno sdept); sc(sno,cno,grade,(sno,cno) grade); dept(sdept,mname,sdept mname ) 第六章 关系数据理论 4.1 问题的提出 4.2 规范化 4.3 数据依赖的公理系统 *4.4 模式的分解 4.5 小结 4.2 规范化 规范化理论正是用来改造关系模式,通 过分解关系模式来消除其中不合适的数据依 赖,以解决插入异常、删除异常、更新异常 和数据冗余问题。 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.1 函数依赖 v函数依赖 v平凡函数依赖与非平凡函数依赖 v完全函数依赖与部分函数依赖 v传递函数依赖 一、函数依赖 定义4.1 设r(u)是一个属性集u上的关系模式,x 和y是u的子集。 若对于r(u)的任意一个可能的关系r,r中不可 能存在两个元组在x上的属性值相等, 而在y上的属 性值不等, 则称 “x函数确定y” 或 “y函数依赖 于x”,记作xy。 说明 1. 所有关系实例均要满足 2. 语义范畴的概念 3. 数据库设计者可以对现实世界作强 制的规定 二、平凡函数依赖与非平凡函数依赖 在关系模式r(u)中,对于u的子集x和y, 如果xy,但y x,则称xy是非平凡的函数依 赖 若xy,但y x, 则称xy是平凡的函数依赖 v例:在关系sc(sno, cno, grade)中, 非平凡函数依赖: (sno, cno) grade 平凡函数依赖: (sno, cno) sno (sno, cno) cno 平凡函数依赖与非平凡函数依赖(续) 若xy,则x称为这个函数依赖的决定 属性组,也称为决定因素(determinant )。 若xy,yx,则记作xy。 若y不函数依赖于x,则记作xy。 三、完全函数依赖与部分函数依赖 定义4.2 在r(u)中,如果xy,并且对于 x的任何一个真子集x,都有x y, 则 称y对x完全函数依赖,记作x f y。 若xy,但y不完全函数依赖于x,则称y 对x部分函数依赖,记作x p y。 完全函数依赖与部分函数依赖(续) 例1 中(sno,cno)grade是完全函数依赖 , (sno,cno)sdept是部分函数依赖 因为sno sdept成立,且sno是 (sno,cno)的真子集 f p 复 习 v什么是函数依赖、非平凡函数依赖 、完全函数依赖 v什么是码? v不好的关系模式会存在哪些问题? 四、传递函数依赖 定义4.3 在r(u)中,如果xy,(y x) ,yx yz, 则称z对x传递函数依赖。 记为:x z 注: 如果yx, 即xy,则z直接依赖于 x。 例: 在关系std(sno, sdept, mname)中,有 : sno sdept,sdept mname mname传递函数依赖于sno 传递 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.2 码 定义4.4 设k为r中的属性或属性组 合。若k u, 则k称为r的侯选码( candidate key)。 若候选码多于一个,则选定其中的一个 做为主码(primary key)。 f 码(续) v主属性与非主属性 包含在任何一个候选码中的属性 ,称为主属性 (prime attribute) 不包含在任何码中的属性称为非主属性( nonprime attribute)或非码属性(non-key attribute) v全码 整个属性组是码,称为全码(all-key) 码(续) 例3 关系模式r(p,w,a) p:演奏者 w:作品 a:听众 一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为(p,w,a),即all-key 外部码 定义4.5 关系模式 r 中属性或属性组x 并非 r的码 ,但 x 是另一个关系模式的码,则称 x 是r 的外部码 (foreign key)也称外码 v如在sc(sno,cno,grade)中, sno不是码,但sno是关系模式s(sno,sdept, sage)的码, 则sno是关系模式sc的外部码 v主码与外部码一起提供了表示关系间联系的手段 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.3 范式 v范式是符合某一种级别的关系模式的集合 v范式的种类: 第一范式(1nf) 第二范式(2nf) 第三范式(3nf) bc范式(bcnf) 第四范式(4nf) 第五范式(5nf) 4.2.3 范式 v各种范式之间存在联系: v某一关系模式r为第n范式,可简记为rnnf 。 v一个低一级范式的关系模式,通过模式分解可以 转换为若干个高一级范式的关系模式的集合,这种 过程就叫规范化 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.4 2nf v1nf的定义 如果一个关系模式r的所有属性都是不可分的 基本数据项,则r1nf v第一范式是对关系模式的最起码的要求。不满 足第一范式的数据库模式不能称为关系数据库 v但是满足第一范式的关系模式并不一定是一个 好的关系模式 2nf(续) v2nf的定义 定义4.6 若r1nf,且每一个非主属性完全 函数依赖于码,则r2nf。 2nf(续) 例4 关系模式 s-l-c(sno, sdept, sloc, cno, grade) sloc为学生住处,假设每个系的学生住在同一个地 方 v函数依赖包括: (sno, cno) f grade sno sdept (sno, cno) p sdept sno sloc (sno, cno) p sloc sdept sloc 2nf(续) vs-l-c的码为(sno, cno) vs-l-c满足第一范式。 v非主属性sdept和sloc部分函数依赖于码(sno, cno) sno cno grade sdept sloc s-l-c s-l-c不是一个好的关系模式(续) (1) 插入异常 (2) 删除异常 (3) 数据冗余度大 (4) 修改复杂 s-l-c不是一个好的关系模式(续) v原因 sdept、 sloc部分函数依赖于码。 v解决方法 s-l-c分解为两个关系模式,以消除这些 部分函数依赖 sc(sno, cno, grade) 2nf s-l(sno, sdept, sloc) 2nf 2nf(续) 函数依赖图: sno cno grade sc s-l sno sdept sloc v关系模式sc的码为(sno,cno) v关系模式s-l的码为sno v这样非主属性对码都是完全函数依赖 2nf(续) v采用投影分解法将一个1nf的关系分解为多个 2nf的关系,可以在一定程度上减轻原1nf关系 中 存在的插入异常、删除异常、数据冗余度大、修 改 复杂等问题。 v将一个1nf关系分解为多个2nf的关系,并不能 完全消除关系模式中的各种异常情况和数据冗余 。 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.5 3nf v3nf的定义 定义4.7 关系模式r 中若不存在这样的 码x,属性组y及非主属性z(z y), 使得xy ,yz 成立,y x,则称r 3nf。 n 若r3nf,则每一个非主属性既不部分 依赖于码也不传递依赖于码。 3nf(续) 例:2nf关系模式s-l(sno, sdept, sloc)中 函数依赖: snosdept sdept sno sdeptsloc 可得: snosloc, 传递 所以s-l 3nf 3nf(续) 函数依赖图: s-l sno sdept sloc 3nf(续) v解决方法 采用投影分解法,把s-l分解为两个关系模式, 以消除传递函数依赖: s-d(sno, sdept) d-l(sdept,sloc) s-d的码为sno, d-l的码为sdept。 n分解后的关系模式s-d与d-l中不再存在传 递依赖 3nf(续) s-d的码为sno, d-l的码为sdept snosdept s-d sdeptsloc d-l s-l(sno, sdept, sloc) 2nf s-l(sno, sdept, sloc) 3nf s-d(sno,sdept) 3nf d-l(sdept, sloc) 3nf 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.6 bc范式(bcnf) v定义4.8 关系模式r1nf, 若xy且y x时x必含有码,则 rbcnf。 v等价于:每一个决定属性因素都包含码 bcnf(续) v若rbcnf 所有非主属性对每一个码都是完全函数 依赖 所有的主属性对每一个不包含它的码, 也是完全函数依赖 没有任何属性完全函数依赖于非码的任 何一组属性 r bcnf r 3nf 充分 不必要 bcnf(续) 例5 关系模式c(cno,cname,pcno) n c3nf n cbcnf 例6 关系模式s(sno,sname,sdept,sage ) n 假定s有两个码sno,sname n s3nf。 n s bcnf bcnf(续) 例7关系模式sjp(s, j , p) 学生 课程 名次 n函数依赖:(s,j)p;(j,p) s n(s,j)与(j,p)都可以作为 候选码 nsjp3nf nsjpbcnf bcnf(续) 例8在关系模式stj(s,t,j)中, s表示学生,t表示教师,j表示课程。 函数依赖: (s,j)t,(s,t)j,tj (s,j)和(s,t)都是候选码 bcnf(续) j s j t s t stj中的函数依赖 bcnf(续) vstj3nf 没有任何非主属性对码传递依赖或 部分依赖 vstjbcnf t是决定因素,t不包含码 bcnf(续) v解决方法:将stj分解为二个关系模式: st(s,t) bcnf, tj(t,j) bcnf 没有任何属性对码的部分函数依赖和传递函数依 赖 sj st tj tj 3nf与bcnf的关系 vr bcnf r 3nf v如果r3nf,且r只有一个候选码 r bcnf r 3nf 充分 不必要 充分 必要 判断下列关系模式是否满足bc范式 1、r(x,y,z)f= y-z,y-x,x-yz 2、 管理(仓库号,设 备号,职工号) (语义:每个仓库有多个职工,一名职工只 能在一个仓库工作,每个仓库一种设备仅有一 名职工保管,每名职工可保管多种设备) 职工号 仓库号 (仓库号,设备号) 职工号 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.7 多值依赖 例9 学校中某一门课程由多个 教师讲授,他们使用相同的一套参 考书。每个教员可以讲授多门课程 ,每种参考书可以供多门课程使用 。 课 程 c教 员 t参 考 书 b 物理 数学 计算数学 李 勇 王 军 李 勇 张 平 张 平 周 峰 普通物理学 光学原理 物理习题集 数学分析 微分方程 高等代数 数学分析 . 多值依赖(续) v非规范化关系 普通物理学 光学原理 物理习题集 普通物理学 光学原理 物理习题集 数学分析 微分方程 高等代数 数学分析 微分方程 高等代数 李 勇 李 勇 李 勇 王 军 王 军 王 军 李 勇 李 勇 李 勇 张 平 张 平 张 平 物 理 物 理 物 理 物 理 物 理 物 理 数 学 数 学 数 学 数 学 数 学 数 学 参考书b教员t课程c 多值依赖(续) v 用二维表表示teaching 多值依赖(续) vteachingbcnf vteaching具有唯一候选码(c,t,b), 即全码 多值依赖(续) teaching模式中存在的问题 (1)数据冗余度大 (2)插入操作复杂 (3)删除操作复杂 (4)修改操作复杂 存在 多值依赖 多值依赖(续) v定义4.9 设r(u)是一个属性集u上的一个关系模式, x、 y和z是u的子集,并且zuxy,当且仅 当 对r的任一关系r,r在(x,z)上的每个值对 应 一组y的值,这组值仅仅决定于x值而与z值无 关 则多值依赖 xy成立 例 teaching(c, t, b) 多值依赖(续) v多值依赖的另一个等价的形式化的定义: 在r(u)的任一关系r中,如果存在元组t,s 使得 tx=sx,那么就必然存在元组 w,v r,(w,v可以与s,t 相同),使得wx=vx=tx,而wy=ty,wz=sz, vy=sy,vz=tz(即交换s,t元组的y值所得的两个新元组 必在r中),则y多值依赖于x,记为xy。 这里,x,y是u 的子集,z=u-x-y。 多值依赖(续) v平凡多值依赖和非平凡的多值依赖 若xy,而z,则称 xy为平凡的多值依赖 否则称xy为非平凡的多值 依赖 多值依赖(续) 例10关系模式wsc(w,s,c) n w表示仓库,s表示保管员,c表示 商品 n 假设每个仓库有若干个保管员,有若 干种商品 n 每个保管员保管所在的仓库的所有商 品 n 每种商品被所有保管员保管 多值依赖(续) wsc w1s1c1 w1s1c2 w1s1c3 w1s2c1 w1s2c2 w1s2c3 w2s3c4 w2s3c5 w2s4c4 w2s4c5 ws且wc 多值依赖(续) ws且wc 多值依赖的性质 (1)多值依赖具有对称性 若xy,则xz,其中zuxy (2)多值依赖具有传递性 若xy,yz, 则xz y (3)函数依赖是多值依赖的特殊情况。 若xy,则xy。 (4)若xy,xz,则xy z。 (5)若xy,xz,则xyz。 (6)若xy,xz,则xy-z,xz -y 。 多值依赖与函数依赖的区别 (1) 多值依赖的有效性与属性集的范围有关 (2) 若函数依赖xy在r(u)上成立, 则对于任何y y均有xy 成立 多值依赖xy若在r(u)上成立, 不能断言对于任何y y有xy 成 立 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.8 4nf v定义4.10 关系模式r1nf,如果对 于r的每个非平凡多值依赖xy(y x), x都含有码,则r4nf。 v如果r 4nf, 则r bcnf 4nf(续) 例: teaching(c,t,b) 4nf 存在非平凡的多值依赖ct,且c不 是码用投影分解法把teaching分解为如下两个 关系模式: ct(c, t) 4nf cb(c, b) 4nf ct, cb是平凡多值依赖 4.2 规范化 4.2.1 函数依赖 4.2.2 码 4.2.3 范式 4.2.4 2nf 4.2.5 3nf 4.2.6 bcnf 4.2.7 多值依赖 4.2.8 4nf 4.2.9 规范化小结 4.2.9 规范化小结 v关系数据库的规范化理论是数据库逻辑设计的 工具 v目的:尽量消除插入、删除异常,修改复杂, 数据冗余 v基本思想:逐步消除数据依赖中不合适的部分 实质:概念的单一化 规范化小结(续) v关系模式规范化的基本步骤 1nf 消除非主属性对码的部分函数依赖 消除决定属性 2nf 集非码的非平 消除非主属性对码的传递函数依赖 凡函数依赖 3nf 消除主属性对码的部分和传递函数依赖 - bcnf 消除非平凡且非函数依赖的多值依赖 4nf 规范化小结(续) v不能说规范化程度越高的关系模式就越好 v在设计数据库模式结构时,必须对现实世界的实 际情况和用户应用需求作进一步分析,确定一个合 适的、能够反映现实世界的模式 v上面的规范化步骤可以在其中任何一步终止 第六章 关系数据理论 4.1 问题的提出 4.2 规范化 4.3 数据依赖的公理系统 *4.4 模式的分解 4.5 小结 4.3 数据依赖的公理系统 v逻辑蕴含 定义4.11 对于满足一组函数依赖 f 的 关系模式r ,其任何一个关系r, 若函数依赖xy都成立, 则称f逻辑蕴含 x y 例如,关系模式student(sno,sname, sage,sd,sdname) 其属性组上的函数依赖集为 f snosname,snosage,snosd, sdsdname, snosdname就是f所逻辑蕴含的一个函数 依赖。 函数依赖的逻辑蕴涵 1. armstrong公理系统 关系模式r 来说有以下的推理规则 : a1.自反律(reflexivity):若y x u,则x y为f所蕴含。 a2.增广律(augmentation):若xy 为f所蕴含,且z u,则xzyz为f所蕴 含。 a3.传递律(transitivity):若xy及 yz为f所蕴含,则xz为f所蕴含。 定理 4.1 armstrong推理规则是正确的 (l)自反律: 若y x u,则x y为f所蕴 含 证: 设y x u 对r 的任一关系r中的任意两个 元组t,s: 若tx=sx,由于y x,有ty=sy, 所以xy成立,自反律得证 定理 4.l armstrong推理规则是正确的(续) (2)增广律: 若xy为f所蕴含,且z u,则xzyz 为f所蕴含。 证:设xy为f所蕴含,且z u。 设r 的任一关系r中任意的两个元组t,s: 若txz=sxz,则有tx=sx和tz=sz; 由xy,于是有ty=sy,所以tyz=syz,所 以 xzyz为f所蕴含,增广律得证。 2. 导出规则 1.根据a1,a2,a3这三条推理规则可以得到 下面三条推理规则: 合并规则:由xy,xz,有xyz。 (a2, a3) 伪传递规则:由xy,wyz,有 xwz。 (a2, a3) 分解规则:由xy及 zy,有xz。 (a1, a3) 例:设有关系模式r(a,b,c,d,e)及其上的函数 依赖集f=abcd,ab,de,求证f必 蕴涵ae。 证明: ab (给定条件) aab (a2增广律) abcd (给定条件) acd (a3传递律) ac,ad (分解规则) de (给定条件) ae (a3传递律) 证毕。 举例 【例】 对于关系模式csz(city,st, zip),其属性组上的函数依赖集为 f (city,st)zip,zipcity ,利用 armstrong公理系统的推理规则,证明 (st,zip)(city,st,zip)。 举例 v证明:根据题意不难看出只要证明(st,zip)是 一个候选码即可,证明步骤如下: 因为zipcity (f中已给出) 所以(st,zip)(city,st) (利用增广率,即在函数依赖的两端加 st) (st,zip)(city,st,zip) (用增广率,加zip) armstrong公理系统 varmstrong公理系统是有效的、完备的 n有效性:由f 出发根据armstrong公 理推导出来的每一个函数依赖一定在f+中 ; n完备性:f+中的每一个函数依赖,必 定可以由f出发根据armstrong公理推导 出来 3. 函数依赖闭包 定义4.l2 在关系模式r中为f所逻辑 蕴含的函数依赖的全体叫作 f的闭包(closure), 记为f +。 定义4.13 设f为属性集u上的一组函数依赖 ,x u, xf+ = a|xa能由f 根据 armstrong公理导出,xf+称为属性集x关于函 数依赖集f 的闭包 例:设关系模式r(a,b,c)的函数依赖集为f= ab,bc,分别求a、b、c的闭包。 解:若xa, ab,bc (给定条件) ac (a2传递律) aa (a1自反律) =a,b,c (据定义) 若x=b bb (a1自反律) bc (给定条件) =b,c (据定义) 若x=c cc (自反律) =c (据定义) 例:设关系模式r(a,b,c)的函数依赖集为f= ab,bc,分别求a、b、c的闭包。 举例 【例】已知关系模式r(u,f),u=a ,b,c,d,e,f=ab,dc ,bce,acb,求 、 。 解: =abcde =abe f的闭包 f=xy, yz f+= x,y,z,xy, xz, yz, xyz, xx, yy, zz,xyx, xzx, yzy, xyzx, xy,y z,xyy, xzy, yzz, xyzy, xz,yyz,xyz, xzz, yzyz,xyzz, xxy,xyxy,xzxy,xyzxy, xxz,xyyz,xzxz,xyzyz, xyz,xyxz,xzxy,xyzxz, xzyz,xyxyz,xzxyz,xyzxyz f=xa1, , xan的闭包f+计算是一个np完全问题 关于闭包的引理 v引理4.2 设f为属性集u上的一组函数依赖,x,y u ,xy能由f 根据armstrong公理导出的充分必要 条件是y xf+ v用途 将判定xy是否能由f根据armstrong公理导 出的问题,转化为求出xf+ 、判定y是否为xf+的子 集的问题 5. 函数依赖集等价 定义4.14 如果g +=f +,就说函数依 赖集f覆盖g(f是g的覆盖,或g是f的 覆盖),或f与g等价。 引理4.3 f + = g + 的充分必要条件是 f g + ,和g f + 判断两个函数依赖集等价的可行算法 v定理4.3 v每个函数依赖集f均等价于一个极 小函数依赖集fm。 4. 最小依赖集 定义4.15 如果函数依赖集f满足下列条件,则称 f为一个极小函数依赖集。亦称为最小依赖集或最小 覆盖。 (1) f中任一函数依赖的右部仅含有一个属性。 (2) f中不存在这样的函数依赖xa,使得f与f- xa等价。 (3) f中不存在这样的函数依赖xa, x有真子 集 z使得f-xaza与f等价。 算法:求函数依赖f的最小依赖集f 多余,否则不多余,若包含则表示是否包含察 是否多余,即考看是非单属性的依赖,如 中左边的属性:逐个检查去掉各依赖左边的多余 否则不去掉若是则去掉包含 是否看,在剩下的依赖中求如掉它 个依赖开始,去中多余的依赖:从第一去掉 右边均改为单属性依赖用分解规则将所有依赖 yax yaxy f yxy xxyx f + + , ) 3( , ,)( )2( ) 1( 最小依赖集 例2 关系模式s,其中: u= sno,sdept,mname,cno,grade , f= snosdept,sdeptmname,(sno, cno)grade 设f=snosdept,snomname,sdeptmname , (sno,cno)grade,(sno,sdept)sdept f是最小覆盖,而f不是。 因为:f - snomname与f 等价 f - (sno,sdept)sdept也与f 等价 极小化处理= fmin=求最小的函数依赖集 例:设f是关系模式r(abc)的fd集 ,f=abc,bc,ab,abc ,试求fmin。 f=abc,bc,ab,abc 先把f中的fd写成右边是单属性形式: f=ab,ac,bc,ab,abc 删去重复的fd ab,得f=ab,ac, bc,abc f中ac可从ab和bc推出,因此ac是 冗余的,可删去。得f=ab,bc,abc f中abc可从ab和bc推出,因此abc 也可删去。最后得f=ab,bc,即所求的fmin。 极小化过程(续) 例3 f = ab,ba,bc,ac, ca fm1= ab,bc,ca fm2= ab,ba,ac,ca fm1、fm2都是f的最小依赖集: f的最小依赖集fm不唯一 v极小化过程也是检验f是否为极小依赖集的一 个算法 求候选码的方法 将属性分为四类 l:仅出现在函数依赖的左边 r:仅出现在函数依赖的右边 n:两边均未出现 lr:左右均出现 求候选码的方法 1、令x代表l、n类,y代表lr类 2、求x的闭包,若x的闭包含r的全部属性,则x 为r的唯一候选码,转5,否则转3 3、在y中取属性a,求(xa)的闭包,若它包含r的全 部属性,则转4,否则换一个属性反复进行这一过程 ,直到测完y中的属性 4、如已找到所有候选码,则转5,否则在y中依次 取2,3个属性,直到试完y中所有组合 5、结束输出结果 【例】设关系模式r(u,f),其中 u=a,b,c,d,f=ac, cb, adb。求r的候选码。 求候选码的方法 解:(1)检查 f发现,a,d只出现在函数依赖的 左部,所以为l类属性,x=ad,y=c (2)根据求属性闭包的算法,f中 ac,adb可以求得 =abcd=u,故ad为r唯一的候选码 。 f=ac, cb, adb 例题 设有关系模式r(a,b,c,d,e), 其上的函数依赖集: f=abc,cde,bd,ea 计算b+。 求出r的所有候选关键字。 b+=bd。 r的候选关键字只可能由f中各个函数依赖的 lr属性组成,即a,b,c,d,e v计算可知:a+=abcde,即au,a是一个 候选关键字。 b+=bd ,c+=c, d+=d, b、c、d 不是候选码 ve+=abcde,即eu,e是一个候选码。 f=abc,cde,bd,ea 计算可知: (bc)+=abcde,即cdu (cd)+=abcde,即cdu, (bd)+=bd cd,bc都是候选关键字。 r的所有候选关键字是a,bc,cd,e。 f=abc,cde,bd,ea 【例】设关系模式r(u,f),其中 u=h,i,j,k,l,m,f=hi ,ki,lmk,ik,khm 。求r的候选码。 求候选码的方法 解:(1)检查 f发现, h,l只出现在函数依 赖的左部,所以为l类属性, j为n类的属性 。 (2)根据求属性闭包的算法,f中hi, ik, khm可以求得 =hijklm=u, 故hij为r唯一的候选码。 f=hi,ki,lmk,ik,khm 第六章 关系数据理论 4.1 问题的提出 4.2 规范化 4.3 数据依赖的公理系统 *4.4 模式的分解 4.5 小结 4.4 模式的分解 v把低一级的关系模式分解为若干个高一级 的关系模式的方法不是唯一的 v只有能够保证分解后的关系模式与原关系 模式等价,分解方法才有意义 关系模式分解的标准 三种模式分解等价的定义: 分解具有无损连接性 分解要保持函数依赖 分解既要保持函数依赖,又要具有无 损连接性 模式的分解(续) v如果一个分解具有无损连接性,则它能够保证不丢失信 息 v如果一个分解保持了函数依赖,则它可以减轻或解决各 种异常情况 v分解具有无损连接性和分解保持函数依赖是两个互相独 立的标准。具有无损连接性的分解不一定能够保持函数依 赖;同样,保持函数依赖的分解也不一定具有无损连接性 。 v定理4.5:关系模式r(u,f)的一个分解 ,= r1 (u1,f1), r2 (u2,f2)具有 无损连接的充分必要的条件是: u1u2u1-u2 f+ 或u1u2u2-u1 f+ 保持无损连接的分解 【例】对给定的关系模式r(u,f), u=a,b,c,f=ab,如下的两个 分解: (1)1 = ab,bc (2)2 = ab,ac v判断这两个分解是否无损。 举例 解:(1)可根据无损连接定理判断本 题 abbc=b ab-bc=a bc-ab=c u=a,b,c,f=ab 故1为有损连接。 举例 (2)根据无损连接定理判断本题 abac=a ab-ac=b ac-ab =c 2为无损连接。 (1)构造一个n列k行表,每一行对应于一个 模式ri(1ik),每一列对应于一个属性 aj(1jn),如下表所示。 定理4.4判断分解是无损连接的测试方法 a1a2 an r1 r2 rk (2) 初始表(填表):若ajri,则第i行第j列上 填入aj,否则空着。 v(3) 修改表:取f中的某个函数依赖xy,在表 中寻找与x对应的列中含有相同属性值的行,然后 ,将这些行中对应y的属性的元素进行修改;若这 些元素中有aj,则全部改为aj; v(4) 这样反复进行,如发现某一行变成a1,a2, ,ak,则此分解具有连接不失真性。 例题 已知r(abcd), =ab,bc,cd, f=b a,c d 判断相对于f是否无损分解。 =ab,bc,cd, f=b a,c d (a)初始表格 a b c d ab a1 a2 bc a2 a3 cd a3 a4 (b) 修改后的表格 a b c d ab a1 a2 bc a1 a2 a3 a4 cd a3 a4 是无损分解 例:设有r(u,f),其中:u =(a,b,c,d,e), f=(ac,bc,cd,dec,cea),r的一个分解 为:r1(ad),r2 (ab),r3(be) ,r4(cde) , r5(ae)是否无损分解? 表(a) 初始表格 abcde r1:ada1a4 r2:aba1a2 r3:bea2a5 r4:cdea3a4a5 r5:aea1a5 表(b) 修改后的表格 abcde r1:ada1 a3 a4 r2:aba1a2 a3 r3:bea2a5 r4:cdea3a4a5 r5:aea1 a3 a5 表(b) 修改后的表格 abcde r1:ada1 a3 a4 r2:aba1a2 a3 r3:bea2 a3 a5 r4:cdea3a4a5 r5:aea1 a3 a5 表(b) 修改后的表格 abcde r1:ada1 a3 a4 r2:aba1a2 a3a4 r3:bea2 a3a4 a5 r4:cdea3 a4 a5 r5:aea1 a3a4 a5 表(b) 修改后的表格 abcde r1:ada1 a3 a4 r2:aba1a2 a3a4 r3:be a1a2a3a4a5 r4:cde a1 a3 a4 a5 r5:aea1 a3a4 a5 是无损分解 判断分解保持函数依赖的测试方法 v设关系模式r的一个分解=r1,r2,rk, f是r的依赖集,如果f等价于 r1(f)u r2(f) u u rk(f) ,则称分解具有依赖保持性 例 题 v给定关系模式r,其中 u=a,b,c,d,f=a b,b c,c d,d a,判断关系模式r的分解 =ab,bc,cd 是否具有依赖保持性 f=a b,b c,c d,d a =ab,bc,cd 解: ab(f)=a b,b a bc(f)=b c, c b cd(f)=cd, dc ab(f) u bc(f) u cd(f)=a b ,b a, b c ,c b,c d,d c 从中可以看到a b ,b c,c d均得以 保持,又d+=abcd, d a也得到保持 该分解具有依赖保持性 分解成2nf模式集的算法 v设r(u),主键w,若r上存在fd xz,且z是非主属性 和xw,则xz是一个部分函数依赖。此时应把r分 解成两个模式: r1(xz),主键是x; r2(y),其中y=u-z,主键仍是w,外键是x(参照r1) v利用外键和主键的联接可以从r1和r2重新得到r。 v如果r1和r2还不是2nf,则重复上述过程,一直到 数据库模式中每一个关系模式都是2nf为止。 算法:分解成3nf模式集的算法 v设r(u),主键w,若r上存在fd xz。且z是非主 属性,zx,x不是候选键,则wz就是一个传递依 赖。此时应把r分解成两个模式: r1(xz),主键是x; r2(y),其中y=u-z,主键w,外键x(参照r1); v利用外键和主键相匹配机制,r1和r2通过联接可以 重新得到r。 v如果r1和r2还不是3nf,则重复上述过程,一直到 数据库模式中每一个关系模式都是3nf为止。 算法4.3:转换为3nf的保持函数依赖的分解 对 r 中的函数依赖集f进行“极小化处理 ”,仍记为f。 找出不在f中出现的属性,把这样的属性构成一 个 关系模式。把这些属性从u中去掉,剩余的属性仍 记为u。 若有 x a f,且xa=u,则 r,算法终 止 否则, 每一组函数依赖fi所涉及的全部属性形成 一个属性集ui 。若ui uj (ij)就去掉ui 。 设有关系模式r(a,b,c,d,e), r的函数依赖集: f=ad,ed,db,bcd, cda 求r的候选关键字。 将r分解为3nf。 例: 解: 设u=(a,b,c,d,e),由于(ce) +=abcde r的唯一候选关键字是ce。 求出最小依赖集fm=ad,ed, db,bcd,cda 将r分解为3nf:=ad,de,bd,bcd, acd,化简得=de,bcd,acd 例: f=ad,ed,db,bcd,cda 设关系模式ru,f,u=c,t,h,r,s ,g,x,y,z,f=ct,csg,hrc, hsr,thr,cx,将r分解为3nf,且保 持函数依赖。 解:该函数依赖集已经是最小化的,则分解为 : =yz,ct,cx,csg,hrc,hsr, thr. 算法:转换为3nf的保持函数依赖的分解 算法4.4: 转换为3nf既有无损连接性又保 持函数依赖的分解 设 x 是 r 的码。 r 已由算法 分解为r1, r2, , rk, 令 rx 。 若有某个ui ,x ui ,将 rx 从 中 去掉。把这些属性从u中去掉,剩余的属性仍记为 u。 就是所求的分解。 【例】有关系模式ru,f,u=c,t,h, r,s,g,f=ct,csg,hrc,hsr ,thr,将r分解为3nf,且既具有无损连接 性又能保持函数依赖。 解:可以求得关系模式r的码为hs,它的一个 保持函数依赖的3nf为: =ct,csg,hrc,hsr,thr. hs是关键字, hs ,hs是hsr 的一个子集 = ct,csg,hrc,hsr,thr为满 足要求的分解。 算法4.5 转换为bcnf的无损连接的分解 令r 检查中各关系模式是否均属于bcnf。若是 , 则算法终止。 设中ri不属于bcnf,那么必有x a fi+ (ax),且x非ri的码。因此,xa是ui的 真子集。对ri进行分解:s1,s2,us1=xa, us2=ui-a,以代替ri返回第步。 【例】设有关系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论