Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 关系数据库规范化理论 教学目标:通过本章学习,了解不规范的关系模式存在的问题;理解函数依赖及关系规范化的相关概念,熟悉关系模式的形式化定义;掌握第一范式(1NF)、第二范式(2NF)、第三范式(3NF)及BCNF的定义及相关术语的含义;了解多值依赖及第四范式(4NF)的定义;理解函数依赖公理的内容,掌握属性闭包的定义及求解算法,能够正确判断关系模式的候选码及规范化程度;了解最小函数依赖集的定义及算法,了解对模式分解后无损连接性和函数依赖保持性的判断。

Similar presentations


Presentation on theme: "第6章 关系数据库规范化理论 教学目标:通过本章学习,了解不规范的关系模式存在的问题;理解函数依赖及关系规范化的相关概念,熟悉关系模式的形式化定义;掌握第一范式(1NF)、第二范式(2NF)、第三范式(3NF)及BCNF的定义及相关术语的含义;了解多值依赖及第四范式(4NF)的定义;理解函数依赖公理的内容,掌握属性闭包的定义及求解算法,能够正确判断关系模式的候选码及规范化程度;了解最小函数依赖集的定义及算法,了解对模式分解后无损连接性和函数依赖保持性的判断。"— Presentation transcript:

1 第6章 关系数据库规范化理论 教学目标:通过本章学习,了解不规范的关系模式存在的问题;理解函数依赖及关系规范化的相关概念,熟悉关系模式的形式化定义;掌握第一范式(1NF)、第二范式(2NF)、第三范式(3NF)及BCNF的定义及相关术语的含义;了解多值依赖及第四范式(4NF)的定义;理解函数依赖公理的内容,掌握属性闭包的定义及求解算法,能够正确判断关系模式的候选码及规范化程度;了解最小函数依赖集的定义及算法,了解对模式分解后无损连接性和函数依赖保持性的判断。

2 第6章 关系数据库规范化理论 6.1 问题的提出 6.2 关系模式的规范化 6.3 多值依赖及关系的第四范式 6.4 关系规范化小结
6.1 问题的提出 6.2 关系模式的规范化 6.3 多值依赖及关系的第四范式 6.4 关系规范化小结 6.5 函数依赖公理和模式分解 6.6 关系模式设计实例 6.7 本章小结

3 6.1 问题的提出 1 存在的问题 2 解决方法 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结
5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 6.1 问题的提出 1 存在的问题 2 解决方法

4 1. 存在的问题 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 存在的问题 下面以一个实例说明如果一个关系没有经过规范化可能会出现的问题。 例如,要设计一个教学管理数据库,希望从该数据库中得到学生学号、姓名、年龄、性别、系别、系主任姓名、学生学习的课程名和该课程的成绩信息。若将此信息要求设计为一个关系,则关系模式为: S(sno,sname,sage,ssex,sdept,mname,cname,score)

5 1. 存在的问题 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 存在的问题 该关系模式中各属性之间的关系为: 一个系有若干个学生,但一个学生只属于一个系; 一个系只能有一名系主任,但一个系主任可以同时兼几个系的系主任; 一个学生可以选修多门课程,每门课程可被若干个学生选修; 每个学生学习的每门课程都有一个成绩。 可以看出,此关系模式的码为(sno,cname)。

6 1. 存在的问题 关系模式S中存在的问题: 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结
解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 存在的问题 关系模式S中存在的问题: 1.数据冗余太大 浪费大量的存储空间。 例:每个系名和系主任的名字存储的次数等于该系学生人数乘以每个学生选修的课程门数,系名和系主任数据重复量太大。 2.插入异常 该插的数据插不进去。 例:一个新系没有招生时,或系里有学生但没有选修课程,系名和系主任名无法插入到数据库中。因为在这个关系模式中码是(sno,cname),这时没有学生而使得学号无值,或学生没有选课而使得课程名无值。但在一个关系中,码属性不能为空值,因此关系数据库无法操作,导致插入异常。

7 1. 存在的问题 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 存在的问题 3.删除异常 不该删除的数据不得不删。 例:当某系的学生全部毕业而又没有招新生时,删除学生信息的同时,系及系主任名的信息随之删除,但这个系依然存在,而在数据库中却无法找到该系的信息,即出现了删除异常。 4.更新异常 数据冗余 ,更新数据时,维护数据完整性代价大。 例:若某系换系主任,数据库中该系的学生记录应全部修改。如果稍有不慎,某些记录漏改了,则造成数据的不一致,即出现了更新异常。

8 1. 存在的问题 结论: 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 存在的问题 结论: 为什么会发生插入异常和删除异常?原因是该关系模式中属性与属性之间存在不好的数据依赖。一个“好”的关系模式应当不会发生插入和删除异常,冗余度要尽可能得少。

9 2. 解决方法 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
存在的问题 解决方法 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 解决方法 对于存在问题的关系模式,可以通过模式分解的方法使之规范化。 例如将上述关系模式分解成3个关系模式: S(sno,sname,sage,ssex,sdept) SC(sno,cnname,score) DEPT(sdept,mname) 这样分解后,3个关系模式都不会发生插入异常、删除异常的问题,数据的冗余也得到了控制,数据的更新也变得简单。 “分解”是解决冗余的主要方法,也是规范化的一条原则,“关系模式有冗余问题,就分解它”。

10 6.2 关系模式的规范化 1 基本概念 6 第一范式 2 函数依赖 7 第二范式 3 关系模式的形式化定义 8 第三范式 4 码
1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 6.2 关系模式的规范化 1 基本概念 2 函数依赖 3 关系模式的形式化定义 4 码 5 范式 6 第一范式 7 第二范式 8 第三范式 9 BCNF

11 1. 基本概念 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 基本概念 规范化:指用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程。 关系模式对数据的要求: 关系模式必须满足一定的完整性约束条件以达到现实世界对数据的要求。完整性约束条件主要包括以下两个方面。 (1) 对属性取值范围的限定。 (2) 属性值间的相互联系(主要体现在值的相等与否),这种联系称为数据依赖

12 1. 基本概念 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 基本概念 属性间的联系: 属性间的联系可分为3类。 1) 一对一联系(1∶1) 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一值与之对应;反之亦然,则称X、Y两属性间是一对一联系。 例如,在关系模式S中,如果学生无重名,则属性sno和sname之间是一对一联系,一个学号唯一地决定一个姓名,一个姓名也唯一地决定一个学号。 2) 一对多联系(1∶n) 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,而Y中的一个值却可以和X中的n个值(n≥0)相对应,则称Y对X是一对多联系。 在学生关系模式S中,属性sdept和sno之间是一对多联系,即一个系对应多个学号(如计算机系可对应 、 等),但一个学号却只对应一个系(如 只能对应计算机系)。同样,mname和sno、sno和score之间都是一对多联系。

13 1. 基本概念 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 基本概念 属性间的联系: 3) 多对多联系(m∶n) 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中有m(m≥0)个值与之对应,而Y中的一个值也可以和X中的n个值(n≥0)相对应,则称Y对X是多对多联系。 在关系模式S中,cname和score两属性间是多对多联系。一门课程对应多个成绩,而一个成绩也可以在多门课程中出现。Sno和cname、sno和score之间也是多对多联系。 上述属性间的3种联系实际上是属性值之间相互依赖又相互制约的反映,称为属性间的数据依赖。

14 1. 基本概念 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 1. 基本概念 数据依赖: 数据依赖是指通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质。 数据依赖共有3种: A、函数依赖(Functional Dependency,FD) B、多值依赖(MultiValued Dependency,MVD) C、连接依赖(Join Dependency,JD) 其中最重要的是函数依赖和多值依赖。

15 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 在数据依赖中,函数依赖是最基本、最重要的一种依赖,它是属性之间的一种联系,假设给定一个属性的值,就可以唯一确定(查找到)另一个属性的值。例如,知道某一学生的学号,可以唯一地查询到其对应的系别,如果这种情况成立,就可以说系别函数依赖于学号。这种唯一性并非指只有一个记录,而是指任何记录。 函数依赖的定义: 设有关系模式R(U),X和Y均为U={A1,A2,…,An}的子集,r是R的任一具体关系,r中不可能存在两个元组在X的属性值相等,而在Y上的属性值不等(也就是说,如果对于r中的任意两个元组t和s,只要有t[X]=s[X],就有t[Y]=s[Y]),则称X函数决定Y,或称Y函数依赖于X,记作X→Y,其中X叫做决定因素(Determinant),Y叫做依赖因素(Dependent)。

