第 4 章 关系数据理论

82
武武武武武武武武武武武武武武武 4.1 4.1 函函函函 函函函函 4.2 4.2 函函函函函函函函 函函函函函函函函 4.3 4.3 函函函函函函 函函函函函函 4.4 4.4 函函函函函函函 函函函函函函函 函4函 函函函函函函 函函函函函函 函函函函

description

第 4 章 关系数据理论. 4.1 函数依赖. 4.2 关系模式的规范化. 4.3 数据依赖公理. 4.4 关系模式的分解. 本章小结. 4.1 函数依赖. 一、问题 —— 如何构造一个关系模式 例: 假设有学生关系模式. S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE). 其中, S# — 学号、 SNAME — 学生姓名、 CLASS — 班级、 C# — 课程号、 TNAME — 教师姓名、 TAGE — 教师年龄、 ADDRESS — 教师地址、 GRADE — 成绩。. - PowerPoint PPT Presentation

Transcript of 第 4 章 关系数据理论

Page 1: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.1 4.1 函数依赖函数依赖

4.2 4.2 关系模式的规范化关系模式的规范化

4.3 4.3 数据依赖公理数据依赖公理

4.4 4.4 关系模式的分解关系模式的分解

第 4 章 关系数据理论关系数据理论

本章小结

Page 2: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.1 4.1 函数依赖函数依赖一、问题——如何构造一个关系模式 例:假设有学生关系模式

其中, S#— 学号、 SNAME— 学生姓名、 CLASS— 班级、 C#— 课程号、 TNAME— 教师姓名、 TAGE— 教师年龄、 ADDRESS— 教师地址、 GRADE— 成绩。

S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE)

关系 S 存在以下问题:1 .数据冗余度高。SNAME 、 CLASS 、 TNAME 、 TAGE 、 ADDRESS 重复存储多次。

Page 3: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖 2 .数据修改复杂。

3 .插入异常。

插入异常是指应该插入到数据库中的数据不能执行插入操作的情形。

