1.33k likes | 1.43k Views
湖南工学院计算机系. 数据库原理 Principles of Database 第四章 关系数据库规范化理论. 学习目标. 了解关系规范化的作用; 掌握函数依赖及其公理系统; 掌握关系模式的规范化及其范式; 掌握关系模式的分解; 掌握关系模式规范化步骤。. 本章主要内容. 4.1 关系规范化的作用 4.2 函数依赖 4.3 * 函数依赖的公理系统 4.4 关系模式的规范化 4.5 * 多值依赖与第四范式 4.6 关系模式的分解 4.7 * 连接依赖与第五范式 4.8 关系模式规范化步骤. 4.1 关系规范化的作用. 一、 问题的提出
E N D
湖南工学院计算机系 数据库原理 Principles of Database 第四章 关系数据库规范化理论 数据库原理
学习目标 • 了解关系规范化的作用; • 掌握函数依赖及其公理系统; • 掌握关系模式的规范化及其范式; • 掌握关系模式的分解; • 掌握关系模式规范化步骤。 数据库原理
本章主要内容 4.1 关系规范化的作用 4.2 函数依赖 4.3 * 函数依赖的公理系统 4.4 关系模式的规范化 4.5 * 多值依赖与第四范式 4.6 关系模式的分解 4.7 * 连接依赖与第五范式 4.8 关系模式规范化步骤 数据库原理
4.1 关系规范化的作用 一、问题的提出 二、解决的方法 三、关系模式规范化的作用 数据库原理
一、问题的提出 例:描述学校教学管理的数据库: 学生的学号(Sno)、姓名(Sname)、性别(Ssex)、所在系名(Dname)、所学的课程名(Cname)、任课老师名(Tname)、成绩(Grade),关系描述为: JiaoXue(Sno,Sname,Ssex,Dname,Cname,Tname,Grade) 单一的关系模式 : JiaoXue <U、F> U ={ Sno,Sname,Ssex,Dname,Cname,Tname,Grade } 此关系的主键为:(Sno,Cname) 数据库原理
问题的提出(续) 学校教学管理数据库的语义: ⒈ 一个系有若干学生, 一个学生只属于一个系; ⒉ 一个系只有一名主任; ⒊ 一个学生可以选修多门课程, 每门课程有若干学生选修; ⒋ 每个学生所学的每门课程都有一个成绩。 5. 每门课程均由一个教师任教。 数据库原理
Sno Sname Ssex Dname Cname Tname Grade 0450301 张三恺 男 计算机系 高等数学 李刚 83 0450301 张三恺 男 计算机系 英语 林弗然 71 0450301 张三恺 男 计算机系 数字电路 周斌 92 0450301 张三恺 男 计算机系 数据结构 陈长树 86 0450302 王薇薇 女 计算机系 高等数学 李刚 79 0450302 王薇薇 女 计算机系 英语 林弗然 94 0450302 王薇薇 女 计算机系 数字电路 周斌 74 0450302 王薇薇 女 计算机系 数据结构 陈长树 68 … … … … … … … 0420131 陈杰西 男 园林系 高等数学 吴相舆 97 0420131 陈杰西 男 园林系 英语 林弗然 79 0420131 陈杰西 男 园林系 植物分类学 花裴基 93 0420131 陈杰西 男 园林系 素描 丰茹 88 教学管理数据库中的部分数据 数据库原理
关系模式JiaoXue<U, F>中存在的问题 1)、数据冗余(Data Redundancy) l每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。 l每一个课程名均对选修该门课程的学生重复存储。 l每一个教师都对其所教的学生重复存储。 数据库原理
Sno Sname Ssex Dname Cname Tname Grade 0450301 张三恺 男 计算机系 高等数学 李刚 83 0450301 张三恺 男 计算机系 英语 林弗然 71 0450301 张三恺 男 计算机系 数字电路 周斌 92 0450301 张三恺 男 计算机系 数据结构 陈长树 86 0450302 王薇薇 女 计算机系 高等数学 李刚 79 0450302 王薇薇 女 计算机系 英语 林弗然 94 0450302 王薇薇 女 计算机系 数字电路 周斌 74 0450302 王薇薇 女 计算机系 数据结构 陈长树 68 … … … … … … … 0420131 陈杰西 男 园林系 高等数学 吴相舆 97 0420131 陈杰西 男 园林系 英语 林弗然 79 0420131 陈杰西 男 园林系 植物分类学 花裴基 93 0420131 陈杰西 男 园林系 素描 丰茹 88 教学管理数据库中的数据冗余 存在大量的数据冗余 数据库原理
关系模式JiaoXue<U, F>中存在的问题(续) 2)、更新异常(Update Anomalies) l插入异常(Insert Anomalies):由于主键中元素的属性值不能取空值,如果新分配来一位教师或新成立一个系,则这位教师及新系名就无法插入;如果一位教师所开的课程无人选修或一门课程列入计划但目前不开课,也无法插入。 l修改异常(Modification Anomalies):如果更改一门课程的任课教师,则需要修改多个元组。如果仅部分修改,部分不修改,就会造成数据的不一致性。同样的情形,如果一个学生转系,则对应此学生的所有元组都必须修改,否则,也出现数据的不一致性。 l删除异常(Deletion Anomalies):如果某系的所有学生全部毕业,又没有在读及新生,当从表中删除毕业学生的选课信息时,则连同此系的信息将全部丢失。同样地,如果所有学生都退选一门课程,则该课程的相关信息也同样丢失了。 数据库原理
二、解决的方法 关系模式JiaoXue<U, F>中存在问题的结论: • JiaoXue关系模式不是一个好的模式。 • “好”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合适 的数据依赖。 数据库原理
关系模式JiaoXue<U, F>的一种分解方法 教学关系分解为三个关系模式来表达:学生基本信息Student(Sno,Sname,Ssex,Dname),课程信息Course(Cno,Cname,Tname),及学生成绩Grade(Sno,Cno,Grade)。 数据库原理
分解后的数据示例 数据库原理
分解后的关系模式的优点 • 1)、数据存储量减少。设有n个学生,每个学生平均选修m门课程,则表中学生信息就有4nm之多。经过改进后学生信息及成绩表中,学生的信息仅为3n+mn。学生信息的存储量减少了3(m-1)n。显然,学生选课数绝不会是1,因而,经过分解后数据量要少得多。 • 2)、更新方便。 • 插入问题部分解决:对一位教师所开的无人选修的课程可方便地在课程信息表中插入。但是,新分配来的教师、新成立的系或列入计划但目前不开课的课程,还是无法插入。要解决无法插入的问题,还可继续将系名与课程作分解来解决。 • 修改方便:原关系中对数据修改所造成的数据不一致性,在分解后得到了很好的解决,改进后,只需要修改一处。 • 删除问题也部分解决:当所有学生都退选一门课程时,删除退选的课程不会丢失该门课程的信息。值得注意的是,系的信息丢失问题依然存在,解决的方法还需继续进行分解。 数据库原理
分解后的关系模式说明 虽然改进后的模式部分地解决了不合理的关系模式所带来的问题,但同时,改进后的关系模式也会带来新的问题,如当查询某个系的学生成绩时,就需要将两个关系连接后进行查询,增加了查询时关系的连接开销,而关系的连接代价却又是很大的。 此外,必须说明的是,不是任何分解都是有效的。若将JiaoXue<U, F>分解为(Sno,Sname,Ssex,Dname,)、(Sno,Cno,Cname,Tname)及(Sname,Cno,Grade),不但解决不了实际问题,反面会带来更多的问题。 数据库原理
三、关系模式规范化的作用 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决: • 插入异常 • 删除异常 • 更新异常 • 数据冗余 数据库原理
4.2 函数依赖 4.2.1关系模式的简化表示 4.2.2函数依赖的基本概念 4.2.3码的函数依赖表示 4.2.4函数依赖和码的唯一性 数据库原理
4.2.1 关系模式的简化表示 关系模式由五部分组成,即它是一个五元组: R(U, D, DOM, F) R: 关系名 U: 组成该关系的属性名集合 D: 属性组U中属性所来自的域 DOM:属性向域的映象集合 F: 属性间数据的依赖关系集合 由于D和Dom对设计关系模式的作用不大,在讨论关系规范化理论时可以把它们简化掉,从而关系模式可以用三元组来表示为: R(U,F) 数据库原理
4.2.2函数依赖的基本概念 一、函数依赖的定义 二、平凡函数依赖与非平凡函数依赖 三、完全函数依赖与部分函数依赖 四、传递函数依赖 数据库原理
一、函数依赖的定义 定义4.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y”或 “Y函数依赖于X”,记作X→Y。 X称为这个函数依赖的决定属性集(Determinant)。 数据库原理
说明: 1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立 3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。 数据库原理
函数依赖(续) 例: Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有: Sno → Ssex, Sno → Sage , Sno → Sdept, Sno ←→ Sname, Sname → Ssex, Sname → Sage Sname → Sdept 但Ssex →Sage 若X→Y,并且Y→X, 则记为X←→Y。 若Y不函数依赖于X, 则记为X─→Y。 数据库原理
二、平凡函数依赖与非平凡函数依赖 定义4.2:在关系模式R(U)中,对于U的子集X和Y, 如果X→Y,但Y X,则称X→Y是非平凡的函数依赖 若X→Y,但Y X, 则称X→Y是平凡的函数依赖 例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) →Grade 平凡函数依赖: (Sno, Cno) →Sno (Sno, Cno) → Cno 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖 数据库原理
三、完全函数依赖与部分函数依赖 定义4.3 在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有 X’ Y, 则称Y完全函数依赖于X,记作X F Y。 若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X P Y。 例: 在关系SC(Sno, Cno, Grade)中, 由于:Sno →Grade,Cno → Grade, 因此:(Sno, Cno) F Grade 数据库原理
四、传递函数依赖 定义4.4 在关系模式R(U)中,如果X→Y,Y→Z,且Y X,Y→X,则称Z传递函数依赖于X。 注: 如果Y→X, 即X←→Y,则Z直接依赖于X。 例: 在关系Std(Sno, Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno 数据库原理
4.2.3码的函数依赖表示 定义4.6 设K为关系模式R<U,F>中的属性或属性组合。若K f U,则K称为R的一个侯选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。 • 主属性与非主属性 • ALL KEY 数据库原理
外部码 定义4.7 关系模式 R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码 • 主码又和外部码一起提供了表示关系间联系的手段。 数据库原理
4.2.4函数依赖和码的唯一性 • 码是由一个或多个属性组成的可惟一标识元组的最小属性组。码在关系中总是惟一的,即码函数决定关系中的其他属性。因此,一个关系,码值总是惟一的(如果码的值重复,则整个元组都会重复)。否则,违反实体完整性规则。 数据库原理
4.3 函数依赖的公理系统 在一个给定的关系模式中,如何找出其上的各种函数依赖。即通过已知的函数依赖集 F得到其他大量的未知函数依赖。 解决此问题需要根据函数依赖的各种性质及公理。 数据库原理
逻辑蕴含 对于满足一组函数依赖 F 的关系模式R <U,F>,其任何一个关系r,若函数依赖X→Y都成立, 则称 F逻辑蕴含X →Y 数据库原理
Armstrong公理系统 • 一套推理规则,是模式分解算法的理论基础 • 用途 • 求给定关系模式的码 • 从一组函数依赖求得蕴含的函数依赖 数据库原理
1. Armstrong公理系统 关系模式R <U,F >来说有以下的推理规则: • Al.自反律(Reflexivity): 若Y XU,则X →Y为F所蕴含。 • A2.增广律(Augmentation):若X→Y为F所蕴含,且ZU,则XZ→YZ为F所蕴含。 • A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。 注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F 数据库原理
定理4.l Armstrong推理规则是正确的 (l)自反律:若Y XU,则X →Y为F所蕴含 证: 设YXU 对R <U,F>的任一关系r中的任意两个元组t,s: 若t[X]=s[X],由于YX,有t[y]=s[y], 所以X→Y成立. 自反律得证 数据库原理
定理4.l(续) (2)增广律: 若X→Y为F所蕴含,且ZU,则XZ→YZ 为F所蕴含。 证:设X→Y为F所蕴含,且ZU。 设R<U,F>的任一关系r中任意的两个元组t,s; 若t[XZ]=s[XZ],则有t[X]=s[X]和t[Z]=s[Z]; 由X→Y,于是有t[Y]=s[Y],所以t[YZ]=s[YZ],所以XZ→YZ为F所蕴含. 增广律得证。 数据库原理
定理4.l (续) (3) 传递律:若X→Y及Y→Z为F所蕴含,则 X→Z为 F所蕴含。 证:设X→Y及Y→Z为F所蕴含。 对R<U,F>的任一关系 r中的任意两个元组 t,s。 若t[X]=s[X],由于X→Y,有 t[Y]=s[Y]; 再由Y→Z,有t[Z]=s[Z],所以X→Z为F所蕴含. 传递律得证。 数据库原理
2. 导出规则 1.根据A1,A2,A3这三条推理规则可以得到下面三条推理规则: • 合并规则:由X→Y,X→Z,有X→YZ。 (A2, A3) • 伪传递规则:由X→Y,WY→Z,有XW→Z。 (A2, A3) • 分解规则:由X→Y及 ZY,有X→Z。 (A1, A3) 数据库原理
导出规则 2.根据合并规则和分解规则,可得引理4.1 引理4.l X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)。 数据库原理
3. 函数依赖闭包 在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。 设F为属性集U上的一组函数依赖,XU,XF+ ={ A|X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包 数据库原理
F的闭包 F={X Y,Y Z}, F+计算是NP完全问题,X A1A2...An F+={ X φ, Y φ, Z φ, XY φ, XZ φ, YZ φ, XYZ φ, X X, Y Y, Z Z, XY X, XZ X, YZ Y, XYZ X, X Y, Y Z , XY Y, XZ Y, YZ Z, XYZ Y, X Z, Y YZ, XY Z, XZ Z, YZ YZ, XYZ Z, X XY, XY XY, XZ XY, XYZ XY, X XZ, XY YZ, XZ XZ, XYZ YZ X YZ, XY XZ, XZ XY, XYZ XZ, X ZYZ, XY XYZ, XZ XYZ, XYZ XYZ } 数据库原理
关于闭包的引理 • 引理4.2 设F为属性集U上的一组函数依赖,X,YU,X→Y能由F 根据Armstrong公理导出的充分必要条件是YXF+ • 用途 将判定X→Y是否能由F根据Armstrong公理导出的问题, 就转化为求出XF+,判定Y是否为XF+的子集的问题 数据库原理
求闭包的算法 算法4.l 求属性集X(XU)关于U上的函数依 赖集F 的闭包XF+ 输入:X,F 输出:XF+ 步骤: (1)令X(0)=X,i=0 (2)求B,这里B = { A |(V)(W)(V→WF ∧V X(i)∧AW)}; (3)X(i+1)=B∪X(i) 数据库原理
算法4.l (4)判断X(i+1)= X(i)吗? (5)若相等或X(i)=U , 则X(i)就是XF+ , 算法终止。 (6)若否,则 i=i+l,返回第(2)步。 对于算法4.l, 令ai =|X(i)|,{ai}形成一个步长大 于1的严格递增的序列,序列的上界是 | U |,因 此该算法最多 |U| - |X| 次循环就会终止。 数据库原理
函数依赖闭包计算实例 [例1] 已知关系模式R<U,F>,其中 U={A,B,C,D,E}; F={AB→C,B→D,C→E,EC→B,AC→B}。 求(AB)F+。 解 设X(0)=AB; (1)计算X(1): 逐一的扫描F集合中各个函数依赖, 找左部为A,B或AB的函数依赖。得到两个: AB→C,B→D。 于是X(1)=AB∪CD=ABCD。 数据库原理
函数依赖闭包 (2)因为X(0)≠ X(1) ,所以再找出左部为ABCD子集的那些函数依赖,又得到AB→C,B→D, C→E,AC→B, 于是X(2)=X(1)∪BCDE=ABCDE。 (3)因为X(2)=U,算法终止 所以(AB)F+ =ABCDE。 数据库原理
4. Armstrong公理系统的有效性与完备性 • 建立公理系统体系目的:从已知的f推导出未知的f • 明确:1.公理系统推导出来的 f 正确? 2. F+中的每一个 f 都能推导出来? / f 不能由F 导出, f ∈ F+ F F+ f 数据库原理
4. Armstrong公理系统的有效性与完备性 • 有效性:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中 /* Armstrong正确 • 完备性:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来 /* Armstrong公理够用,完全 完备性:所有不能用Armstrong公理推导出来f, 都不为真 若f 不能用Armstrong公理推导出来,f∈ F+ 数据库原理
有效性与完备性的证明 证明: 1. 有效性 可由定理4.l得证 2. 完备性 只需证明逆否命题:若函数依赖X→Y不能由F从Armstrong公理导出,那么它必然不为F所蕴含 分三步证明: 数据库原理
有效性与完备性的证明 (1)引理: 若V→W成立,且VXF+,则WXF+ 证 因为 VXF+ ,所以有X→V成立; 因为X →V,V→W,于是X→W成立 所以WXF+ (2)/* 若f 不能用Armstrong公理推导出来,f∈ F+ /* 若存在r, F+中的全部函数依赖在 r上成立。 /* 而不能用Armstrong公理推导出来的f , 在r上不成立。 构造一张二维表r,它由下列两个元组构成,可以证明r必是R(U,F)的一个关系,即F+中的全部函数依赖在 r上成立。 数据库原理
Armstrong公理系统的有效性与完备性(续) XF+U-XF+ 11......1 00......0 11......1 11......1 若r不是R<U,F> 的关系,则必由于F中有函数依赖V→W在r上不成立所致。由r的构成可知,V必定是XF+ 的子集,而W不是XF+ 的子集,可是由第(1)步,WXF+,矛盾。所以r必是R<U,F>的一个关系。 数据库原理
Armstrong公理系统的有效性与完备性(续) (3) )/* 若f 不能用Armstrong公理推导出来,f∈ F+ /* 而不能用Armstrong公理推导出来的 f , 在r上不成立。 • 若X→Y 不能由F从Armstrong公理导出,则Y 不是 XF+ 的子集。(引理4.2) • 因此必有Y 的子集Y’满足 Y’ U-XF+, 则X→Y在 r 中不成立,即X→Y必不为 R<U,F> 蕴含 /* 因为F+中的全部函数依赖在 r上成立。 数据库原理