16 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 术语与记号: (1) X→Y,但Y X,则称X→Y是非平凡的函数依赖。 (2) X→Y,但Y X,则称X→Y是平凡的函数依赖。因为平凡的函数依赖总是成立的,所以若不特别声明,本书后面提到的函数依赖,都不包含平凡的函数依赖。 (3) 若X→Y,Y→X,则称X Y。 (4) 若Y不函数依赖于X,则记作X Y。

17 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 完全函数依赖与部分函数依赖: 在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X' Y,则称Y对X完全函数依赖,记作X Y。 若X→Y,如果存在X的某一真子集X'(X' X),使X'→Y,则称Y对X部分函数依赖,记作X Y。 传递函数依赖: 在关系模式R(U)中,X、Y、Z是R的3个不同的属性或属性组,如果X→Y (Y X,Y不是X的子集),且Y X,Y→Z,则称Z对X传递函数依赖,记作X Y。 加上条件Y X,是因为如果Y→X,则X Y,实际上是X→Z,是直接函数依赖而不是传递函数依赖。

18 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 属性间联系决定函数依赖: 前面讨论的属性间的3种联系,并不是每种联系中都存在函数依赖。 (1) 1∶1联系:如果两属性集X、Y之间是1:1联系,则存在函数依赖:X Y。如学生关系模式S中,如果不允许学生重名,则有:sno sname。 (2) 1∶n联系:如果两属性集X、Y之间是n∶1联系,则存在函数依赖:X→Y,即多方决定一方。如sno→sdept,sno→sage、sno→mname等。 (3) m∶n联系:如果两属性集X、Y之间是m∶n联系,则不存在函数依赖。如sno和cname之间、cname和score之间就是如此。

19 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 例题: 【例6-1】 设有关系模式S(sno,sname,sage,ssex,sdept,mname,cname,score),判断以下函数依赖的对错。 (1) sno→sname,sno→ssex,(sno,cname)→score。 (2) cname→sno,sdept→cname,sno→cname。 在(1)中,sno和sname之间存在一对一或一对多的联系,sno和ssex、(sno,cname)和score之间存在一对多联系,所以这些函数依赖是存在的。 在(2)中,因为sno和cname、sdept和cname之间都是多对多联系,因此它们之间是不存在函数依赖的。

20 2. 函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 2. 函数依赖 例题: 【例6-2】 设有关系模式:学生课程(学号,姓名,课程号,课程名称,成绩,教师,教师年龄),在该关系模式中,成绩要由学号和课程号共同确定,教师决定教师年龄。该关系模式中包含的函数依赖有哪些? 此关系模式中包含了以下函数依赖关系: 学号→姓名(每个学号只能有一个学生姓名与之对应), 课程号→课程名称(每个课程号只能对应一个课程名称), (学号,课程号)→成绩(每个学生学习一门课只能有一个成绩), 教师→教师年龄(每一个教师只能有一个年龄)。

21 3. 关系模式的形式化定义 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 3. 关系模式的形式化定义 关系模式的完整表示是一个五元组: R(U,D,Dom,F) 其中: R:关系名,代表一个关系模式; U:关系模式R的属性集合(属性组); D:属性集合U的数据域; Dom:属性到域的映射关系; F:属性集合U上的一组数据依赖的集合。 由于D和Dom对设计关系模式的作用不大,在讨论关系规范化理论时可以把它们简化为三元组: R(U,F) 从上式可以看出,数据依赖是关系模式的重要因素。

22 4. 码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 4. 码 设K是关系模式R(U,F)中的属性或属性集合,K'是K的任一真子集。若K→U,而不存在K'→U(K' U),则K为R的候选码(Candidate Key),简称码。 (1) 若候选码多于一个,则选取其中的一个为主码(Primary Key)。 (2) 包含在任一候选码中的属性,称为主属性(Prime Attribute)或码属性。 (3) 不包含在任何候选码中的属性称为非主属性(Nonprime Attribute)或非码属性(Non-key Attribute)。 (4) 在关系模式中,最简单的情况,单个属性是码,称为单码(Single Key);最极端的情况,整个属性集合是码,称为全码(All-Key)。

23 4. 码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 4. 码 例如: 在关系模式S(sno,sdept,sage)中,sno是单码。 在关系模式SC(sno,cno,score)中,属性组合(sno,cno)是码。 在关系模式“签约(演员名,制片公司名,电影名)”中,由于一个制片公司可以为一部电影和多个演员签约,一个演员可以和多个制片公司签约饰演多部电影中的角色,一部电影可由不同的制片公司制作,所以此关系模式的码为(演员名,制片公司名,电影名),即为全码。

24 4. 码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 4. 码 关系模式R(U,F)中属性或属性集合X并非R的码,但X是另一个关系模式的码,则称X是R的外码(Foreign key),也称外在码。 如在SC(sno,cno,score)中,sno不是码,但sno是关系模式S(sno,sdept,sage)的码,则sno是关系模式SC的外码。

25 5. 范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 5. 范式 非规范化的关系: 当一个关系中存在还可以再分的数据项时,这个关系就是非规范化的关系。非规范化的关系存在两种情况:第一种是关系中具有组合数据项;第二种是关系中具有多值数据项。实例见表1和表2。 表1 具有组合数据项的非规范化关系 职 工 号 姓 名 工 资 基本工资 职务工资 工龄工资 1002 张三 1000 800 200 表2 具有多值数据项的非规范化关系 职 工 号 姓 名 职 称 系 名 系 办 地 址 学 历 毕业年份 001 张三 教授 计算机 1305 大学 研究生 1963 1982

26 5. 范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 5. 范式 规范化的关系: 当一个关系中的所有分量都是不可再分的数据项时,该关系是规范化的,即当关系中不存在组合数据项和多值数据项,只存在不可分的数据项时,这个关系是规范化的。 范式: 利用规范化理论,使关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式称为范式。关系按其规范化程度从低到高可分为5级范式(Normal Form),分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。 规范化: 一个低一级范式的关系模式,通过模式分解可以转换成若干个高一级范式的关系模式的集合,这个过程称作规范化。

27 6. 第一范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 6. 第一范式 定义: 如果关系模式R中不包含多值属性(每个属性必须是不可分的数据项),则R满足第一范式(First Normal Form),记作R∈1NF。 1NF是规范化的最低要求,是关系模式要遵循的最基本的范式,不满足1NF的关系是非规范化的关系。 注意: 关系模式如果仅仅满足1NF是不够的。尽管学生关系模式S满足1NF,但它仍然会出现插入异常、删除异常、更新异常及数据冗余等问题,只有对关系模式继续规范化,使之满足更高的范式,才能得到高性能的关系模式。

28 7. 第二范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 7. 第二范式 定义: 如果关系模式R(U,F) 1NF,且R中的每个非主属性完全函数依赖于R的某个候选码,则R满足第二范式(Second Normal Form),记作R∈2NF。 例题: 【例6-3】 关系模式S-L-C(U,F) U={SNO,SDEPT,SLOC,CNO,SCORE},其中,SNO是学号,SDEPT是学生所在系,SLOC是学生的宿舍(住处),CNO是课程号,SCORE是成绩。 该关系模式的码=(SNO,CNO) 函数依赖集F={(SNO,CNO)→SCORE,SNO→SDEPT,SNO→SLOC,SDEPT→SLOC} 非主属性={SDEPT,SLOC,SCORE} 非主属性对码的部分函数依赖={(SNO,CNO) SDEPT,(SNO,CNO) SLOC} 显然,该关系模式不满足2NF。

29 7. 第二范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 7. 第二范式 不满足2NF的关系模式,会产生以下几个问题: (1) 插入异常。插入一个新学生,若该生没有选课,则CNO为空,但码不能为空,所以不能插入。 (2) 删除异常。某学生只选择了一门课,现在该门课要删除,则该学生的基本信息也将删除。 (3) 更新异常。某个学生要从一个系转到另一个系,若该生选修了K门课,必须修改的该学生相关的字段值为2K个(系别、住处),一旦有遗漏,将破坏数据的一致性。 造成以上问题的原因是SDEPT、SLOC部分函数依赖于码。 解决办法: 用投影分解把关系模式分解为多个关系模式。 投影分解是把非主属性及决定因素分解出来构成新的关系,决定因素在原关系中保持,函数依赖关系相应分开转化(将关系模式中部分依赖的属性去掉,将部分依赖的属性单独组成一个新的模式)。

30 7. 第二范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 7. 第二范式 例6-3中关系模式的分解结果: S-C(SNO,CNO,SCORE) 码={(SNO,CNO)} F={(SNO,CNO)→SCORE } S-L(SNO,SDEPT,SLOC) 码={SNO} F={SNO→SDEPT,SNO→SLOG,SDEPT→SLOG} 经过模式分解,两个关系模式中的非主属性对码都是完全函数依赖,所以它们都满足2NF。

31 8. 第三范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 8. 第三范式 定义: 如果关系模式R(U,F) 2NF,且每个非主属性都不传递函数依赖于任何候选码,则R满足第三范式(Third Normal Form),记作R∈3NF。 例题: 在例6-3中,关系S-L(SNO,SDEPT,SLOC),SNO→SDEPT,SDEPT→SLOC,SLOC传递函数依赖于码SNO,所以S-L不满足3NF。 解决的方法同样是将S-L进行投影分解: S-D(SNO,SDEPT) 码={SNO} F={SNO→SDEPT } D-L(SDEPT,SLOC)码={SDEPT} F={SDEPT→SLOC} 分解后的关系模式中不再存在传递函数依赖,即关系模式S-D和D-L都满足3NF。

32 8. 第三范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 8. 第三范式 总结: 3NF是一个可用的关系模式应满足的最低范式,也就是说,一个关系模式如果不满足3NF,实际上它是不能使用的。

33 9. BCNF 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 9. BCNF 定义: 关系模式R(U,F) 1NF,若X→Y且Y X时,X必含有码,则R(U,F)∈BCNF。 也就是说,关系模式R(U,F)中,若每个决定因素都包含码,则R(U,F)∈BCNF。 由BCNF的定义可以得出结论,一个满足BCNF的关系模式有: (1) 所有非主属性对每一个码都是完全函数依赖。 (2) 所有的主属性对每一个不包含它的码,也是完全函数依赖。 (3) 没有任何属性完全函数依赖于非码的任何一组属性。

34 9. BCNF 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 9. BCNF 例题: 【例6-4】 设关系模式SC(U,F),其中,U={SNO,CNO,SCORE} F={(SNO,CNO)→SCORE,(CNO,SCORE)→SNO} SC的候选码为(SNO,CNO)和(CNO,SCORE),决定因素中都包含码,没有属性对码传递依赖或部分依赖,所以SC∈BCNF。 【例6-5】 设关系模式STJ(S,T,J),其中,S:学生,T:教师,J:课程。每位教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一位固定的教师。 由语义可得到如下的函数依赖: (S,J)→T,(S,T)→J,T→J 该关系模式的候选码为(S,J),(S,T)。 因为该关系模式中的所有属性都是主属性,所以STJ∈3NF,但STJ BCNF,因为T是决定因素,但T不包含码。

35 9. BCNF 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
基本概念 函数依赖 关系模式的形式化定义 范式 第一范式 第二范式 第三范式 BCNF 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 9. BCNF BCNF和3NF的比较: (1) BCNF不仅强调其他属性对码的完全的直接的依赖,而且强调主属性对码的完全的直接的依赖,它包括3NF,即R BCNF,则R一定满足3NF。 如果一个实体集中的全部关系模式都满足BCNF,则实体集在函数依赖范畴内已实现了彻底的分离,消除了插入和删除异常问题。 (2) 3NF只强调非主属性对码的完全直接依赖,这样就可能出现主属性对码的部分依赖和传递依赖。

36 *6.3 多值依赖及关系的第四范式 1 多值依赖 2 第四范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式
4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 *6.3 多值依赖及关系的第四范式 1 多值依赖 2 第四范式

37 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 满足BCNF的关系实例: 课程(Course) 教师(Teacher) 班级(Class) 数据结构 王小平 06级01班 06级02班 06级03班 陈冬 张利英 数据库原理及应用 李强 05级01班 05级02班 张丽 计算机网络技术 刘东意 王定坤

38 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 满足BCNF的关系模式存在的弊端: (1) 数据冗余十分明显。课程、教师和班级多次存储。 (2) 插入异常。若增加一个讲授“数据结构”的教师“张平”,由于有3个班级开设这门课,所以需要添加3个元组,即(数据结构,张平,06级01班)、(数据结构,张平,06级02班)和(数据结构,张平,06级03班)。 (3) 删除异常。若要删除某一个班级,则与该班级有关的元组将全部被删除。

39 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 产生以上弊端的原因主要有以下两个方面: (1) 对于关系CTC中的Course值,有多个Teacher值与之对应,同样,Course和Class也存在着类似的联系。 (2) 对于关系CTC中的一个确定的Course值,只与其所对应的一组Teacher值和Class值相关。如对于“数据结构”课程,“王小平”给“06级01班”上课,“陈平”给“06级02班”上课,“张利英”给“06级03”班上课,关系CTC中其他与“数据结构”相关的元组中的Teacher与Class毫无关系。 从以上两个方面可以看出,Course与Teacher之间的联系显然不是函数依赖,在此称之为多值依赖(Multi Valued Dependency,MVD)。

40 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 定义: 设有关系模式R(U),U是属性全集,X、Y、Z是U的子集,且Z=U-X-Y。如果对R(U)的任一关系r,给定一对(X,Z)值,都有一组Y值与之对应,这组Y值仅仅决定于X值而于Z值无关,则称Y多值依赖于X,或X多值决定Y,记作X→→Y。 多值依赖的形式化定义为: 设有关系模式R(U),X,Y,Z是U的子集,其中Z=U-X-Y,r是R的任意一个关系,t,s是r的任意两个元组。如果t[X]=s[X],必有r的两个元组u、v存在,使得: (1) u[X]=v[X]=t[X]=s[X], (2) u[Y]=t[Y]且u[Z]=s[Z], (3) v[Y]=s[Y]且v[Z]=t[Z], 则称X多值决定Y,或Y多值依赖于X。

41 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 例题: 现有关系SDC(SDEPT,SNO,CNAME),见表6-8。其中,SDEPT是系别,SNO是学号,CNAME是该系开设的课程。 SDEPT SNO CNAME 计算机工程系 …… 微机原理 数据库原理及应用 信息工程系 电子商务 市场营销 给出一对值(计算机工程系,微机原理),有一组学号与之对应,学号仅仅决定于系别,而与课程无关,所以SDEPT→→SNO。同理,SDEPT→→CNAME。

42 1. 多值依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 1. 多值依赖 平凡的多值依赖与非平凡的多值依赖: 对于属性集U上的多值依赖X→→Y,如果Y Z或者X∪Y=U(即Z=Φ),则称X→→Y为平凡的多值依赖,否则X→→Y为非平凡的多值依赖。 多值依赖的性质: (1) 对称性。若X→→Y,则X→→Z,其中,Z=U-X-Y。 (2) 传递性。若X→→Y,Y→→Z,则X→→Z-Y。 (3) 合并性。若X→→Y,X→→Z,则X→→YZ(Y与Z的并集)。 (4) 分解性。若X→→Y,X→→Z,则X→→Y∩Z(Y与Z的交集),X→→Y-Z,X→→Z-Y均成立。 函数依赖可以看成是多值依赖的特例,即函数依赖的关系一定是多值依赖;多值依赖是函数依赖的概括,即存在多值依赖的关系,不一定存在函数依赖。

43 2. 第四范式 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
7本章小结 2. 第四范式 定义: 如果关系模式R∈1NF,对于R的每个非平凡的多值依赖X→→Y(Y不包含在X中),X含有码,则R满足第四范式(Forth Norwal Form),记作R∈4NF。 显然,如果R∈4NF,则必有R∈BCNF。反之则不然,因为所有非平凡的多值依赖实际上就是函数依赖。 例题: 【例6-7】 在SDC(SDEPT,SNO,CNAME)中,该关系的码为全码,SDEPT→→SNO,SDEPT→→CNAME,而SDEPT只是码的一部分,所以该关系模式不满足4NF,将其进行模式分解,得到两个关系模式:SD(SDEPT,SNO) DC(SDEPT,CNAME) 在这两个关系模式中,多值依赖均不是平凡的多值依赖,即关系模式中存在非平凡的多值依赖,因此它们满足4NF。

44 6.4 关系规范化小结 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 7本章小结 6.4 关系规范化小结 在关系数据库中,对关系模式的基本要求是满足1NF,在此基础上,为了消除关系模式中存在的插入异常、删除异常、更新异常和数据冗余等问题,人们寻求解决这些问题的方法,这就是规范化的目的。 规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”。让一个关系描述一个概念、一个实体或实体间的一种联系,若多于一个概念就把它“分离”出去,因此所谓规范化实质上是概念的单一化。 关系模式的规范化过程是通过对关系模式的分解来实现的,把低一级的关系模式分解为若干个高一级的关系模式,对关系模式进一步规范化,使之逐步达到2NF、3NF、4NF和5NF。各种规范化之间的关系为: 5NF 4NF BCNF 3NF 2NF 1NF。

45 6.4 关系规范化小结 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 7本章小结 6.4 关系规范化小结 关系规范化的递进过程

46 6.4 关系规范化小结 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 7本章小结 6.4 关系规范化小结 一般来说,规范化程度越高,分解就越细,所得数据库的数据冗余就越小,且更新异常也可相对减少。但是,如果某一关系经过数据大量加载后主要用于检索,那么,即使它是一个低范式的关系,也不要去追求高范式而将其不断进行分解,因为在检索时,会通过多个关系的自然连接才能获得全部信息,从而降低了数据的检索效率。数据库设计满足的范式越高,其数据处理的开销也越大。 因此,规范化的基本原则是:由低到高,逐步规范,权衡利弊,适可而止。通常,以满足第三范式为基本要求。

47 6.4 关系规范化小结 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 7本章小结 6.4 关系规范化小结 把一个非规范化的数据结构转换成第三范式,一般经过以下几步。 (1) 把该结构分解成若干个属于第一范式的关系。 (2) 对那些存在组合码、且有非主属性部分函数依赖的关系必须继续分解,使所得关系都属于第二范式。 (3) 若关系中有非主属性传递依赖于码,则继续分解之,使得关系都属于第三范式。 事实上,规范化理论是在与SQL编程语言结合时产生的。关系理论的基本原则指出,数据库被规范化后,其中的任何数据子集都可以用基本的SQL操作获取,这就是规范化的重要性所在。数据库不进行规范化,就必须通过编写大量复杂代码来查询数据。规范化规则在关系建模和关系对象建模中同等重要。

48 *6.5 函数依赖公理和模式分解 1 函数依赖公理 2 属性闭包及在计算 3 求解关系模式的候选码 4 函数依赖集的最小依赖集 5 模式分解
1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 *6.5 函数依赖公理和模式分解 1 函数依赖公理 2 属性闭包及在计算 3 求解关系模式的候选码 4 函数依赖集的最小依赖集 5 模式分解

49 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 函数依赖的逻辑蕴涵: 当讨论函数依赖时,经常需要从一些已知的函数依赖中去判断另外一些函数依赖是否成立。例如,如果A→B和B→C在某个关系中成立,记作F={A→B,B→C},那么A→C在该关系中是否成立的问题就称为逻辑蕴涵问题。 设F是关系模式R(U,F)的一个函数依赖集,X,Y是U的子集,如果从F中的函数依赖能够推导出X→Y,则称F逻辑蕴涵X→Y,或称X→Y是F的逻辑蕴涵,记作F|=X→Y。 所有被F逻辑蕴涵的函数依赖集称为F的闭包(Closure),记作F+。 一般情况下,F F+,如果F=F+,则称F是函数依赖的完备集。 规定:若X为U的子集,则X→Φ属于F+。

50 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 计算函数依赖集F的闭包F+是一件很麻烦的事,即使F不大,F+也可能很大。例如,R(X,Y,Z),它的函数依赖集F={X→Y,Y→Z},则F的闭包如下: F+={X→Φ, XY→Φ, XZ→Φ, XYZ→Φ, Y→Φ,Z→Φ, X→X, XY→X, XZ→X, XYZ→X, Y→Y, Z→Z, X→Y, XY→Y, XZ→Y, XYZ→Y, Y→Z, Φ→Φ, X→Z, XY→Z, XZ→Z, XYZ→Z, Y→YZ, X→XY, XY→XY, XZ→XY, XYX→XY, YZ→Φ, X→XZ, XY→XZ, XZ→XZ, XYZ→XZ, YZ→Y, X→YZ, XY→YZ, XZ→YZ, XYZ→YZ, YZ→Z, X→XYZ,XY→XYZ,XZ→XYZ,XYZ→XYZ,YZ→YZ} 这些函数依赖就是利用函数依赖公理进行推导的。

51 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 函数依赖公理系统: Armstrong公理系统 设有关系模式R(U,F),X,Y,Z,W U(X,Y,Z,W是U的子集),则对R(U,F)有: (1) A1(自反律):若Y X,则X→Y。 (2) A2(增广律):若X→Y,则XZ→YZ。(XZ表示X∪Z) (3) A3(传递律):若X→Y,Y→Z,则X→Z。 所有被F逻辑蕴涵的函数依赖集称为F的闭包(Closure),记作F+。 一般情况下,F F+,如果F=F+,则称F是函数依赖的完备集。 规定:若X为U的子集,则X→Φ属于F+。

52 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 证明:【定理6.1】Armstrong公理是正确的。 设t1、t2是关系R中的任意两个元组。 A1:如果t1[X]=t2[X],则因为Y X,所以有t1[Y]=t2[Y],故X→Y成立。 A2:如果t1[XZ]=t2[XZ],则有t1[X]=t2[X]、t1[Z]=t2[Z]。 又已知X→Y,因此得t1[Y]=t2[Y],可知t1[YZ]=t2[YZ],故XZ→YZ成立。 A3:如果t1[X]=t2[X],则t1[Y]=t2[Y]; 如果t1[Y]=t2[Y],则t1[Z]=t2[Z]。 因此可得:如果t1[X]=t2[X],则t1[Z]=t2[Z],即X→Z成立。

53 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 Armstrong公理系统的3个推论: (1) 合成规则。若X→Y,X→Z,则X→YZ。 (2) 分解规则。若X→YZ,则X→Y,X→Z。 (3) 伪传递规则。若X→Y,WY→Z,则XW→Z。 引理: X→A1A2…Ak成立的充分必要条件是X→Ai成立(i=1,2,…,k)。

54 1. 函数依赖公理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 1. 函数依赖公理 例题: 设关系模式R(A,B,C,G,H,I),函数依赖集为F={A→B,A→C,CG→H,CG→I,B→H},利用规则,可以得到关系中存在以下几个函数依赖。 (1) A→H。由于A→B,B→H,使用传递律可得到A→H。 (2) CG→HI。由于CG→H,CG→I,由合成律可得CG→HI。 (3) AG→I。由于A→C,CG→I,由伪传递律可推出AG→I。

55 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 判断X→Y是否包含在F+中,只要判断X→Y能否用推理规则从F中导出,即判断Y X+是否成立。这样就把计算F+的问题简化为计算X+的问题。 属性闭包的定义: 设关系模式R(U,F),U={A1,A2,…,An},F为其函数依赖集,则称所有用Armstrong公理从F推出的函数依赖X→Ai中Ai的属性集合为X的属性闭包,记作X+,读作X关于函数依赖集F的闭包。 引理: 设关系模式R(U,F),U为R的属性集合,F为其函数依赖集,X U且Y U,则从F推出X→Y的充分必要条件是Y X+。

56 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 引理证明: 充分性:设Y= A1,A2,…,An,且Y X+。根据闭包的定义,对于每个i(i=1,2,…,n),X→Ai能由推理规则导出,再根据合成律,则有X→Y。 必要性:设X→Y能由推理规则导出,利用分解律,可得X→Ai(i=1,2,…,n),于是根据X+的定义,有Ai X+,所以,A1,A2,…,An X+,即Y X+。

57 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 求属性闭包的算法: 输入:关系模式R的全部属性集U,U的子集X,U上的函数依赖集F。 输出:X关于F的属性闭包X+。 步骤:设i=0,1,2,… (1) 初始化:i=0,X(i)=X(0)=X。 (2) 求属性集A。 A是这样的属性:在F中寻找尚未用过的左边是X(i)子集的函数依赖 Y(i) X(i),并且在F中有Y(i)→Z(i),则A=Z(1)∪Z(2)∪…∪Z(i)。 (3) X(i+1)=X(i)∪A。 (4) 判断以下条件之一是否成立,若有条件成立,则转向(5);否则,i=i+1,转向(2)。 ① X(i+1)=X(i)。 ② X(i)中已包含了R的全部属性。 ③ 在F中的每个函数依赖的右边属性中已没有X(i)中未出现过的属性。 ④ 在F中未用过的函数依赖的左边属性已没有X(i)的子集。 (5) 输出X(i+1),即为X+。

58 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 例题: 已知关系模式R(U,F),其中U={A,B,C,D,E},F={AB→C,B→D,C→E,EC→B,AC→B},求(AB)+。 解:由【算法6.1】,设X(0)=AB。 计算X(1),逐一扫描集合F中各个函数依赖,找左部为A,B或AB的函数依赖。得到两个:AB→C,B→D,于是X(1)=AB∪CD=ABCD。 因为X(0)≠X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到C→E,AC→B,于是X(2)=X(1)∪BE=ABCDE。 因为X(2)已等于全部属性的集合,所以(AB)+=ABCDE=U。

59 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 例题: 设有关系模式R(A,B,C,D,E,I),其中,F={A→D,AB→C,BI→C,ED→I,C→E},计算(AC)+。 解: (1) 令X={AC},则X(0)=AC; (2) 计算X(1),在F中找出左部是AC子集的函数依赖:A→D,C→E; (3) X(1)=X(0)∪D∪E=ACDE; (4) 由于X(0)≠ X(1),所以i=i+1=X(1),并转向算法中的步骤(2); (5) 在F中找出左部是ACDE子集的函数依赖:ED→I; (6) X(2)=X(1)∪I=ACEDI; (7) 虽然X(2)≠ X(1),但是F中未用过的函数依赖的左边属性已没有X(2)的子集,所以,可停止计算,输出(AC)+=X(2)=ACDEI。

60 2. 属性闭包及其计算 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 2. 属性闭包及其计算 自行练习: 请读者自行计算以下练习: 设有关系模式R(A,B,C,D,E,I),F={A→D,AB→E,BI→E,CD→I,E→C}。计算(AE)+

61 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 快速求解候选码的一个充分条件: 对于给定的关系模式R(U,F),可将其属性分成4类。 (1) L类:仅出现在F的函数依赖左部的属性。 (2) R类:仅出现在F的函数依赖右部的属性。 (3) N类:在F的函数依赖左右两边均未出现的属性。 (4) LR类:在F的函数依赖左右两边均出现的属性。

62 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 定理及推论: 【定理6.2】 对于给定的关系模式R及其函数依赖集F,如果X(X R)是L类属性,则X必为R的任一候选码的成员。 【推论6.1】 对于给定的关系模式R及其函数依赖集F,如果X(X R)是L类属性,且X包含了R的全部属性,则X必为R的唯一候选码。 【定理6.3】 对于给定的关系模式R及其函数依赖集F,如果X(X R)是R类属性,则X不在任何候选码中。 【定理6.4】 对于给定的关系模式R及其函数依赖集F,如果X是R的N类属性,则X必包含在R的任一候选码中。 【推论6.2】 对于给定的关系模式R及其函数依赖集F,如果X是R的N类和L类组成的属性集,且X+包含了R的全部属性,则X是R的唯一候选码。

63 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 求候选码问题可转化为求属性集闭包问题: 由【引理6.2】可知,X→U(U=A1,A2,…,An,关系模式R的所有属性)成立的充分必要条件是X→Ai成立(i=1,2,…,n)。 由【定义6.4】和【引理6.3】可知,从F推出X→Ai的充分必要条件是Ai X+,若X+=U,则X→U,且X的任一真子集(X')+≠ U,即X必为码。

64 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 例题: 设有R(A,B,C,D),其函数依赖集F={D→B,B→D,AD→B,AC→D},求R的所有候选码。 解:A、C属性是L类属性,由【定理6.2】可知,AC必是R的候选码成员,又因为(AC)+=ACBD,则由【推论6.1】得知,AC是R的唯一候选码。

65 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 例题: 设有R(A,B,C,D,E,P),R的函数依赖集F={A→D,E→D,D→B,BC→D,DC→A},求R的所有候选码。 解:C、E是L类属性,故C、E必在R的任何候选码中,又因为P为N类属性,故P也必在R的任何候选码中。又因为(CEP)+=ABCDEP,由【推论6.2】得知,CEP是R的唯一候选码。

66 3. 求解关系模式的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 3. 求解关系模式的候选码 例题: 设有关系模式R(A,B,C),其函数依赖集F={A→B,B→C},则R最高达到第几范式? 解:A是L类属性,故A必在R的候选码中,又因为(A)+=ABC,则由【推论6.1】得知,A是R的唯一候选码。由函数依赖集F可知,非主属性C对码存在传递函数依赖,但不存在部分函数依赖,故R最高达到2NF。

67 4. 函数依赖集的最小依赖集 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 4. 函数依赖集的最小依赖集 定义: 设F和G是关系模式R(U)上的两个函数依赖集,如果F+=G+,则称F和G是等价的,记作F≡ G,也可称为F覆盖G,或G覆盖F或F、G相互覆盖。 引理: 【引理6.4】 F≡ G的充分必要条件是F G+、G F+。 【引理6.5】 任一函数依赖集总可以为一右部都为单属性的函数依赖集所覆盖。 证明:构造G={X→A|X→Y∈F且A∈Y} 根据分解规则:G F+;根据合并规则:F G+。 可得:F+=G+,即F为G所覆盖。 证毕。

68 4. 函数依赖集的最小依赖集 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 4. 函数依赖集的最小依赖集 定义: 如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,也称为最小依赖集或最小覆盖。 (1) F中任一函数依赖的右部都是单属性。 (2) F中任一函数依赖X→A都不会使F与F-{X→A}等价。 (3) F中任一函数依赖X→A,X的任一真子集Z,不会使F-{X→A}∪{Z→A}与F等价。 条件(2)保证了F中不存在多余的函数依赖,条件(3)保证了F中每个函数依赖的左边没有多余的属性。 定理: 任一函数依赖集F均等价于一个极小函数依赖集Fmin。

69 4. 函数依赖集的最小依赖集 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 4. 函数依赖集的最小依赖集 算法: 输入:一个函数依赖集F。 输出:F的一个等价最小依赖集Fmin。 步骤。 (1) 应用分解规则,使F的每个函数依赖的右部属性都为单属性(右边属性单一化)。 (2) 依次去除F的每个函数依赖左部多余的属性。设XY→A是F的任一函数依赖,在F中求出X的闭包X+。如果X+包含了Y,则Y为多余属性,该函数依赖就变为X→A。 (3) 依次去除多余的函数依赖。设X→A是F的任一函数依赖,在F-{X→A}中求出X的闭包X+。如果X+包含了A,则X→A为多余的函数依赖,应该去除;否则,不能去除。

70 4. 函数依赖集的最小依赖集 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 4. 函数依赖集的最小依赖集 例题: 设有函数依赖集: F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→DB,CE→AG},计算其等价的最小依赖集Fmin。 解:(1) 将函数依赖右部属性单一化(利用分解原则),结果为: F1={AB→C,C→A,BC→D,ACD→B,D→E,D→G,BE→C,CG→D,CG→B,CE→A,CE→G} (2) 在F1中去掉函数依赖左部多余的属性。 对于CE→A,由于有C→A,则E是多余的;对于ACD→B,由于(CD)+=ABCDEG,则A是多余的。删除函数依赖左部多余的属性后,得到: F2={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→D,CG→B,C→A,CE→G} (3) 在F2中去掉多余的依赖。显然,两个C→A可以去掉一个,对于CG→B,由于(CG)+=ABCDEG,则是多余的。删除多余的依赖后,得到的最小函数依赖集为: Fmin={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→D,CE→G} 选择函数依赖次序的不同,则消除函数依赖也不同,因此可能有多个Fmin,如在例6-13中,另一个最小函数依赖集是: Fmin={AB→C,C→A,BC→D,D→E,D→G,BE→G,CG→B,CE→G}

71 4. 函数依赖集的最小依赖集 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 4. 函数依赖集的最小依赖集 例题: 设有函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A},计算它等价的最小依赖集Fmin。 解:(1) 将函数依赖右部属性单一化,结果为: F1={A→C,C→A,B→A,B→C,D→A,D→C,BD→A} (2) 去掉F1依赖中左部多余的属性。由于有B→A,故BD→A是多余的,结果为: F2={A→C,C→A,B→A,B→C,D→A,D→C } (3) 去掉F2中多余的依赖。因为A→C,C→A,所以A、C互相依赖,故B→A、B→C以及D→A、D→C中之一为多余的。 取F3={A→C,C→A,B→A,D→A}。在F3中: 对于A→C,F3-{A→C}中A+=A; 对于C→A,F3-{C→A}中C+=C; 对于B→A,F3-{B→A}中B+=B; 对于D→A,F3-{D→A}中D+=D; 所以,F3中已没有多余的函数依赖。 即F的等价最小依赖集为:Fmin={A→C,C→A,B→A,D→A}

72 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 关系模式经分解后,应与原来的关系模式等价。所谓“等价”是指两者对数据的使用者来说应是等价的,即对分解前后的关系,做相同内容的查询,应产生同样的结果,这是对模式分解的基本要求。 历年来,人们对等价的概念形成了3种不同的定义。 (1) 分解具有“无损连接性”(Lossless Join)。 (2) 分解具有“函数依赖保持性”(Preserve Dependency)。 (3) 分解既要具有“无损连接性”,又要具有“函数依赖保持性”。

73 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 无损连接性 所谓无损连接性是指对关系模式进行分解时,原关系模式下的任一合法关系实例在分解之后,应能通过自然连接运算恢复起来。无损连接性有时也称为无损分解。 定义: 设ρ={R1,R2,…,Rk}是关系模式R(U,F)的一个分解,如果对于R的任一满足F的关系r,都有 则称分解ρ满足函数依赖集F的无损连接性。

74 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 算法:检验分解的无损连接性。 输入:关系模式R(A1,A2,…,An); R上的函数依赖集F; R上的分解ρ={R1,R2,…,Rk}。 输出:ρ是否具有无损连接性。 步骤如下。 (1) 构造一个k行n列的表(或矩阵),第i行对应于分解后的关系模式Ri,第j列对应于属性Aj,见下表。 A1 A2 Aj An R1 R2 Ri Mij Rk

75 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 算法:检验分解的无损连接性。(续) 表中各分量的值由下面的规则确定: (2) 对F中的每个函数依赖进行反复检查和处理。具体处理为:取F中一个函数依赖X→Y,在X的分量中寻找相同的行,然后将这些行中的Y分量改为相同的符号,即如果其中之一为aj,则将bij改为aj;若其中无aj,则用其中一个bij替换另一个符号(尽量把下标ij改成较小的数),如两个符号分别为b23和b13,则将它们统一改为b13。 (3) 如此反复进行,直至M无可改变为止。如果发现某一行变成了a1,a2,…,an,则ρ具有无损连接性;否则,ρ不具有无损连接性。

76 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 设关系模式R(U,F),U={A,B,C,D,E},F={AB→C,C→D,D→E},R的一个分解ρ={R1(A,B,C),R2(C,D),R3(D,E)}。试判断ρ具有无损连接性。 解:(1) 首先构造初始表,见表6-10(a)。 (2) 按下列次序反复检查函数依赖和修改M: AB→C,属性A、B(第1、2列)中都没有相同的分量值,故M值不变; C→D,属性C中有相同值,故应改变D属性中的M值,b14改为a4; D→E,属性D中有相同值,故应改变E属性中的M值,b15、b25均改为a5。

77 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题(续): 结果见下表 (b)。 (3) 此时第一行已为a1,a2,a3,a4,a5,所以ρ具有无损连接性。 A B C D E R1(A,B,C) a1 a2 a3 b14 b15 a4 a5 R2(C,D) b21 b22 b25 R3(D,E) b31 b32 b33 (a) (b)

78 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 设关系模式R(A,B,C,D,E),F={A→C,B→C,C→D,DE→C,CE→A},R1=AD,R2=AB,R3=BC,R4=CDE,R5=AE,判断R分解成ρ={R1,R2,R3,R4,R5}是否无损连接分解。 解:(1) 首先构造初始表,见下表 (a)。 (2) 按下列次序反复检查函数依赖和修改M: A→C,属性A中有3个相同的值a1,故将C属性中的b13、b23、b53均改为b13; B→C,属性B中有两个相同值a2,故将C属性中的b13、b33均改为b13; C→D,根据上述修改规则,将D列的b24、b34、b54均改为a4;

79 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题(续): DE→C,属性D、E中有3个相同值,故将C列中的第三行和第五行的b13均改为a3。 CE→A,属性C、E中有3个相同值,故将A列中的第三、四行改为a1。 结果见下表(b)。 (3) 此时第三行已为a1,a2,a3,a4,a5,所以分解ρ={R1,R2,R3,R4,R5}是无损连接性分解。 A B C D E R1(A,D) a1 b12 b13 a4 b15 R2(A,B) a2 b23 b24 b25 R3(B,E) b31 b33 b34 a5 a3 R4(C,D,E) b41 b42 R5(A,E) b52 b53 b54 (a) (b)

80 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 定理: 如果R的分解为ρ={R1,R2},F为R所满足的函数依赖集,分解ρ具有无损连接性的充分必要条件为: R1∩R2→(R1-R2) 或 R1∩R2→(R2-R1) 其中,R1∩R2表示关系模式的交,由R1与R2中公共属性组成,(R1-R2)或(R2-R1)表示关系模式的差集,(R1-R2)由(R1-R2)中去了R1和R2的公共属性组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能决定R1中或R2中的其他属性,这样的分解具有无损连接性。

81 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 设R={A,B,C},F={A→B},则ρ1={R1(A,B),R2(A,C)}是无损分解,而ρ2={R1(A,B),R3(B,C)}不是无损分解。证明之。 解:(1) 根据【定理6.6】可证明ρ1是无损分解: R1∩R2:AB∩AC=A R1-R2:AB-AC=B 满足A→B,所以模式R的分解具有无损连接性。 (2) 用同样的方法可证明ρ2不是无损分解: R1∩R3:AB∩BC=B R1-R3:AB-BC=A R3-R1:BC-AB=C B→A、B→C不在F中,也不在F+中,所以该分解不具有无损连接性。

82 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题(续): (3) 如果关系模式R有一关系r为: r={(a1b1c1),(a2b1c2)} r1=∏AB(r)={(a1b1),(a2b1)} r2=∏AC(r)={(a1c1),(a2c2)} r3=∏BC(r)={(b1c1),(b1c2)} 令S1=r1 r2={(a1b1c1),(a2b1c2)} S2=r1 r3={(a1b1c1),(a1b1c2),(a2b1c1),(a2b1c2)} 则有r=S1,而r≠S2。所以ρ1是无损分解,而ρ2则不是。

83 ∏Z(F)={X→Y|X→YF+,且XY Z}
1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 函数依赖公理 属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 函数依赖保持性 保持关系模式的一个分解是等价的另一个重要条件是关系模式的函数依赖集在分解后仍在数据库模式中保持不变,即关系模式R到ρ={R1,R2,…,Rk}的分解,应被函数依赖集F在这些Ri上的投影所蕴涵,这就是函数依赖保持性问题。 定义: 设有关系模式R,F是R的函数依赖集,Z是R的一个属性集合,则Z所涉及的F中所有函数依赖为F在Z上的投影,记作∏Z(F),有 ∏Z(F)={X→Y|X→YF+,且XY Z} 设F是关系模式R的函数依赖集,ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}为R的一个分解,如果Fi=∏Ri(F)的并集(F1∪F2∪…∪Fk)≡ F(i=1,2,…,k),则称分解ρ具有函数依赖保持性。