关系 S 的主键:( S# , C# )从在 S# 、 C# 、和 (S#,c#) 上出现 NULL 值去分析。

注意:当一个元组在主键的属性上部分或全部为空时,该元组不能插入到关系中。

Page 4: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖4 .删除异常。 删除异常是指不应该删去的数据被删去的情形。 例如:选修某门课的所有学生都退选时,删除相关元组,

会丢失该课程老师的信息。 解决:关系模式分解(关系规范化) 分解为 ST(S# , SNAME , CLASS) CT(C#,TNAME) TA(TNAME,TAGE,ADDRESS) SC(S#,C#,GRADE)

Page 5: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖二、函数依赖 functional dependency, abbr. FD

设: R ( A1 , A2 ,… An)=R( U ) X , Y , Z 为 U 的不同子集

定义 4.1 : ① 函数依赖 是完整性约束的一种,它推广了关键词的概念。

If t1.X=t2.X, then t1.Y=t2.Y ② 函数依赖:若 R 的任意关系有:对 X 中的每个属性值,在

Y 中都有惟一的值与之对应,则称 Y 函数依赖于 X ,记作 XY 。

属性全集

Page 6: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖 例:指出下列关系 R 中的函数依赖。

A B C D

a1 b1 c1 d1

a1 b1 c1 d2

a1 b2 c2 d1

a2 b1 c3 d1

FD: AB->C 、 A→C 、 C→A 、 AB→D ? Insert into R values(a1, b1, c2, d1) FD = key constraint ?

Page 7: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖函数依赖与属性间的关系有: 若 X , Y 是 1 — 1 关系, 则存在 XY 或 Y X 。如学号与借书证号 若 X , Y 是 m — 1 关系, 则存在 XY 但 Y+> X 。如学号与姓名 若 X , Y 是 m — n 关系, 则 X , Y 间不存在函数依赖关系。如姓名与课程

CF: 实体间的联系NOTE: 函数依赖的方向性

Page 8: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖 例 试指出学生关系 S(S# , SNAME , CLASS , C# , TNAME ,

TAGE , ADDRESS , GRADE) 中存在的函数依赖关系。S#→SNAME (每个学号只能有一个学生姓名)S#→CLASS (每个学号只能有一个班级)C#→TNAME (设每门课程只有一个教师任教,而一个教师可教多

门课程,见 CT 表)TNAME→TAGE (每个教师只能有一个年龄)TNAME→ADDRESS (每个教师只能有一个地址)(S# , C#)→GRADE (每个学生学习一门课只能有一个成绩)(S# , C#)→SNAME 、 (S# , C#)→CLASS 、 (S# , C#)→C# 、(S# , C#)→TNAME 、 (S# , C#)→TAGE 、 (S# , C#)→ADDRESS

Page 9: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖三、函数依赖的分类 XY ,但 Y 不包含于 X 则称 X 是非平凡的函数依赖。 XY ,但 Y ⊆ X 则称 X 是平凡的函数依赖。 若 XY ,则 X 叫做决定因素。 若 XY , Y X ,则记作 : X<— —>Y 。 定义 4.2 :在 R( U) 中, X, Y, Z 为 U 的不同子集。 完全函数依赖 : 是指 XY ,且对任何 X 的真子集 X’ , 都有 X’+>Y ,记作: X F >

Y 。 部分函数依赖 : 是指 XY ,且存在 X 的真子集 X’ , 有 X’->Y , 记作: X P >

Y 。

定义 4.3 :在 R( U ) 中 传递函数依赖:是指若 XY (Y 不包含于 X) , Y +> X , 而 Y Z 。记作: X T > Z 。

Page 10: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖 左部为单属性的函数依赖一定是完全函数依赖。 左部为多属性的函数依赖,如何判断其是否为完全函数依赖? 方法:取真子集,看其能否决定右部属性。

例:试指出学生关系 S 中存在的完全函数依赖和部分函数依赖。 S#→SNAME , S#→CLASS , TNAME→TAGE , TNAME→ADDRESS , C#→TNAME 都是完全函数依赖。 (S# , C#)→GRADE 是一个完全函数依赖,因为 S#+>GRADE ,

C#+>GRADE 。

Page 11: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖

例:试指出学生关系 S 中存在的传递函数依赖。

解:因为 C#→TNAME , TNAME+>C# , TNAME→TAGE ,所以C#→TAGE 是一个传递函数依赖。类似地, C#→ADDRESS也是一个传递函数依赖。

(S# , C#)→SNAME , (S# , C#)→CLASS ,

(S# , C#)→TNAME , (S# , C#)→TAGE ,

(S# , C#)→ADDRESS 都是部分函数依赖,因为 S#→SNAME , S#→CLASS , C#→TNAME , C#→TAGE , C#→ADDRESS 。

Page 12: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖

四、候选键 用函数依赖的概念来定义键。定义 4.4 : 设 X 为 R<U , F> 中的属性或属

性组合,若 X F > U 则 X 为 R

的候选键。 说明: X F >

U X -> U X 能决定整个元组 X’+> U X 中无多余的属性

术语: 主键 主属性 : 侯选键中的属性 非主属性 全键:整个属性组为键 例: R(顾客,商品,日期 )

Page 13: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖 例:试指出下列关系 R 中的侯选键、主属性和非主属性。

A D E

a1

d1 e2

a2

d6 e2

a3

d4 e3

a4

d4 e4解:关系 R 的侯选键为: A , (D,E)

关系 R 的主属性为: A , D , E

关系 R 的非主属性:无

函数依赖判断: A->D? D->A? … AD->E?…

候选键判断 : A->ADE?… AD->ADE?…

Page 14: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖

例 1. R(A, B, C, D) , F={A->B, A->C, AB->D}解:由 AB->A(自反律 ) 和 A->C(已知 ) 得: AB->C( 传递律 ) 又因为 AB->A (自反律 ) , AB->B (自反律 ) 和 AB->D (已知 )

得: AB->ABCD 。 AB 是 R 的唯一候选键,同时也是 R 的主键。

Page 15: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.14.1 函数依赖函数依赖

例 2. R(A, B, C, D) , F={A->B, A->C, A->D, AB->D}解:由 A->A(自反律 ) 和 A->B, A->C, A->D(已知 ) 得: A-> ABCD 可知 A 是 R 的候选键 AB->ABCD ,但由于存在 A-> ABCD ,则 AB 对 ABCD 是部分函

数依赖,因此 AB 不能成为候选键。 A 是 R 的唯一候选键, A 是主键。

Page 16: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化一、关系与范式 关系的规范化是将一个低级范式的关系模式,通过关系

模式的分解转换为若干个高级范式的过程。

关系模式分解的目的:去冗余、满足约束。

关系模式的冗余性问题。例 R(A,B,C) ,无任何约束可导致冗余,若规定 FD:A->B ,则冗余可利用 FD预测到。

约束条件通过函数的多值依赖和连接依赖及范式完成。

Page 17: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化二、第一范式: 1NF定义 4.5: 若 R 的每个分量都是不可分的数据项,则 R∈1NF 。 从型上看:不存在嵌套结构 从值上看,不存在重复组 1NF 是关系模式的最低要求。

例:学生关系 S(S# , SNAME , CLASS , C# , TNAME , TAGE , ADDRESS , GRADE) 是 1NF 关系,但它存在数据冗余,插入异常和删除异常等问题。

Page 18: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化三、第二范式: 2NF 定义 4.6 若 R∈1NF ,且 R 中的每一个非主属性都完全

函数依赖于 R 的任一候选键,则 R∈2NF 。 例:学生关系 S(S# , SNAME , CLASS , C# , TNA

ME , TAGE , ADDRESS , GRADE),判断 R 是否为2NF?

侯选键为 (S# , C#) ,非主属性有: SNAME , CLASS , TNAME , TAGE , ADDRESS , GRADE

(S# , C#)- >SNAME , S# - > SNAME (S# , C#) P >SNAME S2NF( 每一个非主属性 !) 。

Page 19: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 分解为 2NF 的方法:破坏部分依赖的条件。 将满足部分函数依赖和满足完全函数依赖的属性分解到

不同的关系中。

对上例,考察非主属性和侯选键之间的函数依赖关系:(S# , C#) P >SNAME , (S# , C#) P >CLASS ,(S# , C#) P >TNAME , (S# , C#) P >TAGE ,(S# , C#) P >ADDRESS , (S# , C#) F >GRADE 区分出完全依赖和部分依赖,若是部分依赖,标记出其

中的主属性。

Page 20: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 关系 S 分解为三个关系:ST(S# , SNAME , CLASS) (只依赖 S# 的属性分解到

一个子模式中)CTA(C# , TNAME , TAGE , ADDRESS) (只依赖 C#

的属性分解到另一个子模式中)SC(S# , C# , GRADE) (完全函数依赖于候选键的属

性分解到第三个子模式中)分解后,关系 ST 、 CTA 和 SC 都为 2NF 。结论 1 :若关系 R 的侯选键是单属性的,则 R必定是 2N

F 。

Page 21: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 达到 2NF 的关系仍然可能存在问题。例如,在关系 CTA 中还存在以下问题:( 1 ) 数据冗余。一个教师承担多门课程时,教师的姓

名、年龄、地址要重复存储。( 2 ) 修改复杂。一个教师更换地址时,必须修改相关

的多个元组。( 3 ) 插入异常。一个新教师报到,需将其有关数据插

入到 CTA 关系中,但该教师暂时还未承担任何教学任务,则因缺键 C# 值而不能进行插入操作。

( 4 ) 删除异常。删除某门课程时,会丢失该课程任课教师的姓名、年龄和地址信息。

Page 22: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化四、第三范式: 3NF定义 4.7 如果关系 R 的任意一个非主属性都不传递函数依赖

于它的任意一个候选键,则 R∈3NF 。 关系 CTA(C# , TNAME , TAGE , ADDRESS) 是 2NF ,

但不是 3NF 。 候选键: C# ,非主属性: TNAME 、 TAGE 、 ADDRESS 。 由于 C#→TNAME , TNAME+>C# , TNAME→TAGE ,所

以 C# T >TAGE ,同样有 C# T >ADDRESS ,即存在非主

属性对候选键的传递函数依赖。

关系模式 R ( A , B , C , D ),键为 AB ,给出它的一个函数依赖集,使得 R 属于 2NF 而不属于 3NF

Page 23: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 分解为 3NF 的方法:破坏传递依赖的条件。 将涉及传递函数依赖中的两个依赖中的属性分解到不同的关系中。

例: CTA 中,两个传递依赖 C# T >TAGE , C# T >ADDRESS

C#→TNAME , TNAME+>C# , TNAME→TAGE 。 C#→TNAME , TNAME+>C# , TNAME→ADDRESS 。 将 CTA 分解为: CT(C# , TNAME) TA(TNAME , TAGE , ADDRESS) 则关系 CT 和 TA 都是 3NF ,关系 CTA 中存在的问题得到了解决。

Page 24: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 定理 4.1 一个 3NF 的关系必定是 2NF 。( 3NF 传递函数依赖, 2NF 完全函数依赖。) 证明:用反证法。设 R∈3NF ,但 R2NF ,则 R 中必有非主属性 A 、侯选键 X 和 X 的真子集 X‘存在,使得 X’→A 。 X’ 是侯选键 X 的真子集,有 X-X‘≠ф; A 是非主属性,

A-X≠ф, A-X‘≠ф,这样 A 、 X 、 X‘是 U 的不同子集。

X’ 是侯选键 X 的真子集,则有 X→X’ 且 X’+>X ,联合反证假设 X’→A 可知存在传递依赖( X→X’ , X’+>X , X’→A )

R 不是 3NF ,与题设矛盾。

Page 25: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 通过转为 2NF消除了部分依赖,通过转为 3NF消除了

传递依赖,问题:达到 3NF 的关系是否仍然存在问题?

例:每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称 :

Page 26: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化

解:关系 SCT 的侯选键: (S# , CNAME) 和 (S# , TNAME) 非主属性:无 ( SCT至少是一个 3NF 关系 ) 结论 2 :若关系 R 的所有属性都是主属性,则 R必定是 3NF 。

S# CNAME

TNAME

s1 英语 王平 s1 数学 刘红 s2 物理 高志强 s2 英语 陈进 s3 英语 王平

候选键判断 :

S#->S# CNAME TNAME..

取左部的相同值,判断右部。

Page 27: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化在 3NF 关系 SCT 中存在: 插入异常。例如,一个新课程和任课教师的数据,在没

有学生选课时不能插入数据库。 删除异常。例如,删除某门课的所有选课记录,会丢失

课程与教师的数据。

达到 3NF 的关系仍然可能存在问题。

Page 28: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化五、 BCNF 定义 4.8 关系模式 R<U , F>∈1NF 。若函数依赖集合 F 中的所有函数依赖 X→Y ( Y 不包含于 X )的左部都包含 R 的任一侯选键,则 R∈BCNF 。 换言之, BCNF 中的所有依赖的左部都必须包含候选键。

例:关系 SCT 是否 BCNF? 因为 TNAME→CNAME ,其左部未包含该关系的任一侯选键,所以它不是 BCNF 。

解决: BCNF 分解。

Page 29: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 分解为 BCNF 的方法: 消除不包含关系。 1. 假设 R(U) 不是 BCNF, X 是 R 的属性子集, A 是 R 的

单个属性, X->A 是导致违反 BCNF 的函数依赖,则将R 分解为 R-A 以及 XA 。

2. 若 R-A 以及 XA 仍然不是 BCNF ,则在 R-A 以及 XA递归地执行上述分解。

例 SCT : (S# , CNAME , TNAME) , FD: TNAME→CNAME 。

可分解为 SC(S# , TNAME) 和 CT(CNAME , TNAME) ,它们都是 BCNF 。

Page 30: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化定理 4.2 :一个 BCNF 的关系必定是 3NF 。( 3NF :任意的非主属性都不传递依赖于任意一个候选

键。)证明:用反证法。设 R 是一个 BCNF ,但不是 3NF ,则必存在一个非主属性 A 和候选键 X 以及属性集 Y ,使得 A 传递依赖于 X ,即 X→Y(Y 不包含于 X) , Y+>X ,Y→A 。

这就是说 Y 不包含 R 的候选键,但 Y→A却成立。 根据 BCNF 定义可知, R 不是 BCNF ,与题设矛盾。

结论 3 :任何的二元关系必定是 BCNF 。

Page 31: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化 3NF 下仍然存在插入异常和删除异常, 原因在于可能

存在主属性对候选键的部分函数依赖和传递函数依赖。

一个模式中的关系模式如果都属于 BCNF ,则在函数依赖的范畴内实现了彻底的分离,已消除了插入和删除的异常。

其它问题?

Page 32: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 4.2 关系模式的规范化关系模式的规范化六、第四范式: 4NF定义 4.10 若 R∈ 1NF , D 是 R 上的依赖集,如果对于任何一个多值依赖 XY (Y-X≠ф,XY没有包含 R 的全部属性 ) , X 都包含了 R 的一个候选关键词,则 R∈4NF 。

4NF必定是 BCNF ,但 BCNF 不一定是 4NF 。

Page 33: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

5种范式的关系:

4.2 关系模式的规范化

1NF

非规范化的关系

2NF

3NF

消除组合数据项

消除非主属性对键的部分函数依赖

消除非主属性对键的传递函数依赖

4NF

消除非平凡的多值依赖

BCNF

消除主属性对键的部分和传递函数依赖

范式的转换关系:

1NF

2NF

3NF

BCNF

4NF

Page 34: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.2 关系模式的规范化 关系的规范化是将一个低级范式的关系模式,通过关

系模式的分解转换为若干个高级范式的过程。

范式的转换过程是通过分析和消除属性间的数据依赖关系来实现的。

属性可分为键和非主属性。 2NF, 3NF考察非主属性和键的关系, BCNF考察主属性和键的关系。

属性间的依赖关系包括函数依赖和多值依赖。 1NF, 2NF, 3NF, BCNF考察了函数依赖关系; 4NF考察了多值依赖。

Page 35: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 1.阿氏公理定义 4.13 设 F 是关系模式 R 的函数依赖集, X 、 Y 是 R 的属性子集,

如果从 F 的函数依赖中能够推出 XY ,则称 F逻辑蕴涵 XY 。在 R<U , F> 中为 F 所逻辑蕴含的函数依赖全体叫 F 的闭包,记为:

F+ 。 F+={ ① F; ② F 中推出的非平凡的函数依赖; ③平凡的函数依赖: A->φ、 A->A 、 AB-> A….. } 例:有关系模式R(A,B,C),它的函依赖集 F={A→B,B→C},计算 F的闭包。

Page 36: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 Armstrong公理 (阿氏公理 ) : 对 R<U , F> 有: A1自反律:若 Y⊆X ,则 XY 。 A2增广律:若 XY ,则 XZYZ 。 A3 传递律:若 XY 、 YZ ,则 XZ 。

Note : XY 与 YX 的次序无关。

Page 37: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

证:设 s , t 是 r 的任意两个元组, r 是 R 的任意一个关系。

A1自反律:若 Y⊆X ,则 XY 。 若 s[x]=t[x],则在 s 和 t 中的 x的任何子集也必相等。 ∵ Y⊆X ,∴ s[y]=t[y] ∴ XY 。 A2增广律:若 XY ,则 XZYZ 。 若 s[xz]=t[xz],即 s[x]s[z]=t[x]t[z] 则 s[x]=t[x] 且 s[z]=t[z] ∵ XY , ∴ s[y]=t[y] ∴ s[yz]=s[y]s[z]=t[y]t[z]=t[yz] ∴ XZYZ

Page 38: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

A3 传递律:若 XY 、 YZ ,则 XZ 。 若 s[x]=t[x] ∵ XY ∴ s[y]=t[y] 又 ∵ YZ ∴ s[z]=t[z] ∴ XZ 。

Page 39: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

公理的推论: 合并规则:若 XY 、 XZ ,则 XYZ 。 分解规则:若 XYZ ,则 XY,XZ 。 伪传递规则:若 XY 、WYZ ,则WXZ 。 证明: 合并规则:∵ XY ∴ XXY (A2) 又∵ XZ ∴ XYYZ (A2) ∴ XYZ (A3)

Page 40: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

分解规则: ∵ Y⊆Y Z ∴ YZY (A1) 又∵ XYZ(已知) ∴ XY (A3) 同理可证 XZ 。伪传递规则:∵ XY ∴ WXWY (A2) 又∵ WYZ (已知 ) ∴ WXZ (A3) 定理 4.5: XA1A2…AK成立的充分必要条件是 XAi

成立。由合并律 由分解律

Page 41: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 定义 4.14: XF

+={A|XA 能由 F用阿氏公理导出 } XF

+ 称为属性集 X 关于 F 的闭包。

定理 4.6: XY 能从 F 中用阿氏公理导出的充要条件是: Y⊆XF

+

Page 42: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 定理 4.6的证明 证明: 充分性( Y⊆XF

+ -> XY ) 假设 Y⊆XF

+ ( 其中 Y=A1A2…An )

由属性闭包定义可知, XA1 , XA2… , XAn 能由阿氏公理导出,再由合并规则得 X A1A2…An ,即 XY 。

Page 43: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

必要性:( XY -> Y⊆XF+ )

假设 XY 能由阿氏公理导出 (Y=A1A2…An) 则有 XA1A2…An

由分解规则得: XA1 , XA2… , XAn

由 XF+ 的定义可知, Ai⊆ XF

+ (i=1,2,…,n) 即 Y⊆XF

+ 。

Page 44: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

ArmstrongArmstrong 公理系统公理系统 Armstrong 公理完备性的证明

证明:(构造性证明)用反证法假定存在函数依赖 XY 被 F 逻辑蕴涵,但 XY 不能用 Armstrong 公理从 F 中导出由引理二,构造 R(U) 上的关系 r 如下:

下面证明( 1 ) r 满足 F ,( 2 ) r 不满足 XY

FX

FX

FXY , Y ≠ , U ≠

r ( U )

t 1 0

s 1 1

FX

FX

Page 45: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理2. 属性闭包的计算算法 4.1 : 求属性集 X 关于 F 的闭包 XF

+(X+) 。 算法: 设 R<U , F> , A 为 U 中属性 ( 集 ) 。 (1) X(0)=X (2) X(i+1)=X(i)∪A 其中:对 F 中任一个 Y->A ,且 Y⊆X(i); 求得 X(i+1) 后,对 Y->A 做删除标记。 (3) 若 X(i+1)=X(i) 或 X(i+1) =U 则结束,否则转 (2) 。

算法会终止吗?

最多 |U-X| 步

Page 46: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

闭包的计算闭包的计算 示例 1

R< U, F >, U = (A, B, C, G, H, I), F = {AB, AC, CGH, CGI, BH}, 计算

所用依赖

AB AGB AC AGBC CGH AGBCH CGI AGBCH I

= AGBCH I

FAG)(

FAG)(

FAG)(

Page 47: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

闭包的计算闭包的计算 示例 2

R< U, F >, U = (A, B, C, D, E), F = {ABC, BD, CE, CEB, ACB}, 计算

所用依赖

ABC ABC BD ABCD CE ABCDE

= ABCDE

FAB)(

FAB)(

FAB)(

Page 48: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

闭包的计算闭包的计算 示例 3

R< U, F >, U = (A, B, C, D, E, G), F = {AE, BEAG, CEA, GD}, 计算

所用依赖

AE ABE BEAG ABEG GD ABEGD

= ABEGD

FAB)(

FAB)(

FAB)(

Page 49: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

3. 函数依赖集的等价和覆盖定义 4.15 : 如果 F+=G+ ,就说函数依赖集 F覆盖 G 或 F

与 G等价。定理 4.9: F+=G+ 的充分必要条件是 F⊆G+ ,和 G⊆F+ 。( 1 )必要性∵F 和 G等价,∴ F+=G+ ,又∵ F⊆F+ ,∴ F⊆G+

同理,∵ G⊆G+ ,∴ G⊆F+ 。( 2 )充分性任取 X→Y∈F+ ,则有 Y⊆XF

+ ( 定理 4.6)又∵ F⊆G+ (已知),∴ Y⊆XG++

∴X→Y∈(G+)+=G+ ,∴ F+⊆G+ 。同理可证 G+⊆F+ ,∴ F+=G+ ,即 F 和 G等价。

Page 50: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 如何判断函数依赖集 F 和 G 是否等价? 根据定理 4.9: 只需 F⊆G+ 和 G⊆F+ ,即证集合的包含

关系。 对每个 T ∈ F, 有 T ∈ G+;对每个 S ∈G ,有 S ∈ F+ ,

T 和 S 是形如 X->Y 的属性依赖。 证 X->Y ∈ G+,根据定理 4.6:只需 Y ⊆ XG

+

转为计算 XG+

Page 51: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

例: F={A→B , B→C}, G={A→BC , B→C},判断 F和 G 是否等价。

解:( 1 )先检查 F 中的每一个函数依赖是否属于 G+ 。 ∵AG

+=ABC ,∴ B⊆AG+ ,∴ A→B∈G+ ( 定理 4.6)

又∵ BG+=BC ,∴ C⊆BG

+ ,∴ B→C∈G+

∴F⊆G+

( 2 )然后检查 G 中的每一个函数依赖是否属于 F+ 。 ∵AF

+=ABC ,∴ BC⊆AF+ ,∴ A→BC∈F+

又∵ BF+=BC ,∴ C⊆BF

+ ,∴ B→C∈F+

∴G⊆F+

由( 1)和( 2)可得 F和 G等价。

Page 52: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理4.最小函数依赖集 定义 4.16: 若 F满足下列条件,则称其为一个最小函数依

赖集 Fm 。 (1) F中每个函数依赖的右部都是单属性; (2) 对于 F 的任一函数依赖 X→A , F-{X→A}与 F 都不等价;

(3) 对于 F中的任一函数依赖 X→A和 X的真子集 Z, (F-(X→A))U{Z→A}与 F都不等价。

最小:( 1 ) F中每个函数依赖的右部没有多余的属性; ( 2 ) F中不存在多余的函数依赖; ( 3 ) F中每个函数依赖的左部没有多余的属性。

Page 53: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理 定理 4.10: 每个 F 与 Fm等价。 如何求最小函数依赖集 Fm ? (1) 分解:使 F 中任一函数依赖的右部仅含有单属性。 (2) 删除冗余的函数依赖: 方法:对 F 中任一 XA ,在 F-{XA}中求 X+ , 若 A⊆X+ ,则 XA 为多余的。 (3)最小化左边的多余属性: 方法:对 F 中任一 XYA ,在 F 中求 X+ , 若 A⊆X+ ,则 Y 为多余的。 [ (4)检查:用公理或 (2) ]

Page 54: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理例:设有 F={B→C , C→AB , BC→A},求与 F等价的最小函数

依赖集。 分解 C→AB , F={B→C , C→A , C→B , BC→A} 判断 B→C 是否冗余, F’={C→A , C→B , BC→A} B+ = B, B→C 非冗余。 F={B→C , C→A , C→B , BC→A} 判断 C→A 是否冗余, F’={B→C, C→B , BC→A} C+ = ABC, C→A 冗余。 F={B→C , C→B , BC→A} 判断 C→B 是否冗余, F’={B→C, BC→A} C+ = C, C→B 非冗余。 F={B→C , C→B , BC→A} 判断 BC→A 是否冗余, F’={B→C , C→B} BC+ = BC, BC→A 非冗余。 F={B→C , C→B , BC→A} 判断 BC→A 。 B+ = ABC, A⊆B+ ,则 C 在 BC→A 中是多余的。 Fmin={B→C , C→B , B→A}

注意:

对当前 F求闭包

Page 55: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.3 数据依赖公理

例:设有函数依赖集 F={A→B,ABCD→E,EF→G,EF→H,ACDF→EG}

求与 F等价的最小函数依赖集。

注意:一个函数依赖集的最小集不是惟一的。例如, F={A→B , B→A , B→C , A→C , C→A} Fm1={A→B , B→C , C→A}, Fm2={A→B , B→A , A→C , C→A}。方法 1 : 无多余属性;依次判断 B->A, A->C 是否冗余;方法 2 : 无多余属性;依次判断 B->C 是否冗余。

Fmin = {A→B,ACD→E, EF→G,EF→H}

Page 56: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 对于存在数据冗余、插入异常、删除异常的关系

模式,可以通过对关系模式的分解来解决问题。关系模式分解后会带来两个问题:

( 1 )查询时的连接操作是否会丢失某些信息或多出某些信息。这引出了无损连接的概念。

( 2 )分解后的关系模式是否保持了原来的函数依赖。这是保持函数依赖性的问题。

Page 57: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解1. 等价模式分解的定义 一个关系可以有多种分解方法,如何判断分解的好与坏呢?

例:关系模式 R(S# , SD , MN),F={S#→SD , SD<—>MN}

分解一: ρ1={R1(S#) , R2(SD) , R3(MN)} 不好!无法恢复 r.分解二: ρ2={R1(S#, SD), R2(S#,MN)} 不好!丢失 SD<—>MN分解三: ρ3={R1(S# , SD) , R2(SD , MN)} 好!

Page 58: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

R(A, B, C)

A B C

1 1 2

2 2 1

A B

1 1

2 2

B C

1 2

2 1

A B C

1 1 2

2 2 1

∏AB(R) ∏BC(R) ∏AB(R) ∏BC(R)

R(A, B, C)

A B C

1 1 1

2 1 2

A B

1 1

2 1

B C

1 1

1 2

A B C

1 1 1

1 1 2

2 1 1

2 1 2

∏AB(R) ∏BC(R) ∏AB(R) ∏BC(R)

有损分解

无损分解

Page 59: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解

2.无损连接性与依赖保持性 对于 R<U , F> 中任何一个关系 r ,R 分解 ρ={R1, R2….RK} 无损连接性: r=ΠR1(r) ⋈ ΠR2(r) ⋈ … ⋈ ΠRK(r) 保持函数依赖: F ≡ ΠR1(F)∪ΠR2(F)∪… ΠRK(F) ΠRi(F)={X->Y| X->Y∈F+∧XY⊆Ri }

Ri 所蕴含的 F+

中的函数依赖

Page 60: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解例: R(A , B , C) , F={A->B , A->C} ,分解 ρ={AB ,

AC} 判断 1 : r=ΠAB(r) |X| ΠAC(r) 是无损连接分解。 判断 2: F≡ΠAB(F)∪ΠAC(F) = {A->B , A->C} 具有函数依赖保持性。

A B C

a1 b1 c1

a2 b2 c2

a3 b1 c2

r

?ρ={AB , BC}

Page 61: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 算法 4.3 无损连接性检验。 输入:关系模式 R(A1 , A2 ,…, An) ,它的函数依赖集 F ,以及分解 ρ={R1 , R2 ,…, Rk}。 输出:确定 ρ是否具有无损连接性。方法: (1) 构造一个 k 行 n 列的表,第 i 行对应于关系模式 Ri ,第 j列对应于属性 Aj。如果 Aj∈Ri ,则在第 i 行第 j列上放符号 aj,否则放符号 bij。(属于用 a代表,且位置信息用 j表示;不属于用 b代表 ,

且位置信息用 ij表示。) (2) 重复考察 F 中的每一个函数依赖,并修改表中的元素。其方法如下:取 F 中一个函数依赖 X→Y ,在 X 的分量中寻找相同的行,然后将这些行中 Y 的分量改为相同的符号,如果其中有 aj,则将 bij改为 aj;若其中无 aj,则全部改为 bij( i 是这些行的行号最小值)。

Page 62: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解(3) 如果发现表中某一行变成了 al , a2 ,…, an ,则分

解 ρ 具有无损连接性;如果 F 中所有函数依赖都不能再修改 表中的内容,且没有发现这样的行,则分解 ρ不具有无 损连接性。

Page 63: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

无损连接分解无损连接分解 示例一: U={A,B,C,D,E}, F={ABC, CD,DE}

={(A, B, C), (C, D), (D, E)}

A B C D E

ABC a1 a2 a3 b14 b15

CD b21 b22 a3 a4 b25

DE b31 b32 b33 a4 a5

A B C D E

ABC a1 a2 a3 b14 b15

CD b21 b22 a3 a4 b25

DE b31 b32 b33 a4 a5

ABC

A B C D E

ABC a1 a2 a3 a4 b15

CD b21 b22 a3 a4 b25

DE b31 b32 b33 a4 a5

CDA B C D E

ABC a1 a2 a3 a4 a5

CD b21 b22 a3 a4 a5

DE b31 b32 b33 a4 a5

DE

Page 64: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 示例二: U={A,B,C,D,E},

F={AC, BC, CD,DEC ,CEA} ={(A, D), (A, B), (B, E), (C, D, E), (A, E)}

A B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b23 b24 b25

BE b31 a2 b33 b34 a5

CDE b41 b42 a3 a4 a5

AE a1 b32 b33 b54 a5

AC

A B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b13 b24 b25

BE b31 a2 b33 b34 a5

CDE b41 b42 a3 a4 a5

AE a1 b32 b13 b54 a5

Page 65: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解

BCA B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b13 b24 b25

BE b31 a2 b13 b34 a5

CDE b41 b42 a3 a4 a5

AE a1 b32 b13 b54 a5

CDA B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b13 a4 b25

BE b31 a2 b13 a4 a5

CDE b41 b42 a3 a4 a5

AE a1 b32 b13 a4 a5

Page 66: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解

DECA B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b13 a4 b25

BE b31 a2 a3 a4 a5

CDE b41 b42 a3 a4 a5

AE a1 b32 a3 a4 a5

CEAA B C D E

AD a1 b12 b13 a4 b15

AB a1 a2 b13 a4 b25

BE a1 a2 a3 a4 a5

CDE a1 b42 a3 a4 a5

AE a1 b32 a3 a4 a5

Page 67: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 定理 4.12 设 ρ=(R1 , R2) 是 R 的一个分解, F 是 R 上的函数 依赖集,分解 ρ具有无损连接性的充分必要条件是: R1∩R2→(R1-R2)∈F+

或 R1∩R2→(R2-R1)∈F+

证明: ( 1 )充分性:设 R1∩R2→(R1-R2) ,按算法 5.2 可构造出下

表。表中省略了 a 和 b 的下标,这无关紧要。

Ri R1∩R2 R1-R2 R2-R1

R1 aa…a aa…a bb…b

R2 aa…a bb…b aa…a

只能用于判断分解为2 个子模式的情况。

Page 68: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 如果 R1∩R2→(R1-R2) 在 F 中,则可将表中第 2 行位于 (R1-R2) 列 中的所有符号都改为 a ,这样该表中第 2 行就全是 a 了,则 ρ具有无 损连接性。同理可证 R1∩R2→(R2-R1) 的情况。 如果 R1∩R2→(R1-R2) 不在 F 中,但在 F+ 中,即它可以用公理从 F 中推出来,从而也能推出 R1∩R2→Ax, 其中 Ax⊆R1-R2 ,所以可 以将 Ax列的第 2 行改为全 a ,同样可以将 R1-R2 中的其他属性的第 2 行也改为 a ,这样第 2 行就变成全 a 行。所以分解 ρ={R1 , R2} 具有 无损连接性。 同样可以证明 R1∩R2→(R2-R1) 的情况。 ( 2 )必要性:设构造的表中有一行全为 a ,例如第 1 行全为 a ,则 由函数依赖定义可知 R1∩R2→(R2-R1);如果是第 2 行全为 a ,则 R1∩R2→(R1-R2) 。定理证毕。

Page 69: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解例 : 下列分解是否具有无损连接性和函数依赖保持性。 已知: R(A,B,C) F={A→B , C→B} (1 ) ρ1={AB , BC}( 2 ) ρ2={AC , BC}

Page 70: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解

Ri A B C

AB a1 a2 b13

BC b21

a2 a3

( 1 )对 ρ1 和 F 构造表:

( 2 )检查 F={A→B , C→B} 对 A→B , A 列中无相同的行; 对 C→B, C 列中无相同的行。 ρ1 不具有无损连接性。

ρ1={AB , BC}

F={A→B , C→B}

Page 71: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 ρ1={AB , BC} F={A→B , C→B}

利用定理 4.12 解。 R1∩R2 = B (R1-R2) = A R1∩R2 +> (R1-R2) ρ1 不是无损连接分解。

Page 72: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解

Ri A B C

AC a1 b12 a3

BC b21 a2 a3

ρ2={AC , BC}

F={A→B , C→B}

对 ρ2 和 F 构造表:

检查 F={A→B , C→B} 对 C→B, C 列有相同的行,改写 B 列的相异符号为 a ,下标为列号 2 。第一行变为 a1a2a3,ρ2具有无损连接性。

Ri A B C

AC a1 a2 a3

BC b21 a2 a3

Page 73: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 ρ2={AC , BC} F={A→B , C→B}

利用定理 4.12 解。 R1∩R2 = C (R1-R2) = A; (R2-R1) = B; R1∩R2 +> (R2-R1) ρ2 是无损连接分解。

Page 74: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解3. 模式分解的方法 3NF 的保持无损连接及函数依赖的分解: 设: R<U , Fm> 1) 对 Fm 中任一 X->A ,若 XA=U 则不分解,结束。 2) 若 R 中 Z 属性在 Fm 中未出现,则所有 Z 为一个子

模式, 令 U=U-Z 。 3) 对 Fm 中 X->A1 ,… . X->An ,用合成规则合成一

个, 再对 Fm 中每个 X->A ,令 Ri=XA 。 4) R 的分解为 {R1 , R2 ,… .RK,键 }

依赖保持不需要;原包含有不需要。

Page 75: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 BCNF 的保持无损连接的分解:( 1 )令ρ={R} ;( 2 )如果ρ中所有关系模式都是 BCNF ,则转( 4 );( 3 )如果 ρ中有一个关系模式 Ri<Ui , Fi> 不是 BCNF ,

则 Ri 中必有 X→A∈Fi+(AX) ,且 X 不是 Ri 的键。设 S1=

XA , S2=Ui-A ,用分解 {S1 , S2} 代替 Ri<Ui , Fi> ,转( 2 );

( 4 )分解结束,输出 ρ。例:设 R={A,B,C,D},F={A→C , C→A , B→AC , D→AC ,

BD→A} ( 1 )将 R 分解为 3NF 且具有无损连接性和依赖保持性。 ( 2 )将 R 分解为 BCNF 且具有无损连接性。

Page 76: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

关系模式的分解算法关系模式的分解算法 示例: U={S# , SD , MN , C# , G}

F={S#SD , S#MN , SDMN , (S#,C#)G}

⒈U1={S# , SD} , F1={S#SD}

U2={S#, MN, C#, G}, F2={S#MN, (S#,C#)G}

⒉U1 = {S#, SD}, F1={S#SD} U2 = {S#, MN}, F2={S#MN}

U3 = {S#, C#, G}, F3 = {(S#,C#)G}

Page 77: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解关系模式 CTHRSG ,其中 C 表示课程, T 表示教师, H表示时

间, R 表示教室, S 表示学生, G 表示成绩。函数依赖集 F及

其所反映的语义分别为:

CT 每门课程仅有一位教师担任。

HTR 在任一时间,一个教师只能在一个教室上课。

HRC 在任一时间,每个教室只能上一门课。

HSR 在任一时间,每个学生只能在一个教室听课。

CSG 每个学生学习一门课程只有一个成绩。

Page 78: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 解:解: HSHSCTHRSGCTHRSG ,, HSHS 是关系模式的关键字是关系模式的关键字。。

⑴ ⑴ 面向面向 3NF3NF 且保持函数依赖的分解。且保持函数依赖的分解。

最小函数依赖集为 F={CT,CSG,HRC,HSR,THR}

分解为:= {CT , CSG , HRC , HSR , THR}

⑵ ⑵ 面向面向 3NF3NF既有无损连接性又保持函数依赖的分解。既有无损连接性又保持函数依赖的分解。

∵ HS 是关键字, = ∪ { HS } , HS 是 HSR 的一个子集

∴分解仍为:= {CT , CSG , HRC , HSR , THR}

Page 79: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

4.4 关系模式的分解 ⑶ 面向 BCNF 且具有无损连接性的分解。

CTHRSGKey=HS

CSGKey=CSCSG

CTHRS Key=HSCT , THR

HRC , HSR

CTKey=CCT

CHRS Key=HSCHR , HRC

HSR

CHRKey=CH , HR

CHR , HRC

CHSKey=HS HSC

Page 80: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

规范化的问题规范化的问题1. 规范化的优缺点 关系模式的分解会降低查询的效率。 所讨论的关系规范化是基于泛关系假设的,即只基于一个关系模式的规范化。但现实并不一定满足。2.反规范化的设计 对一些特定的应用不规范化,而是通过使用冗余来改进性能。例: account(帐号,支行名,余额 ) depositor(客户名,帐号 ) 每次访问帐户时,帐户持有者的名字都与帐户密码和余额一起显示。

Page 81: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

规范化的问题规范化的问题 并不是规范化程度越高越好。例: earnings(公司号,年份,数量 ) 若设计成: ( 1 )使用多个关系 ,每年建一个表。 不好!(是 BCNF ) ( 2 )使用一个关系: company_year(公司号,收入 _2000,收入 _2001 ,收入 _2002)

不好! (是 BCNF )

Page 82: 第 4 章 关系数据理论

武汉大学计算机学院数据库课程组

第 4章 关系数据库理论小结 :1. 函数依赖关系2. 关系模式的规范化

几种常见范式及其转换3. 阿氏公理及其推理规则4. 用函数依赖或 XF

+求键5. 求最小函数依赖集 Fm6. 模式分解的概念、方法

本章练习:

本章思考题: 1 、关系模式的规范化的意义? 2、 XF

+ 与 XF+ 的关系?

3、最小函数依赖集 Fm的概念与作用?