教师 : 陈红 助教 : 王琪 于秀梅
DESCRIPTION
教师 : 陈红 助教 : 王琪 于秀梅. 数据库系统概论 An Introduction to Database System 第六章 关系数据理论. 联系方式. 陈红 [email protected] 电话 : 62513914 办公室 : 理工配楼 301A 王琪 [email protected] 于秀梅 [email protected] 理工配楼 301 Tel: 62513624. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/1.jpg)
教师 : 陈红 助教 : 王琪 于秀梅
数据库系统概论An Introduction to Database System
第六章 关系数据理论
![Page 2: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/2.jpg)
联系方式 陈红
电话 : 62513914
办公室 : 理工配楼 301A
理工配楼 301 Tel: 62513624
![Page 3: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/3.jpg)
本篇讲解数据库系统的基本概念和基础知识第一章 绪论 初步讲解数据库的基本概念第二章 关系数据库 系统讲解关系数据库的重要概念第三章 关系数据库标准语言 SQL第四章 数据库安全性第五章 数据库完整性
第一篇 基础篇
![Page 4: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/4.jpg)
应用系统开发过程中 :如何基于某个数据库管理系统设计数据库 , 如何基于数据库系统编程 第六章 关系数据理论 第七章 数据库设计 第八章 数据库编程
课程大作业 : 数据库设计与应用开发
第二篇 设计与应用开发篇
![Page 5: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/5.jpg)
第六章 关系数据理论 问题的提出
– 关系数据库的基本概念– 关系模型– 关系数据库的标准语言– 关系数据库逻辑设计
• 针对一个具体问题,应如何构造一个适合于它的数据模式,即应该构造几个关系,每个关系由哪些属性组成等。
• 数据库逻辑设计的工具──关系数据库的规范化理论
![Page 6: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/6.jpg)
第六章 关系数据理论
6.1 数据依赖
6.2 规范化
6.3 数据依赖的公理系统
6.4 模式的分解
![Page 7: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/7.jpg)
第六章 关系数据理论
6.1 数据依赖
6.2 规范化
6.3 数据依赖的公理系统
6.4 模式的分解
![Page 8: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/8.jpg)
6.1 数据依赖
内容提要什么是数据依赖数据依赖对关系模式有什么影响数据依赖的形式化定义
![Page 9: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/9.jpg)
6.1 数据依赖
6.1.1 关系模式中的数据依赖
6.1.2 数据依赖对关系模式的影响
6.1.3 有关概念
![Page 10: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/10.jpg)
6.1 数据依赖
6.1.1 关系模式中的数据依赖
6.1.2 数据依赖对关系模式的影响
6.1.3 有关概念
![Page 11: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/11.jpg)
6.1.1 关系模式中的数据依赖
一、概念回顾
二、关系模式的形式化定义
三、什么是数据依赖
四、关系模式的简化表示
![Page 12: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/12.jpg)
一、概念回顾 关系:描述实体及其属性、实体间的联系。
– 从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。
关系模式:用来定义关系。 关系数据库:基于关系模型的数据库,利用关系
来描述现实世界。– 从形式上看,它由一组关系组成。
关系数据库的模式:定义这组关系的关系模式的全体。
![Page 13: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/13.jpg)
二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组: R(U, D, DOM, F)
R : 关系名U : 组成该关系的属性名集合D : 属性组 U 中属性所来自的域DOM :属性向域的映象集合F : 属性间数据的依赖关系集合。即限定 了组成关系的各个元组必须满足的完 整性约束条件。
![Page 14: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/14.jpg)
三、什么是数据依赖
1. 完整性约束的表现形式 限定属性取值范围:例如学生成绩必须
在 0-100 之间
定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键。
![Page 15: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/15.jpg)
什么是数据依赖(续)
2. 数据依赖 是通过一个关系中属性间值的相等与否
体现出来的数据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现
![Page 16: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/16.jpg)
什么是数据依赖(续)
3. 数据依赖的主要类型 函数依赖( Functional Dependency ,简
记为 FD )
多值依赖( Multivalued Dependency ,简记为 MVD )
连接依赖
![Page 17: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/17.jpg)
四、关系模式的简化表示
●在关系模式 R(U, D, DOM, F) 中,影响数据库模式设计的主要是 U 和 F , D 和 DO
M 对其影响不大,为了方便讨论,我们将关系模式简化为一个三元组:
R(U, F)
●当且仅当 U 上的一个关系 r 满足 F 时, r
称为关系模式 R(U, F) 的一个关系。
![Page 18: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/18.jpg)
6.1 数据依赖
6.1.1 关系模式中的数据依赖
6.1.2 数据依赖对关系模式的影响
6.1.3 有关概念
![Page 19: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/19.jpg)
6.1.2 数据依赖对关系模式的影响
例:建立一个描述学校的数据库。 涉及的对象包括:
学生的学号( Sno )所在系( Sdept )系主任姓名( Mname )课程名( Cname )成绩( Grade )
![Page 20: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/20.jpg)
数据依赖对关系模式的影响 ( 续 )
假设学校的数据库模式由一个单一的关系模式 Student 构成,
则该关系模式的属性集合为:
U ={ Sno, Sdept, Mname, Cname, Grade
}
![Page 21: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/21.jpg)
数据依赖对关系模式的影响 ( 续 )
现实世界的已知事实告诉我们:
⒈ 一个系有若干学生, 但一个学生只属于一个系;
⒉ 一个系只有一名主任;
⒊ 一个学生可以选修多门课程, 每门课程有若干学生选修;
⒋ 每个学生所学的每门课程都有一个成绩。
![Page 22: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/22.jpg)
数据依赖对关系模式的影响 ( 续 )
由此可得到属性组 U 上的一组函数依赖 F : F ={ Sno → Sdept, Sdept → Mname, (Sno, Cname) → Grade }
Sno Cname
Sdept Mname
Grade
![Page 23: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/23.jpg)
数据依赖对关系模式的影响 ( 续 )
关系模式 Student<U, F> 中存在的问题:
⒈ 数据冗余太大– 浪费大量的存储空间
例:每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。
![Page 24: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/24.jpg)
数据依赖对关系模式的影响 ( 续 )
⒉ 更新异常( Update Anomalies )– 数据冗余 ,更新数据时,维护数据完整性代
价大。
例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组。
![Page 25: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/25.jpg)
数据依赖对关系模式的影响 ( 续 )
⒊ 插入异常( Insertion Anomalies )– 该插的数据插不进去
例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。
![Page 26: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/26.jpg)
数据依赖对关系模式的影响 ( 续 )
⒋ 删除异常( Deletion Anomalies )– 不该删除的数据不得不删
例,如果某个系的学生全部毕业了, 我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。
![Page 27: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/27.jpg)
数据依赖对关系模式的影响 ( 续 )
结论: Student 关系模式不是一个好的模式。– 一个“好”的模式应当不会发生插入异常、删除异常,更新异常、数据冗余应尽可能少。
原因:由存在于模式中的某些数据依赖引起的。
解决方法:通过分解关系模式来消除其中不合适 的数据依赖。
![Page 28: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/28.jpg)
数据依赖对关系模式的影响 ( 续 )
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
![Page 29: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/29.jpg)
6.1 数据依赖
6.1.1 关系模式中的数据依赖
6.1.2 数据依赖对关系模式的影响
6.1.3 有关概念
![Page 30: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/30.jpg)
6.1.3 有关概念
一、函数依赖
二、平凡函数依赖与非平凡函数依赖
三、完全函数依赖与部分函数依赖
四、传递函数依赖
五、码
![Page 31: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/31.jpg)
一、函数依赖
定义 6.1 设 R(U) 是一个属性集 U 上的关系模式, X 和 Y 是 U 的子集。若对于 R(U)
的任意一个可能的关系 r , r 中不可能存在两个元组在 X 上的属性值相等, 而在 Y 上的属性值不等, 则称“ X 函数确定 Y”或“ Y 函数依赖于 X” ,记作 X→Y 。 X 称为这个函数依赖的决定属性集 (Determinant) 。
![Page 32: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/32.jpg)
函数依赖(续)例 : Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有 :
Sno → Ssex , Sno → SageSno → Sdept , Sno ←→ SnameSname → Ssex , Sname → SageSname → Sdept
但 Ssex →Sage, Ssex →Sdept,
![Page 33: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/33.jpg)
错误的 Student 表
Sno Sname Ssex Sage SdeptS1 张三 男 20 计算机系S1 李四 女 21 自动化系S3 王五 男 20 计算机系S4 赵六 男 21 计算机系S5 田七 男 20 计算机系
. . .
. . .
. . .
. . .
. . .
![Page 34: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/34.jpg)
函数依赖(续)说明:1. 函数依赖不是指关系模式 R 的某个或某些关系
实例满足的约束条件,而是指 R 的所有关系实例均要满足的约束条件。
2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
![Page 35: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/35.jpg)
函数依赖(续)3. 数据库设计者可以对现实世界作强制的规定。
例如设计者可以强行规定不允许同名人出现,因而使函数依赖“姓名→年龄”成立。但所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。
4. 若 X→Y ,并且 Y→X, 则记为 X←→Y 。
5. 若 Y 不函数依赖于 X, 则记为 X─→Y 。
![Page 36: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/36.jpg)
二、平凡函数依赖与非平凡函数依赖
定义 6.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
![Page 37: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/37.jpg)
平凡函数依赖与非平凡函数依赖 ( 续 )
– 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖。
![Page 38: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/38.jpg)
三、完全函数依赖与部分函数依赖
定义 6.3 在关系模式 R(U) 中,如果 X→Y ,并且对于 X 的任何一个真子集 X’ ,都有
X’ Y, 则称 Y 完全函数依赖于 X ,记作X f Y 。若 X→Y ,但 Y 不完全函数依赖于 X ,则称 Y 部分函数依赖于 X ,记作
X P Y 。
![Page 39: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/39.jpg)
完全函数依赖与部分函数依赖(续)
例 : 在关系 SC(Sno, Cno, Grade) 中,有: 由于: Sno →Grade , Cno → Grade , 因此: (Sno, Cno) f Grade
但:(Sno, Cno) P Sno, (Sno, Cno) P Cno
![Page 40: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/40.jpg)
完全函数依赖与部分函数依赖(续)
– 平凡函数依赖或者是形如 X→X 的依赖 , 或者是部分函数依赖
– 非平凡函数依赖也可能是部分函数依赖
例 : Student(Sno, Sname, Ssex, Sage, Sdept)
Sno f Sname, Sno f Ssex, Sno f Sage,
Sno f Sdept
(Sno, Sname) P Sdept, (Sno, Ssex) P Sdept
![Page 41: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/41.jpg)
四、传递函数依赖定义 6.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 。
![Page 42: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/42.jpg)
五、码定义 6.5 设 K 为关系模式 R<U,F> 中的属性或
属性组合。若 K fU ,则 K 称为 R 的一个候选码 (Candidate Key) 。若关系模式 R 有多个候选码,则选定其中的一个做为主码 (Primary key) 。
2.1.1: 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码 .
![Page 43: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/43.jpg)
码(续) 主属性与非主属性
– 包含在任何一个候选码中的属性 ,称为主属性( Prime attribute )
– 不包含在任何码中的属性称为非主属性( N
onprime attribute )或非码属性( Non-key
attribute ) 全码:整个属性组是码,称为全码( All-ke
y )
![Page 44: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/44.jpg)
码(续) 已知关系模式 R<U,F>, U = {A,B,C,D,E,G}
F = {AC→B , CB→D , A→BE , E→GC}
求关系 R 的候选码? 请验证,关系 R 是否满足函数依赖 C→DH? 为什么?
C D H S
C1 D1 H1 S1
C1 D1 H2 S1
C1 D1 H1 S2
C2 D2 H2 S3
![Page 45: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/45.jpg)
码(续)[ 例 2] 关系模式 S(Sno,Sdept,Sage) ,单个属性 Sno 是码, SC ( Sno , Cno , Grade )中,( Sno , Cno )
是码[ 例 3] 关系模式 R ( P , W , A ) P :演奏者 W :作品 A :听众 一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为 (P , W , A) ,即 All-Key
![Page 46: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/46.jpg)
外部码定义 6.5 关系模式 R 中属性或属性组 X 并非 R 的码,
但 X 是另一个关系模式的码,则称 X 是 R 的外部码( Foreign key )也称外码
如在 SC ( Sno , Cno , Grade )中, Sno 不是码,但 Sno 是关系模式 S ( Sno , Sdept , Sage )的码,
则 Sno 是关系模式 SC 的外部码 主码与外部码一起提供了表示关系间联系的手段
![Page 47: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/47.jpg)
第六章 关系数据理论
6.1 数据依赖
6.2 规范化
6.3 数据依赖的公理系统
6.4 模式的分解
![Page 48: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/48.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 49: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/49.jpg)
6.2 规范化 范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满
足不同程度要求的为不同范式。 范式的种类:
第一范式 (1NF)第二范式 (2NF)第三范式 (3NF)BC 范式 (BCNF)第四范式 (4NF)第五范式 (5NF)
![Page 50: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/50.jpg)
规范化(续)各种范式之间存在联系:
某一关系模式 R 为第 n 范式,可简记为 R nNF∈ 。
NF5NF4BCNFNF3NF2NF1
![Page 51: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/51.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 52: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/52.jpg)
6.2.1 第一范式( 1NF ) 1NF 的定义
定义 6.6 如果一个关系模式 R 的所有属性都是不可分的基本数据项,则 R 1NF∈ 。
第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
但是满足第一范式的关系模式并不一定是一个好的关系模式。
![Page 53: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/53.jpg)
第一范式(续)例 : 关系模式 SLC(Sno, Sdept, Sloc, Cno, Grade) Sloc 为学生住处,假设每个系的学生住在同一个地
方。
函数依赖包括: (Sno, Cno) f Grade Sno → Sdept (Sno, Cno) P Sdept Sno → Sloc (Sno, Cno) P Sloc Sdept → Sloc
![Page 54: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/54.jpg)
第一范式(续)
SLC 的码为 (Sno, Cno)
Sno
Cno
Grade
Sdept
Sloc
SLC
![Page 55: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/55.jpg)
第一范式(续)结论 :
1. SLC 满足第一范式。2. 非主属性 Sdept 和 Sloc 部分函数依赖于码 (Sno, Cno) 。
SLC 存在的问题 (1) 插入异常
假设 Sno = 95102 , Sdept = IS , Sloc = N 的学生还未选课,因课程号是主属性,因此该学生的信息无法插入SLC 。
![Page 56: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/56.jpg)
第一范式(续)(2) 删除异常 假定某个学生本来只选修了 3 号课程这一门
课。现在因身体不适,他连 3 号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。
(3) 数据冗余度大 如果一个学生选修了 10 门课程,那么他的 Sd
ept 和 Sloc 值就要重复存储了 10 次。
![Page 57: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/57.jpg)
第一范式(续)(4) 修改复杂 例如学生转系,在修改此学生元组的 Sdept
值的同时,还可能需要修改住处( Sloc )。如果这个学生选修了 K 门课,则必须无遗漏地修改 K 个元组中全部 Sdept 、 Sloc信息。
因此 SLC 不是一个好的关系模式。
![Page 58: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/58.jpg)
第一范式(续)原因 Sdept 、 Sloc 部分函数依赖于码。
解决方法 采用投影分解法,把 SLC 分解为两个关系模
式,以消除这些部分函数依赖。 SC ( Sno , Cno , Grade ) SL ( Sno , Sdept , Sloc )
![Page 59: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/59.jpg)
第一范式(续)
SLC 的码为 (Sno, Cno)
Sno
Cno
Grade
Sdept
Sloc
SLC
![Page 60: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/60.jpg)
第一范式(续)
函数依赖图:
Sno
Cno
Grade
SCSL
Sno
Sdept
Sloc
![Page 61: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/61.jpg)
第一范式(续)在 SC 和 SL 中,非主属性都完全函数依赖于码了。从而使上述四个问题在一定程度上得到了一定的解决:
(1) 由于学生选修课程的情况与学生的基本情况是分开存储在两个关系中的,在 SL 关系中可以插入尚未选课的学生。
![Page 62: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/62.jpg)
第一范式(续)(2) 删除一个学生的所有选课记录,只是 SC 关
系中没有关于该学生的记录了, SL 关系中关于该学生的记录不受影响。
(3) 不论一个学生选多少门课程,他的 Sdept 和Sloc 值都只存储 1 次。这就大大降低了数据冗余。
(4) 学生转系只需修改 SL 关系中该学生元组的 Sdept 值和 Sloc 值,由于 Sdept 、 Sloc并未重复存储,因此减化了修改操作。
![Page 63: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/63.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 64: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/64.jpg)
6.2.2 第二范式( 2NF )2NF 的定义
定义 6.7 若关系模式 R 1NF∈ ,并且每一个非主属性都完全函数依赖于 R 的码,则 R 2NF∈ 。
例: SLC(Sno, Sdept, Sloc, Cno, Grade) 1NF∈ SC ( Sno , Cno , Grade ) ∈ 2NF
SL ( Sno , Sdept , Sloc ) ∈ 2NF
![Page 65: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/65.jpg)
第二范式(续)采用投影分解法将一个 1NF 的关系分解为多个
2NF 的关系,可以在一定程度上减轻原 1NF 关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个 1NF 关系分解为多个 2NF 的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。
![Page 66: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/66.jpg)
第二范式(续)
例: 2NF 关系模式 SL(Sno, Sdept, Sloc) 中函数依赖: Sno→Sdept
Sdept→Sloc
Sno→Sloc
SL
Sno
Sdept
Sloc
Sloc传递函数依赖于 Sno ,即 SL 中存在非主属性对码的传递函数依赖。
![Page 67: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/67.jpg)
第二范式(续) SL 关系存在的问题: (1) 插入异常
如果某个系因种种原因(例如刚刚成立),目前暂时没有在校学生,我们就无法把这个系的信息存入数据库。
(2) 删除异常如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系的信息也丢掉了。
![Page 68: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/68.jpg)
第二范式(续)(3) 数据冗余度大
每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生人数相同。
(4) 修改复杂 当学校调整学生住处时,由于关于每个系的住处信息是重复存储的,修改时必须同时更新该系所有学生的 Sloc 属性值。
所以 SL仍不是一个好的关系模式。
![Page 69: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/69.jpg)
第二范式(续)原因
Sloc传递函数依赖于 Sno
解决方法 采用投影分解法,把 SL 分解为两个关系模式,以消除传递函数依赖:
SD ( Sno , Sdept ) DL ( Sdept , Sloc )SD 的码为 Sno , DL 的码为 Sdept 。
SL
Sno
Sdept
Sloc
![Page 70: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/70.jpg)
第二范式(续)SD 的码为 Sno , DL 的码为 Sdept 。
Sno Sdept
SD
Sdept Sloc
DL
![Page 71: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/71.jpg)
第二范式(续)在分解后的关系模式中既没有非主属性对码的部分函数依赖也没有非主属性对码的传递函数依赖,在一定程度上解决了上述四个问题:
(1) DL 关系中可以插入无在校学生的系的信息。(2) 某个系的学生全部毕业了,只是删除 SD 关系中的相应元
组, DL 关系中关于该系的信息仍存在。(3) 关于系的住处的信息只在 DL 关系中存储一次。(4) 当学校调整某个系的学生住处时,只需修改 DL 关系中一
个相应元组的 Sloc 属性值。
![Page 72: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/72.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 73: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/73.jpg)
6.2.3 第三范式( 3NF ) 3NF 的定义
定义 6.8 关系模式 R<U , F> 中若不存在这样的码 X 、属性组 Y 及非主属性 Z ( Z Y ) , 使得 X→Y , Y → X , Y→Z ,成立,则称 R<U , F> ∈3NF 。
例, SL(Sno, Sdept, Sloc) 2NF∈ SD ( Sno , Sdept ) ∈ 3NF DL ( Sdept , Sloc )∈ 3NF
学生 ( 学号,姓名,宿舍楼,宿舍号 ) 3NF∈
![Page 74: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/74.jpg)
第三范式(续) 如果 R 3NF∈ ,则 R也是 2NF 。 若 R 3NF∈ ,则 R 的每一个非主属性既不部分
函数依赖于候选码也不传递函数依赖于候选码。采用投影分解法将一个 2NF 的关系分解为多个
3NF 的关系,可以在一定程度上解决原 2NF 关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个 2NF 关系分解为多个 3NF 的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。
![Page 75: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/75.jpg)
第三范式(续)例:在关系模式 STJ ( S , T , J )中, S 表
示学生, T 表示教师, J 表示课程。 函数依赖:
假设每一教师只教一门课。每门课由若干教师教,但某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称。于是有:
(S , J)→T , (S , T)→J , T→J
![Page 76: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/76.jpg)
第三范式(续)
S
J
TS
T
J
STJ
![Page 77: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/77.jpg)
第三范式(续)(S , J) 和 (S , T) 都可以作为候选码。 STJ 3NF∈ T→J ,即 T 是决定属性集,可是 T
只是主属性,它既不是候选码,也不包含候选码。
![Page 78: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/78.jpg)
第三范式(续) 存在的问题:
(1) 插入异常如果某个教师开设了某门课程,但尚未有学生选修,则有关信息也无法存入数据库中。
![Page 79: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/79.jpg)
第三范式(续)
(2) 删除异常如果选修过某门课程的学生全部毕业了,在删除这些学生元组的同时,相应教师开设该门课程的信息也同时丢掉了。
(3) 数据冗余度大虽然一个教师只教一门课,但每个选修该教师该门课程的学生元组都要记录这一信息。
![Page 80: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/80.jpg)
第三范式(续)(4) 修改复杂
某个教师开设的某门课程改名后,所有选修了该教师该门课程的学生元组都要进行相应修改。
因此虽然 STJ 3NF∈ ,但它仍不是一个理想的关系模式。
![Page 81: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/81.jpg)
第三范式(续)原因:
主属性 J 依赖于 T ,即主属性 J 部分依赖于码(S, T) 。
解决方法: 采用投影分解法,将 STJ 分解为二个关系模式:
SJ(S , J)
TJ(T , J)
![Page 82: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/82.jpg)
第三范式(续)
S
J
TS
T
J
STJ
![Page 83: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/83.jpg)
第三范式(续) SJ 的码为( S , J ), TJ 的码为 T 。
S J
ST
T J
TJ
![Page 84: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/84.jpg)
第三范式(续)在分解后的关系模式中没有任何属性对码的部分函数依赖和传递函数依赖。它解决了上述四个问题:
(1)TJ 关系中可以存储所开课程尚未有学生选修的教师信息。
(2) 选修过某门课程的学生全部毕业了,只是删除 SJ 关系中的相应元组,不会影响 TJ 关系中相应教师开设该门课程的信息。
![Page 85: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/85.jpg)
第三范式(续)
(3) 关于每个教师开设课程的信息只在 TJ 关系中存储一次。
(4) 某个教师开设的某门课程改名后,只需修改TJ 关系中的一个相应元组即可。
![Page 86: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/86.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 87: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/87.jpg)
6.2.4 BC 范式( BCNF ) BCNF ( Boyce Codd Normal Form )是由 Bo
yce 和 Codd 提出的,比 3NF 更进了一步。通常认为 BCNF 是修正的第三范式,所以有时也称为第三范式。
BCNF 的定义定义 6.9 设关系模式 R<U , F> 1NF∈ ,如果对于 R 的每个函数依赖 X→Y ,若 Y 不属于 X ,则 X 必含有候选码,那么 R BCNF∈ 。
![Page 88: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/88.jpg)
BC 范式(续)
换句话说,在关系模式 R<U , F> 中,如果每一个决定属性集都包含候选码,则 R BCNF∈ 。
例: STJ ( S , T , J )∈ 3NF
SJ ( S , J )∈ BCNF
TJ ( T , J )∈ BCNF
![Page 89: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/89.jpg)
BC 范式(续)采用投影分解法将一个 3NF 的关系分解为多个 BC
NF 的关系,可以进一步解决原 3NF 关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
BCNF 的关系模式所具有的性质⒈ 所有非主属性都完全函数依赖于每个候选码。⒉ 所有主属性都完全函数依赖于每个不包含它的候选码。⒊ 没有任何属性完全函数依赖于非码的任何一组属性。
![Page 90: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/90.jpg)
BC 范式(续) 如果关系模式 R BCNF∈ ,必定有 R 3NF∈ 。
如果一个关系数据库中的所有关系模式都属于BCNF ,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
![Page 91: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/91.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 92: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/92.jpg)
6.2.5 多值依赖与第四范式( 4NF )
例子
一、多值依赖
二、第四范式( 4NF )
![Page 93: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/93.jpg)
多值依赖与第四范式(续)
例子
属于 BCNF 的关系模式 :– 函数依赖 : 一个完美的关系模式– 多值依赖 :
例 : 设学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。用关系模式 Teaching(C, T, B) 来表示课程 C 、教师T 和参考书 B 之间的关系。
![Page 94: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/94.jpg)
多值依赖与第四范式(续)
……
…
课 程 C 教 员 T 参 考 书 B
物理
数学
计算数学
李 勇王 军
李 勇张 平
张 平周 峰
普通物理学光学原理
物理习题集
数学分析微分方程高等代数
数学分析
表 6.1
![Page 95: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/95.jpg)
多值依赖与第四范式(续)
普通物理学光学原理物理习题集普通物理学光学原理物理习题集
数学分析微分方程高等代数数学分析微分方程高等代数
…
李 勇李 勇李 勇王 军王 军王 军李 勇李 勇李 勇张 平张 平张 平 …
物 理物 理物 理物 理物 理物 理数 学数 学数 学数 学数 学数 学 …
参考书 B教员 T课程 C
用二维表表示:表 6.2 Teaching
![Page 96: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/96.jpg)
多值依赖与第四范式(续) Teaching BCNF: Teach∈ 具有唯一候选码 (C ,
T , B) , 即全码。
Teaching 模式中存在的问题 (1) 数据冗余度大:有多少名任课教师,参考书就要存储多少次。
![Page 97: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/97.jpg)
多值依赖与第四范式(续) Teaching 模式中存在的问题
(2)增加操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插入多少个元组。
例如物理课增加一名教师刘关,需要插入两个元组:
(物理,刘关,普通物理学), (物理,刘关,光学原理)
![Page 98: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/98.jpg)
多值依赖与第四范式(续) Teaching 模式中存在的问题(3)删除操作复杂:某一门课要去掉一本参考书,该课程
有多少名教师,就必须删除多少个元组。
(4) 修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组。
产生原因参考书的取值和教师的取值是彼此独立毫无关系的,都只取决于课程名。
![Page 99: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/99.jpg)
一、多值依赖
定义定义 6.10 设 R(U) 是属性集 U 上的一个关系模式, X 、 Y 和 Z 是 U 的子集,并且 Z = U- X- Y ,多值依赖 X→→Y 成立当且仅当对 R 的任一关系r , r 在( X , Z )上的每个值对应一组 Y 的值,这组值仅仅决定于 X 值而与 Z 值无关。
例 Teaching ( C,T,B )
![Page 100: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/100.jpg)
多值依赖(续)
平凡多值依赖和非平凡的多值依赖
– 若 X→→Y ,而 Z = φ ,则称 X→→Y 为平凡的多值依赖。
– 否则称 X→→Y 为非平凡的多值依
赖。
![Page 101: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/101.jpg)
多值依赖(续) 多值依赖的性质
( 1 )多值依赖具有对称性。 若 X→→Y ,则 X→→Z ,其中 Z = U- X-
Y
多值依赖的对称性可以用完全二分图直观地表示出来。
( 2 )多值依赖具有传递性。 若 X→→Y , Y→→Z , 则 X→→Z -Y 。
![Page 102: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/102.jpg)
多值依赖的对称性
Xi
Zi1 Zi2 … Zim
Yi1 Yi2 … Yin
![Page 103: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/103.jpg)
多值依赖的对称性
物 理 普通物理学 光学原理 物理习题集
李勇 王军
![Page 104: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/104.jpg)
多值依赖(续)( 3 )函数依赖是多值依赖的特殊情况。 若 X→Y ,则 X→→Y 。
( 4 )若 X→→Y , X→→Z ,则 X→→Y Z 。
( 5 )若 X→→Y , X→→Z ,则 X→→Y∩Z 。
( 6 )若 X→→Y , X→→Z ,则 X→→Y-Z ,X→→Z -Y 。
![Page 105: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/105.jpg)
多值依赖(续) 多值依赖与函数依赖的区别(1) 有效性
– 多值依赖的有效性与属性集的范围有关。• 若 X→→Y 在 U 上成立,则在 W ( X Y W U )上
一定成立;反之则不然,即 X→→Y 在 W ( W U )上成立,在 U 上并不一定成立。
• 原因:多值依赖的定义中不仅涉及属性组 X 和 Y ,而且涉及 U 中其余属性 Z 。
• 一般地,在 R ( U )上若有 X→→Y 在 W ( W U )上成立,则称 X→→Y 为 R ( U )的嵌入型多值依赖。
![Page 106: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/106.jpg)
多值依赖(续)– 函数依赖 X→Y 的有效性仅决定于 X 、 Y
这两个属性集的值• 只要在 R ( U )的任何一个关系 r 中,元组在
X 和 Y 上的值满足定义 6.l ,则函数依赖 X→Y
在任何属性集 W ( X Y W U )上成立。
![Page 107: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/107.jpg)
多值依赖(续)
(2) – 若函数依赖 X→Y 在 R (U) 上成立,则对于
任何 Y' Y均有 X→Y' 成立。– 多值依赖 X→→Y 若在 R(U) 上成立,不能断言对于任何 Y' Y 有 X→→Y' 成立。
![Page 108: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/108.jpg)
二、第四范式( 4NF )定义
定义 6.11 关系模式 R<U , F> 1NF∈ ,如果对于 R 的每个非平凡多值依赖 X→→Y ( Y X ), X 都含有候选码,则 R 4NF∈ 。
– 4NF 就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。 4NF 所允许的非平凡多值依赖实际上是函数依赖。
![Page 109: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/109.jpg)
第四范式(续)如果一个关系模式是 4NF , 则必为
BCNF 。
![Page 110: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/110.jpg)
第四范式(续)
例: Teach(C,T,B)– 由于 Teach(C,T,B) 中存在非平凡的多值依
赖 C→→T ,且 C 不是候选码,因此 Teach不属于 4NF 。
– 这正是它之所以存在数据冗余度大,插入和删除操作复杂等弊病的根源。
![Page 111: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/111.jpg)
第四范式(续)– 解决方法
• 用投影分解法把 Teach 分解为如下两个 4NF 关系模式: CT(C, T)
CB(C, B)• CT 4NF∈ 。 C→→T 是平凡多值依赖
CT 中不存在既非平凡也非函数依赖的多值依赖。
• CB 4NF∈ 。
![Page 112: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/112.jpg)
第四范式(续)分解后 Teach 关系中的几个问题可以得到解决:
(1) 参考书只需要在 CB 关系中存储一次。
(2) 当某一课程增加一名任课教师时,只需要在 CT 关系中增加一个元组。
(3) 某一门课要去掉一本参考书,只需要在 CB 关系中删除一个相应的元组。
(4) 某一门课要修改一本参考书,只需要修改 CB关系中一个相应的元组。
![Page 113: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/113.jpg)
6.2 规范化
6.2.1 第一范式( 1NF )6.2.2 第二范式( 2NF )6.2.3 第三范式( 3NF )6.2.4 BC 范式( BCNF )6.2.5 多值依赖与第四范式( 4NF )6.2.6 规范化
![Page 114: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/114.jpg)
6.2.6 规范化 关系数据库的规范化理论是数据库逻辑设
计的工具。
一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。
规范化程度可以有 6 个不同的级别,即 6个范式。
![Page 115: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/115.jpg)
规范化(续) 规范化程度过低的关系不一定能够很好地
描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题,解决方法就是对其进行规范化,转换成高级范式。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。
![Page 116: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/116.jpg)
规范化(续) 关系模式规范化的基本步骤 1NF ↓ 消除非主属性对码的部分函数依赖消除决定属性 2NF集非码的非平 ↓ 消除非主属性对码的传递函数依赖凡函数依赖 3NF ↓ 消除主属性对码的部分和传递函数依
赖 BCNF ↓ 消除非平凡且非函数依赖的多值依赖 4NF
![Page 117: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/117.jpg)
规范化(续)– 规范化的基本思想是逐步消除数据依
赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即采用“一事一地”的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化。
![Page 118: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/118.jpg)
规范化(续)– 不能说规范化程度越高的关系模式就越好。在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。这也就是说,上面的规范化步骤可以在其中任何一步终止。
![Page 119: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/119.jpg)
第六章 关系数据理论
6.1 数据依赖
6.2 规范化
6.3 数据依赖的公理系统
6.4 模式的分解
![Page 120: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/120.jpg)
6.3 数据依赖的公理系统
逻辑蕴含定义 6.11 对于满足一组函数依赖 F 的关系模式 R <U , F> ,其任何一个关系r ,若函数依赖 X→Y 都成立(即 r 中任意两元组 t , s ,若 t[X]=s[X] ,则 t[Y ]
= s[Y] ),则称 F 逻辑蕴含 X →Y 。
![Page 121: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/121.jpg)
数据依赖的公理系统(续)Armstrong 公理系统
– 一套推理规则,是模式分解算法的理论基础
– 用途•求给定关系模式的码• 从一组函数依赖求得蕴含的函数依赖
– 内容
![Page 122: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/122.jpg)
1. Armstrong 公理系统Armstrong 公理系统 设 U 为属性集总体, F 是 U 上的
一组函数依赖, 于是有关系模式 R <U , F > 。对 R <U , F> 来说有以下的推理规则:– Al. 自反律 (Reflexivity) :若 Y X U ,则 X →Y
为 F 所蕴含。– A2.增广律 (Augmentation) :若 X→Y 为 F 所蕴含,
且 Z U ,则 XZ→YZ 为 F 所蕴含。– A3.传递律 (Transitivity) :若 X→Y 及 Y→Z 为 F
所蕴含,则 X→Z 为 F 所蕴含。注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于 F 。
![Page 123: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/123.jpg)
Armstrong 公理系统(续)
定理 6.l Armstrong推理规则是正确的。
证( l )自反律 设 Y X U 。
对 R <U , F> 的任一关系 r 中的任意两个元组 t , s :若 t[X]=s[X] ,由于 Y X ,有 t[y]=s[y] ,所以 X→Y 成立 .
自反律得证。
![Page 124: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/124.jpg)
Armstrong 公理系统(续)
(2)增广律 设 X→Y 为 F 所蕴含,且 Z U 。
设 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 所蕴含 .
增广律得证。
![Page 125: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/125.jpg)
Armstrong 公理系统(续)(3) 传递律 设 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 所蕴含 .
传递律得证。
![Page 126: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/126.jpg)
2. 导出规则1.根据 A1 , A2 , A3 这三条推理规则可以得到下面三条推理规则:
– 合并规则:由 X→Y , X→Z ,有 X→YZ 。 ( A2 , A3 ) X→Y X , XY →ZY
– 伪传递规则:由 X→Y , WY→Z ,有 XW→Z 。 ( A2 , A3 ) XW→YW
– 分解规则:由 X→Y 及 ZY ,有 X→Z 。 ( A1 , A3 ) ZY , Y→Z
![Page 127: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/127.jpg)
导出规则
2.根据合并规则和分解规则,可得引理 6.1
引理 6.l X→A1 A2…Ak 成立的充分必要条件是 X→Ai 成立( i=l , 2 ,…, k )。
![Page 128: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/128.jpg)
3. 函数依赖闭包闭包
定义 6.l2 在关系模式 R<U , F> 中为 F 所逻辑蕴含的函数依赖的全体叫作 F 的闭包,记为 F+ 。
定义 6.13 设 F 为属性集 U 上的一组函数依赖,X U , XF
+ ={ A|X→A能由 F根据 Armstrong公理导出 } , XF
+ 称为属性集 X 关于函数依赖集F 的闭包。
![Page 129: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/129.jpg)
F 的闭包F={ X→Y,Y→Z },
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,
XY → XYZ, XZ → XYZ, XYZ → XYZ
}
![Page 130: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/130.jpg)
函数依赖闭包 关于闭包的引理引理 6.2 设 F 为属性集 U 上的一组函数依赖, X ,Y U , X→Y能由 F根据 Armstrong 公理导出的充分必要条件是 Y XF
+ 。
– 引理 6.2 可由引理 6.1 得出– 引理 6.2 的用途
• 将判定 X→Y 是否能由 F根据 Armstrong 公理导出的问题,就转化为求出 XF
+ ,判定 Y 是否为 XF
+ 的子集的问题。
![Page 131: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/131.jpg)
函数依赖闭包 求闭包的算法算法 6.l 求属性集 X ( X U )关于 U 上
的函数依赖集 F 的闭包 XF+ 。
输入: X , F
输出: XF+
步骤:
![Page 132: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/132.jpg)
函数依赖闭包( 1 )令 X ( 0 ) =X , i=0
( 2 )求 B ,这里 B = { A |( V)( W)(V→WF
∧V X ( i )∧ A W)} ;( 3 ) X ( i+1 ) =B∪X ( i ) ( 4 )判断 X ( i+1 ) = X ( i )吗 ?
( 5 )若相等或 X ( i ) =U , 则 X ( i )就是 XF+ ,
算法终止。( 6 )若否,则 i=i+l ,返回第( 2 )步。
![Page 133: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/133.jpg)
函数依赖闭包
对于算法 6.l , 令 ai =|X ( i ) | , {ai } 形成一个
步长大于 1 的严格递增的序列,序列的上界是 | U | ,因此该算法最多 |U| - |X| 次循环就会终止。
![Page 134: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/134.jpg)
函数依赖闭包[ 例 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 。
![Page 135: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/135.jpg)
函数依赖闭包
(2)因为 X ( 0 )≠ X ( 1 ) ,所以再找出左部为 AB
CD 子集的那些函数依赖,又得到 AB→C , B
→D , C→E , AC→B , 于是 X ( 2 ) =X ( 1 )∪ BCDE=ABCDE 。
(3)因为 X ( 2 ) =U ,算法终止
所以( AB ) F+ =ABCDE 。
![Page 136: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/136.jpg)
4. Armstrong 公理系统的有效性与完备性
有效性与完备性的含义
– 有效性:由 F 出发根据 Armstrong 公理推导出来的每一个函数依赖一定在F+ 中
– 完备性: F+ 中的每一个函数依赖,必定可以由 F 出发根据 Armstrong 公理推导出来
![Page 137: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/137.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
有效性与完备性的证明定理 6.2 Armstrong 公理系统是有效的、
完备的。
证明:1. 有效性 可由定理 6.l 得证
![Page 138: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/138.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
2. 完备性只需证明逆否命题 : 若函数依赖 X→Y
不能由 F 从 Armstrong 公理导出,那么它必然不为 F 所蕴含
分三步证明:
![Page 139: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/139.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
(1) 若 V→W 成立,且 V XF+ ,则 W XF
+
证 因为 V XF+ ,所以有 X→V 成立;
因为 X →V , V→W ,于是 X→W 成立 所以 W XF
+ 。
(2) 构造一张二维表 r ,它由下列两个元组构成,可以证明 r 必是 R ( U , F )的一个关系,即 F 中的全部函数依赖在 r 上成立。
![Page 140: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/140.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
XF+ U-XF
+
11......100......0 11......111......1
若 r 不是 R<U , F> 的关系,则必由于 F 中有函数依赖 V→W 在 r 上不成立所致。由 r 的构成可知, V 必定是 XF
+ 的 子 集 ,而 W 不 是 XF+ 的 子 集 , 可 是 由 第
( 1 )步, W XF+ ,矛盾。所以 r 必是 R<U , F> 的
一个关系。
![Page 141: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/141.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
(3) 若 X→Y 不能由 F 从 Armstrong 公理导出,则 Y 不是 XF
+ 的子集。(引理 6.2 )
因此必有 Y 的子集 Y’ 满足 Y’U-XF+ ,
则 X→Y 在 r 中不成立,即 X→Y 必不为 R<U , F> 蕴含。
![Page 142: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/142.jpg)
Armstrong 公理系统的有效性与完备性( 续 )
Armstrong 公理的完备性及有效性说明 :
1.1. ““蕴含” 蕴含” == “== “导出” 是等价的概念导出” 是等价的概念
2. F+ : F+ 可以说成由 F 出发借助 Armstrong 公理导出导出
的的函数依赖的集合
3. F+ :为 F 所逻辑蕴含的蕴含的函数依赖的全体(定义 6.l2
)
![Page 143: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/143.jpg)
5. 函数依赖集等价
函数依赖集等价定义
定义 6.14 如果 G+=F+ ,就说函数依赖集F覆盖 G ( F 是 G 的覆盖,或 G 是 F 的覆盖),或 F 与 G 等价。
![Page 144: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/144.jpg)
函数依赖集等价函数依赖集等价的充要条件引理 6.3 F+ = G+ 的充分必要条件是 F G+ ,和 G F+ 。证 : 必要性显然,只证充分性。( 1 )若 FG+ ,则 XF
+ XG++ 。
( 2 )任取 X→YF+ 则有 Y XF+ XG+
+ 。 所以 X→Y (G+ ) += G+ 。即 F+ G+ 。
( 3 )同理可证G+ F+ ,所以 F+ = G+ 。
![Page 145: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/145.jpg)
函数依赖集等价
要判定 F G+ ,只须逐一对 F 中的函数
依赖 X→Y ,考察 Y 是否属于 XG++ 就
行了。因此引理 6.3给出了判断两个函数依赖集等价的可行算法。
![Page 146: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/146.jpg)
6. 最小依赖集极小函数依赖集
定义 6.15 如果函数依赖集 F 满足下列条件,则称 F 为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
(1) F 中任一函数依赖的右部仅含有一个属性。 (2) F 中不存在这样的函数依赖 X→A ,使得 F
与F-{X→A} 等价。
(3) F 中不存在这样的函数依赖 X→A , X 有真 子集 Z使得 F-{X→A} {Z→A}∪ 与 F 等价。
![Page 147: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/147.jpg)
最小依赖集[ 例 2] 对于 6.l节中的关系模式 S<U , F> ,其中: U={ SNO , SDEPT , MN , CNAME , G } , F={ SNO→SDEPT , SDEPT→MN ,( SNO , CNAME )→ G
}
设 F’={SNO→SDEPT , SNO→MN , SDEPT→MN , (SNO , CNAME)→G , (SNO , SDEPT)→SDEPT}
F 是最小覆盖,而 F ’ 不是。因为: F ’-{SNO→MN} 与 F ’ 等价 F ’-{(SNO , SDEPT)→SDEPT}也与 F ’ 等价
![Page 148: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/148.jpg)
7. 极小化过程定理 6.3 每一个函数依赖集 F均等价于一个极小函数依
赖集 Fm 。此 Fm 称为 F 的最小依赖集。
证 构造性证明,依据定义分三步对 F进行“极小化处理”,找出 F 的一个最小依赖集。
(1)逐一检查 F 中各函数依赖 FDi : X→Y , 若 Y=A1A2 …Ak , k>2 , 则用 {X→Aj |j=1 , 2 ,…, k} 来取代 X→Y 。
引理 6.1保证了 F变换前后的等价性。
![Page 149: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/149.jpg)
极小化过程
(2)逐一检查 F 中各函数依赖 FDi : X→A ,
令 G=F-{X→A} ,
若 AXG+ , 则从 F 中去掉此函数依赖。
由于 F 与 G =F-{X→A} 等价的充要条件是 AXG+
因此 F变换前后是等价的。
![Page 150: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/150.jpg)
极小化过程(3)逐一取出 F 中各函数依赖 FDi : X→A , 设 X=B1B2…Bm , 逐一考查Bi ( i=l , 2 ,…, m ), 若 A ( X-Bi ) F
+ , 则以 X-Bi 取代 X 。
由于 F 与 F-{X→A} {∪ Z→A} 等价的充要条件是 AZF+ ,
其中 Z=X-Bi
因此 F变换前后是等价的。
![Page 151: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/151.jpg)
极小化过程
由定义,最后剩下的 F 就一定是极小依赖集。
因为对 F 的每一次“改造”都保证了改造前后的两个函数依赖集等价,因此剩下的 F 与原来的 F 等价。
证毕
![Page 152: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/152.jpg)
极小化过程
定理 6.3 的证明过程也是求 F 极小依赖集的过程。
![Page 153: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/153.jpg)
极小化过程
[ 例 3] F = {A→B , B→A , B→C , A→C , C→A}
F 的最小依赖集: Fm1= {A→B , B→C , C→A}
![Page 154: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/154.jpg)
极小化过程
F 的最小依赖集 Fm 不一定是唯一的,
它与对各函数依赖 FDi 及 X→A 中
X 各属性的处置顺序有关。
![Page 155: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/155.jpg)
极小化过程[ 例 3] (续) F = {A→B , B→A , B→C , A→C , C→A}
Fm1 、 Fm2 都是 F 的最小依赖集: Fm1= {A→B , B→C , C→A}
Fm2= {A→B , B→A , A→C , C→A}
![Page 156: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/156.jpg)
极小化过程
极小化过程 ( 定理 6.3 的证明 )也是检验 F 是否为极小依赖集的一个算法
– 若改造后的 F 与原来的 F 相同,说明F 本身就是一个最小依赖集
![Page 157: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/157.jpg)
极小化过程
在 R<U , F> 中可以用与 F 等价的依赖集 G 来取代 F
–原因:两个关系模式 R1 <U , F> , R2<U ,
G> ,如果 F 与 G 等价,那么 R1 的关系一定
是 R2 的关系。反过来, R2 的关系也一定是
R1 的关系。
![Page 158: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/158.jpg)
第六章 关系数据理论
6.1 数据依赖
6.2 规范化
6.3 数据依赖的公理系统
6.4 模式的分解
![Page 159: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/159.jpg)
6.4 模式的分解关系模式的规范化过程是通过对关
系模式的分解来实现的– 把低一级的关系模式分解为若干个高一级的
关系模式的方法并不是唯一的– 在这些分解方法中,只有能够保证分解后的
关系模式与原关系模式等价的方法才有意义
![Page 160: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/160.jpg)
模式的分解(续) 将一个关系模式 R<U,F> 分解为若干个关系
模式 R1<U1,F1> , R2<U2,F2> ,… , Rn<Un,
Fn> (其中 U=U1 U∪ 2 … U∪ ∪ n ,且不存在Ui Uj , Fi 为 F 在 Ui 上的投影),意味着相应地将存储在一个二维表 t 中的数据分散到若干个二维表 t1 , t2 ,… , tn 中去(其中 ti 是 t 在属性集 Ui 上的投影)。
![Page 161: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/161.jpg)
模式的分解(续)例:对于关系模式 SL ( Sno , Sdept , Slo
c ), SL 中有下列函数依赖: Sno→Sdept Sdept→Sloc Sno→Sloc已知 SL 2NF∈ ,该关系模式存在插入异常、删除异常、数据冗余度大和修改复杂的问题。因此需要分解该关系模式,使成为更高范式的关
系模式。分解方法可以有很多种。
![Page 162: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/162.jpg)
模式的分解(续)假设下面是该关系模式的一个关系: SL ────────────────── Sno Sdept Sloc ─────────
───────── 95001 CS A 95002 IS B 95003 MA C 95004 IS B 95005 PH B ───────
───────────
![Page 163: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/163.jpg)
模式的分解(续)– 第一种分解方法将 SL 分解为下面三个关系模式: SN(Sno)
SD(Sdept)
SO(Sloc)
![Page 164: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/164.jpg)
模式的分解(续)分解后的关系为: SN ────── SD ────── SO ──────
Sno Sdept Sloc ────── ────── ──────
95001 CS A 95002 IS B 95003 MA C 95004 PH ───── 95005 ────── ──────
![Page 165: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/165.jpg)
模式的分解(续)SN 、 SD 和 SO 都是规范化程度很高的关系模式( 5NF )。但分解后的数据库丢失了许多信息,例如无法查询 95001 学生所在系或所在宿舍。因此这种分解方法是不可取的。
如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息。
![Page 166: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/166.jpg)
模式的分解(续)– 第二种分解方法将 SL 分解为下面二个关系模式: NL(Sno, Sloc) DL(Sdept, Sloc)分解后的关系为: NL ──────────── DL ────────────
Sno Sloc Sdept Sloc ──────────── ────────────
95001 A CS A 95002 B IS B 95003 C MA C 95004 B PH B 95005 B ──────────── ──────────
![Page 167: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/167.jpg)
模式的分解(续)对 NL 和 DL 关系进行自然连接的结果为: NL DL Sno Sloc Sdept 95001 A CS 95002 B IS 95002 B PH 95003 C MA 95004 B IS 95004 B PH 95005 B IS 95005 B PH
![Page 168: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/168.jpg)
模式的分解(续)
NL DL比原来的 SL 关系多了三个元组 (95002, B, PH)
(95004, B, PH)
(95005, B, IS)
因此我们也无法知道原来的 SL 关系中究竟有哪些元组,从这个意义上说,此分解方法仍然丢失了信息。
![Page 169: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/169.jpg)
模式的分解(续)– 第三种分解方法
将 SL 分解为下面二个关系模式: ND(Sno, Sdept)
NL(Sno, Sloc)
分解后的关系为:
![Page 170: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/170.jpg)
模式的分解(续)ND ──────────── NL ──────────
Sno Sdept Sno Sloc
──────────── ──────────
95001 CS 95001 A
95002 IS 95002 B
95003 MA 95003 C
95004 IS 95004 B
95005 PH 95005 B
──────────── ───────────
![Page 171: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/171.jpg)
模式的分解(续)对 ND 和 NL 关系进行自然连接的结果为: ND NL ─────────────── Sno Sdept Sloc ──────────────── 95001 CS A 95002 IS B 95003 MA C 95004 CS A 95005 PH B
────────────────它与 SL 关系完全一样,因此第三种分解方法没有丢失信息。
![Page 172: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/172.jpg)
模式的分解(续) 具有无损连接性的模式分解
– 设关系模式 R<U,F>被分解为若干个关系模式 R1<U1,F1> , R2<U2,F2> ,… , Rn<Un,Fn> (其中U=U1 U2 … Un∪ ∪ ∪ ,且不存在 Ui Uj , Fi 为F 在 Ui 上的投影),若 R 与 R1 、 R2 、…、 Rn自然连接的结果相等,则称关系模式 R 的这个分解具有无损连接性( Lossless join )。
– 只有具有无损连接性的分解才能够保证不丢失信息。– 无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
![Page 173: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/173.jpg)
模式的分解(续)例:上面的第三种分解方法虽然具有无损连接性,保证了不丢失原关系中的信息,但它并没有解决插入异常、删除异常、修改复杂、数据冗余等问题。
例如 95001 学生由 CS 系转到 IS 系, ND 关系的 (95001, CS) 元组和 NL 关系的 (95001, A) 元组必须同时进行修改,否则会破坏数据库的一致性。
之所以出现上述问题,是因为分解得到的两个关系模式不是互相独立的。 SL 中的函数依赖 Sdept→Sloc既没有投影到关系模式 ND 上,也没有投影到关系模式 NL 上,而是跨在这两个关系模式上。也就是这种分解方法没有保持原关系中的函数依赖。
![Page 174: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/174.jpg)
模式的分解(续)保持函数依赖的模式分解
– 设关系模式 R<U,F>被分解为若干个关系模式 R1<U1,F1> , R2<U2,F2> ,… , Rn<Un,Fn
> (其中 U=U1 U∪ 2 … U∪ ∪ n ,且不存在 Ui
Uj , Fi 为 F 在 Ui 上的投影),若 F 所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖 Fi 所逻辑蕴含,则称关系模式 R 的这个分解是保持函数依赖的( Preserve dependency )。
![Page 175: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/175.jpg)
模式的分解(续)例:第四种分解方法 将 SL 分解为下面二个关系模式: ND(Sno, Sdept) DL(Sdept, Sloc) 这种分解方法就保持了函数依赖。
![Page 176: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/176.jpg)
模式的分解(续)判断对关系模式的一个分解是否与原关系模式等价的标准
⒈ 分解具有无损连接性 ⒉ 分解要保持函数依赖 ⒊ 分解既要保持函数依赖,又要具有无损连接性
![Page 177: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/177.jpg)
模式的分解(续)– 如果一个分解具有无损连接性,则它能够保证不丢失信息。
– 如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。
– 分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。
![Page 178: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/178.jpg)
模式的分解(续)例:上例中
第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解。第二种分解方法不具有无损连接性,也未保持函数依赖。第三种分解方法具有无损连接性,但未持函数依赖。第四种分解方法既具有无损连接性,又保持了函数依赖。
![Page 179: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/179.jpg)
模式的分解(续)规范化理论提供了一套完整的模式
分解算法,按照这套算法可以做到:– 若要求分解具有无损连接性,那么模式分解
一定能够达到 4NF 。– 若要求分解保持函数依赖,那么模式分解一
定能够达到 3NF ,但不一定能够达到 BCNF 。– 若要求分解既具有无损连接性,又保持函数
依赖,则模式分解一定能够达到 3NF ,但不一定能够达到 BCNF 。
![Page 180: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/180.jpg)
分解算法算法 6.2 判别一个分解的无损连接性算法 6.3 (合成法)转换为 3NF 的保持函数依赖的分
解算法 6.4 转换为 3NF既有无损连接性又保持函数依赖
的分解算法 6.5 (分解法)转换为 BCNF 的无损连接分解算法 6.6 达到 4NF 的具有无损连接性的分解
![Page 181: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/181.jpg)
小结
函数依赖
多值依赖
关系模式规范化的基本步骤
Armstrong 公理系统
![Page 182: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/182.jpg)
小结
一、函数依赖– 函数依赖– 平凡函数依赖与非平凡函数依赖– 完全函数依赖与部分函数依赖– 传递函数依赖– 码
![Page 183: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/183.jpg)
小结
二、多值依赖– 多值依赖– 平凡多值依赖和非平凡的多值依赖– 多值依赖的性质
• 对称性•传递性
![Page 184: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/184.jpg)
小结 三、关系模式规范化的基本步骤 1NF ↓ 消除非主属性对码的部分函数依赖消除决定属性 2NF集非码的非平 ↓ 消除非主属性对码的传递函数依赖凡函数依赖 3NF ↓ 消除主属性对码的部分和传递函数依
赖 BCNF ↓ 消除非平凡且非函数依赖的多值依赖 4NF
![Page 185: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/185.jpg)
小结
四、 Armstrong 公理系统– Armstrong 公理
• 自反律;增广律;传递律
• 合并规则;伪传递规则;分解规则
– 求函数依赖闭包
– 求极小函数依赖集
![Page 186: 教师 : 陈红 助教 : 王琪 于秀梅](https://reader038.vdocuments.mx/reader038/viewer/2022102818/56813581550346895d9cdfe2/html5/thumbnails/186.jpg)
作业 习题 2 3 5 9 12
1 证明:若 R 属于 BCNF 。那么 R 属于 3
NF ,反之不成立。2 “ 从已知的函数依赖集 F使用推理规则集推不出的函数依赖,必定不在 F + 中” ,这句话是指推理规则的有效性还是完备性?