84 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 设关系模式R(U,F),U={A,B,C,D,E},F={AB→C,C→D,D→E},R的一个分解ρ={R1(A,B,C),R2(C,D),R3(D,E)}。试判断分解ρ是否具有函数依赖保持性。 解:因为 ∏R1(F)={AB→C},∏R2(F)={C→D},∏R3(F)={D→E} 所以 ∏R1(F)∪∏R2(F)∪∏R3(F)={AB→C,C→D,D→E}≡F 因此ρ具有函数依赖保持性。

85 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 将R=(ABCD,{A→B,B→C,B→D,C→A})分解为关于U1=AB,U2=ACD两个关系,求R1、R2,并检验分解的无损连接性和分解的函数依赖保持性。 解:F1=∏R1(F)={A→B,B→A}, F2=∏R2(F)={A→C,C→A,A→D} R1=(AB,{A→B,B→A}) R2=(ACD,{A→C,C→A,A→D}) U1∩U2=AB∩ACD=A U1-U2=AB-ACD=B,A→BF 所以ρ是无损分解; F1UF2={A→B,B→A,A→C,C→A,A→D}≡{A→B,B→C,B→D,C→A}=F 所以ρ具有函数依赖保持性。

86 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 例题: 有关系模式R(A,B,C,D),其函数依赖集F={A→B,C→D},ρ={R1(AB),R2(CD)},求R1,R2,并检验分解的无损连接性和分解的函数依赖保持性。 解:F1=∏R1(F)={A→B} F2=∏R2(F)={C→D} R1=(AB,{A→B}) R2=(CD,{C→D}) U1∩U2=AB∩CD=Φ U1-U2=AB U2-U1=CD Φ→AB F Φ→CD F 所以ρ不是无损分解。 F1UF2={A→B,C→D}≡F 所以ρ具有函数依赖保持性。

