数据库第六章.ppt
文本预览下载声明
6.4 模式的分解 把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的 只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义 关系模式分解的标准 三种关于模式分解是否等价的描述: ⒈ 分解具有无损连接性 ⒉ 分解要保持函数依赖 ⒊ 分解既要保持函数依赖,又要具有无损连接性 模式的分解(续) 定义6.16 关系模式RU,F的一个分解是指: ρ={ R1U1,F1,R2U2,F2,…,RnUn,Fn} U= ∪Ui,且不存在 Ui ? Uj,Fi 为 F在 Ui 上的投影 定义6.17 函数依赖集合{X→Y | X→Y ? F+∧XY ?Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影 i=1 n 模式的分解(续) 例:S-L(Sno, Sdept, Sloc) F={ Sno→Sdept, Sdept→Sloc, Sno→Sloc} S-L∈2NF 分解方法可以有多种: 1. S-L分解为三个关系模式:SN(Sno) SD(Sdept) SO(Sloc) 2. SL分解为下面二个关系模式:NL(Sno, Sloc) DL(Sdept, Sloc) 3. 将SL分解为下面二个关系模式: ND(Sno, Sdept) NL(Sno, Sloc) 具有无损连接性的模式分解 关系模式RU,F的一个分解 ρ={ R1U1,F1, R2U2,F2, …, RnUn,Fn}, 若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join),或称ρ为无损分解 具有无损连接性的分解保证不丢失信息 无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题 保持函数依赖的模式分解 若F+ = ( ∪ Fi )+ , 则关系模式RU,F的分解R1U1,F1,R2U2,F2,…,RnUn,Fn ,(其中U=U1∪U2∪…∪Un,且不存在Ui ? Uj,Fi为F在Ui上的投影),称为保持函数依赖(Preserve dependency) i=1 n 模式的分解(续) 如果一个分解具有无损连接性,则它能够保证不丢失信息 如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况 分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。 判定一个分解是无损连接分解的算法 对于RU, F的一个分解,ρ={R1U1, F1,R2U2, F2},该分解是无损连接分解==F+包含函数依赖U1∩U2-U1或U1∩U2-U2 对于RU, F的一个分解,ρ={R1U1, F1,R2U2, F2},该分解是无损连接分解==U1∩U2-U1-U2或U1∩U2-U2-U1 推论:如果X-Y是关系R上的函数依赖,X∩Y是空集,则R的分解R-Y和XY为无损分解。 分解为BCNF的算法 算法 6.5 转换为BCNF的无损连接分解 (1)令ρ={ RU, F } (2)检查ρ中各个关系模式是否均为BCNF。若是,则终止。 (3)若ρ中RiUi, Fi不是BCNF,则必有非平凡函数依赖X→A ∈Fi+ , A是单个属性,X非Ri的码。把Ui分解成Ui – A和XA. 返回(2) 注意到X∩A为空,因此(3)的分解为无损分解。 第六章 关系数据理论 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 *6.4 模式的分解 6.5 小结 第六章 关系数据理论 附:例题讲解 已知关系SCHEDULE的模式如下。这个关系的最高范式是什么?该关系存在哪一类数据异常?举例说明。 SCHEDULE( STUDENT_ID, CLASS_NO, STUDENT_NAME, STUDENT_MAJOR, CLASS_TIME, BUILDING_ROOM, INSTRUCTOR)。其主键为(STUDENT_ID, CLASS_NO),假设有下列函数依赖: STUDENT_ID→STUDENT_NAME STUDENT_ID →STUDENT_MAJOR CLASS_NO →CLASS_TIME CLASS_NO →CLASS_BUILDING CLASS_NO →INSTRUCTOR 解: 其
显示全部