87 5. 模式分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
属性闭包及在计算 求解关系模式的候选码 函数依赖集的最小依赖集 模式分解 6关系模式设计实例 7本章小结 5. 模式分解 总结: 在实际数据库设计中,关系模式的分解主要有两种准则。 (1) 只满足无损连接性。 (2) 既满足无损连接性,又满足函数依赖保持性。 准则(2)比准则(1)理想,但分解时受到的限制更多。如果一个分解,只满足函数依赖保持性,不满足无损连接性,则是没有实用价值的。

88 6.6 关系模式设计实例 1 实例 2 预处理 3 写出关系模式R的基本函数依赖 4 找出关系模式R的候选码
1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例 7本章小结 6.6 关系模式设计实例 1 实例 2 预处理 3 写出关系模式R的基本函数依赖 4 找出关系模式R的候选码 5 关系模式R最高已经达到第几范式的判断 6 关系模式的分解

89 1. 实例 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 1. 实例 假设某商业集团数据库中有一关系模式R(商店编号,商品编号,数量,部门编号,负责人),如果规定: (1) 每个商店的每种商品只在一个部门销售; (2) 每个商店的每个部门只有一个负责人; (3) 每个商店的每种商品只有一个库存数量。 试回答下列问题: (1) 根据上述规定,写出关系模式R的基本函数依赖; (2) 找出关系模式R的候选码; (3) 试问关系模式R最高已经达到第几范式?为什么? (4) 如果R已达3NF,是否已达BCNF?若不是BCNF,将其分解为BCNF模式集。

90 2. 预处理 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解 6关系模式设计实例
写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 2. 预处理 为了方便描述,我们用代号表示每个属性: A—商店编号,B—商品编号,C—部门编号,D—数量,E—负责人 这样,有关系模式R(U,F),U={A,B,C,D,E}

91 3.写出关系模式R的基本函数依赖 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 3.写出关系模式R的基本函数依赖 为了消除关系模式在操作上的异常问题,优化数据模式,需要对关系模式进行规范化处理。首先需要做的就是函数依赖,以便能确切地反映实体内部各属性间的联系。经过对数据语义的分析得出下面的依赖关系。 (1) 语义:每个商店的每种商品只在一个部门销售,即已知商店和商品名称可以决定销售部门。例:东店——海尔洗衣机——一定在家电部销售,所以得出函数依赖:AB→C。 (2) 语义:每个商店的每个部门只有一个负责人,即已知商店和部门名称可以决定负责人。例:东店——家电部——部门经理一定是张三,所以得出函数依赖是:AC→E。 (3) 语义:每个商店的每种商品只有一个库存数量,即已知商店和商品名称可以决定库存数量。例:东店——海尔洗衣机——库存10台,所以得出函数依赖是:AB→D。 这样,在关系模式R(U,F)中,基本函数依赖集是F={AB→C,AC→E,AB→D}。

92 4.找出关系模式R的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 4.找出关系模式R的候选码 求F的最小函数依赖集: (1) 根据分解性先分解所有依赖的右边为单属性。 可以看出:F={AB→C,AC→E,AB→D}中所有依赖的右边已为单属性。 (2) 对所有依赖的左边为多属性的情况,消除左侧冗余属性。 下面计算判断AB→C中是否有无关属性。 ① 设A→C,在F={AB→C,AC→E,AB→D}中计算A的属性闭包A+。 首先,初始化A+=A。经观察,在F={AB→C,AC→E,AB→D}中,属性A不能“带进”任何属性,即A的闭包A+就是A,也就是A+=A,所以AB→C中B不是无关属性。 ② 设B→C,在F={AB→C,AC→E,AB→D}中计算B的闭包B+。 首先,初始化B+=B。经观察,在F={AB→C,AC→E,AB→D}中,属性B不能“带进”任何属性,即B的闭包B+就是B,也就是B+=B,所以AB→C中A不是无关属性。 ③ 同理,AC→E和AB→D中左边也无无关属性。

93 4.找出关系模式R的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 4.找出关系模式R的候选码 求F的最小函数依赖集: (3) 下面计算在F={AB→C,AC→E,AB→D}中有无冗余依赖。 去掉AB→C,依赖集变为F={AC→E,AB→D}。 首先,初始化{AB}+=AB。在F={AC→E,AB→D}中,有AB→D,即AB可以“带进”D属性,这时(AB)+=ABD;经观察已不能再“带进”其他属性,即(AB)+=ABD。 因为ABD中不包含C,所以AB→C不是冗余依赖。 同理计算,AC→E和AB→D也不是冗余依赖。 至此,才能肯定F={AB→C,AC→E,AB→D}已是最小函数依赖集。

94 4.找出关系模式R的候选码 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 4.找出关系模式R的候选码 求F的最小函数依赖集: (4) 寻找候选码。 寻找候选码也需要一定的计算,下面计算R的候选码。 在F={AB→C,AC→E,AB→D}中,对所有属性进行如下归类。 L类属性,即仅在依赖左边出现的属性:A,B; R类属性,即仅在依赖右边出现的属性:E,D; LR类属性,即既在依赖左边又在依赖右边出现的属性:C; N类属性,即既不在依赖左边又不在依赖右边出现的属性:无。 我们知道,L类属性和N类属性一定在候选码中,R类属性一定不在候选码中,所以,A,B一定在候选码中,E,D一定不在候选码中,这是定性的结果。 具体的候选码是什么呢? 首先,计算L类属性AB的闭包:(AB)+=ABDCE,因为AB的闭包已经包含了所有R类属性,所以,AB是唯一候选码。 对于LR类属性参与候选码的相关计算较复杂,但这里已经找出了关系模式R{A,B,C,D,E}的唯一候选码。

95 5.关系模式R最高已经达到第几范式的判断 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结
5函数依赖公理和模式分解 6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 5.关系模式R最高已经达到第几范式的判断 关系模式R最高已经达到第几范式?为什么? 很明显,关系模式R(A,B,C,D,E)中的所有属性值都是不可再分的原子项,所以该关系模式已满足第一范式。那么关系模式R(A,B,C,D,E)是否满足2NF? 根据范式的相关定义得知:如果关系模式R(U,F)中的所有非主属性都完全函数依赖于任一候选码,则该关系是第二范式。从上面的分析知道R(A,B,C,D,E)的唯一候选码是AB,非主属性是C、D、E,函数依赖集是F={AB→C,AC→E,AB→D},所以关系模式R(A,B,C,D,E)已满足2NF。 进一步分析:非主属性C、D、E之间不存在相互依赖,即关系模式R(A,B,C,D,E)不存在非主属性对候选码的传递函数依赖,根据第三范式的定义,关系模式R(A,B,C,D,E)已满足3NF。

96 6.关系模式的分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 6.关系模式的分解 R已满足3NF,是否已满足BCNF?若不是BCNF,将其分解为BCNF模式集。 由BCNF的定义得知:如果关系模式每个决定因素都包含码(而不是被码所包含),则R满足BCNF。分析:在F={AB→C,AC→E,AB→D}中,有依赖AC→E的左边AC不包 含候选码AB,即AC→E是BCNF的违例,所以,关系模式R(A,B,C,D,E)不满足 BCNF。 关系模式的分解: 下面分解关系模式R(A,B,C,D,E),分解3NF有一定的规则。 从BCNF违例AC→E入手,得到两个新关系模式:R1(A,C,E)和R2(A,C,B,D)。 R1由违例的所有属性组成,R2由违例的决定因素和R的其余属性组成,即R1(商店编号,部门编号,负责人),实际上描述了“负责人”这一件事;R2(商店编号,商品编号,部门编号,数量),实际上描述了“商品库存”这一件事。已经做到“一事一地”的原则了,应该能符合更高的范式,但还得经过计算和判断。 ,关系模式R(A,B,C,D,E)已满足3NF。

97 6.关系模式的分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 6.关系模式的分解 判断R1是否满足BCNF: 1) 针对R1(A,C,E) 首先,写出R1的子集:{A},{C},{E},{A,C},{A,E},{C,E}。 在F={AB→C,AC→E,AB→D}中。 子集{A}的闭包A+=A,闭包中无不属于子集{A}的“新属性”,所以找不到新依赖。 子集{C}的闭包C+=C,闭包中无不属于子集{C}的“新属性”,所以找不到新依赖。 子集{E}的闭包E+=E,闭包中无不属于子集{E}的“新属性”,所以找不到新依赖。 子集{A,C}的闭包(AC)+=ACE,闭包中有不属于子集{A,C}的“新属性”E,E属于R1,但不在子集{A,C}中,却在其闭包中出现,我们说AC→E成立。 子集{A,E}的闭包(AE)+=AE,闭包中无不属于子集{A,E}的“新属性”,所以找不到新依赖。 子集{C,E}的闭包(CE)+=CE,闭包中无不属于子集{C,E}的“新属性”,所以找不到新依赖。 最后,关系模式R1(A,C,E)的函数依赖集F={AC→E}。 关系模式R1(A,C,E)已是BCNF。

98 6.关系模式的分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 6.关系模式的分解 判断R1是否满足BCNF: 2) 针对R2(A,B,C,D) 首先,写出R2的子集:{A}、{B}、{C}、{D}、{A,B}、{A,C}、{A,D}、{B,C}、{B,D}、{C,D}。 在F={AB→C,AC→E,AB→D}中。 子集{A}的闭包A+=A,闭包中无不属于子集{A}的“新属性”,所以找不到新依赖。 同理,子集{B}、{C}、{D}也不“带来”新依赖。 子集{A,B}的闭包(AB)+=ABCDE,闭包中的“新属性”是C和D,C、D在R2中,但不在子集{A,B}中,所以有新依赖AB→C和AB→D。 子集{A,C}的闭包(AC)+=ACE,无新依赖产生。 子集{A,D}的闭包(AD)+=AD,无新依赖产生。 子集{B,C}的闭包(BC)+=BC,无新依赖产生。 子集{B,D}的闭包(BD)+=BD,无新依赖产生。 子集{C,D}的闭包(CD)+=CD,无新依赖产生。 最后,关系模式R2(A,B,C,D)的函数依赖集F={AB→C,AB→D}。经计算,F={AB→C,AB→D}已是正则覆盖,关系模式R2(A,B,C,D)的唯一候选码是AB。可以看出,关系模式R2(A,B,C,D)满足BCNF。

99 6.关系模式的分解 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 实例 预处理 写出关系模式R的基本函数依赖 找出关系模式R的候选码 关系模式R最高已经达到第几范式的判断 关系模式的分解 7本章小结 6.关系模式的分解 结论: 从上面的实例析解,可以初步得出关系模式规范化的基本方法:确定数据依赖,对关系模式的各个属性按数据分析阶段所得到的语义写出其数据依赖,得到一组或全部数据依赖;按照数据依赖的理论,逐一分析这组关系模式,确定属于第几范式,进行模式分解。总之规范化理论正是致力于解决关系模式中不合适的数据依赖问题,从而使关系结构合理,便于操作,为用户开发创建一个良好的数据库应用系统打下了基础。

100 6.7 本章小结 1问题的提出 2关系模式的规范化 3多值依赖及关系的第四范式 4关系规范化小结 5函数依赖公理和模式分解
6关系模式设计实例 7本章小结 6.7 本章小结 本章讨论了如何设计关系模式问题。关系模式设计得好坏,将直接影响到数据冗余度、数据一致性等问题。要设计好的数据库模式,必须有一定的理论作为基础,这就是关系模式的规范化理论。 函数依赖是属性值间的联系。在同一关系中,如果X的值决定Y的值,则Y函数依赖于X,决定因素是位于函数依赖左边的由一个或多个元素组成的属性集合。码是能唯一标识一个元组的包含一个或多个属性的属性集合,每个关系至少有一个码。属性是否是码以及属性间的依赖关系是没有规则可言的,而是取决于用户环境的需要和数据库设计人员的理解。 为了减少数据冗余和消除插入、删除及更新异常,可以把一个关系分解成两个或多个关系,从而使它们达到一定的范式。 根据定义,每个规范化的关系都满足第一范式。如果一个关系的所有非主属性都完全依赖于码,则该关系满足第二范式。如果一个关系满足第二范式,且没有非主属性对码的传递函数依赖,则该关系满足第三范式。如果一个关系的所有决定因素都是码,则该关系满足BC范式。在函数依赖讨论范围内,BC范式是最高范式。如果一个关系在BC范式中,且没有非平凡的多值依赖,则该关系满足第四范式。 关系模式在分解时应保持“等价”,分别用无损分解和保持依赖两个特征来衡量。前者是保持关系在投影连接以后仍能恢复,而后者是使关系模式的函数依赖集在分解后仍在数据库模式中保持不变。

101 第6章 关系数据库规范化理论 谢谢! 再见!


Download ppt "第6章 关系数据库规范化理论 教学目标:通过本章学习,了解不规范的关系模式存在的问题;理解函数依赖及关系规范化的相关概念,熟悉关系模式的形式化定义;掌握第一范式(1NF)、第二范式(2NF)、第三范式(3NF)及BCNF的定义及相关术语的含义;了解多值依赖及第四范式(4NF)的定义;理解函数依赖公理的内容,掌握属性闭包的定义及求解算法,能够正确判断关系模式的候选码及规范化程度;了解最小函数依赖集的定义及算法,了解对模式分解后无损连接性和函数依赖保持性的判断。"

Similar presentations


Ads by Google