第四章 关系数据库设计理论

62
1 第第第 第第第第第第第第第 第第第第第第第第第第第第第第第 第第第第第第第第第第第第 第第第第 、, 第第第第第第第第 SQL 第第第第第第 DB 第第 第第第第第第第 第第第第第 第第第 第第第 一,一体, 第第第第第第 第第第第第第第第第第第 第第第第第第第第第 第第第第 一(, 第第第第第第第第第)? 第第第第第第第第第第第第第第第 第第第第第第第第第第第第第第第第 第第第第第第第

description

第四章 关系数据库设计理论. 前面介绍了关系数据库的基本概念、关系模型的三个组成部分,以及关系数据库的标准语言 SQL 。 我们已知关系 DB 是由一组关系组成的,那么针对一个具体问题,应该如何构造一个适合于它的数据模式(即应构造几个关系,每个关系由哪些属性组成的等)? 这就是关系数据库的模式设计问题。规范化理论正是指导我们进行设计的指南和有力工具。. 第四章 关系数据库设计理论. 4.1 数据依赖 4.2 范式 4.3 关系模式的 规范化. F 是属性间数据的依赖关系集合 ( 既是描述关系的元组语义 , 限定组成关系的各个元组必须满足的约束条件). - PowerPoint PPT Presentation

Transcript of 第四章 关系数据库设计理论

1

第四章 关系数据库设计理论

前面介绍了关系数据库的基本概念、关系模型的三个组成部分,以及关系数据库的标准语言SQL 。我们已知关系 DB 是由一组关系组成的,那么针对一个具体问题,应该如何构造一个适合于它的数据模式(即应构造几个关系,每个关系由哪些属性组成的等)?这就是关系数据库的模式设计问题。规范化理论正是指导我们进行设计的指南和有力工具。

2

第四章 关系数据库设计理论

4.1 数据依赖4.2 范式4.3 关系模式的规范化

3

4.1 数据依赖

1. 关系模式中的数据依赖关系 DB是以关系模式为基础的 DB,它利用关系描述现实世界。一个关系即可用来描述实体及其属性,也可用来描述实体间的联系。关系模式是用来定义关系的,是对关系的描述。要清楚地刻画关系,关系模式应该是五元组 :

R(U,D,DOM,F)

F 是属性间数据的依赖关系集合 ( 既是描述关系的元组语义 ,限定组成关系的各个元组必须满足的约束

条件)

F 是属性间数据的依赖关系集合 ( 既是描述关系的元组语义 ,限定组成关系的各个元组必须满足的约束

条件)

4

4.1 数据依赖

在实际中 ,这些约束条件有些是通过对属性取值范围的限定反映出来,有些是通过属性间的相互关联反映出来。后者称为“数据依赖”。在关系模式中,对 DB模式设计影响最大的是 U和 F。我们把五元组简化为三元组 R(U,F) ,对 F的理解应该是:一个关系模式上的数据依赖,必须是这个关系模式的所有关系都应满足的数据依赖。即:当且仅当 U上的一个关系 r满足 F时, r称为关系模式 R(U,F) 的一个关系。

5

4.1 数据依赖

2. 数据依赖对关系模式的影响数据依赖是通过关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。在数据依赖中,最重要的是函数依赖和多值依赖。函数依赖普遍存在于现实生活中,下面来看一个例子:

4.1 数据依赖-数据依赖对关系模式的影响

我们建立一个数据库,用以描述某图书馆的一些情况,面临的对象有:借书证,读者,读者单位,联系电话,书号,书名,出版社,出版社地址,借阅日期。于是得到一组属性:U={借书证号,读者姓名,读者单位,单位电话,书号,书名,出版社,出版社地址,借阅日期 }对这些属性有下面一些语义规定:

每个读者只属于一个单位 每个读者可借多本书 不同的书可有相同的书名 一个单位只设一个联系电话 不同的单位不能有相同的电话号码 一个出版社有一个地址,不同出版社可以在同一个地址

7

4.1 数据依赖-数据依赖对关系模式的影响

由此得到属性组 U上的一组函数依赖:F={借书证号→读者姓名 ,借书证号→读者单位 ,借书证号→单位电话 ,读者单位↔单位电话 ,书号→书名 ,书号→出版社 ,书号→出版社地址 ,出版社→出版社地址 , (借书证号 ,书号 )→借阅日期 }

借书证号

书 号

读者姓名

书 名

借阅日期

读者单位

单位电话

出版社

出版社地址

函数依赖图

8

4.1 数据依赖-数据依赖对关系模式的影响

如果只考虑函数依赖这一种数据依赖,就得到一个描述图书馆的数据库模式 Borrow(U,F) ,它由一个单一的关系模式构成:

Borrow( 借书证号 ,读者姓名 ,读者单位 ,单位电话 ,书号 ,

书名 ,出版社 ,出版社地址 ,借阅日期 )这个关系模式存在四个问题:

数据冗余太大 一个读者可以借多本书,有关这个读者的信息就要在关系中出现多次;而一个单位有许多读者,每个读者都有相同的信息;同时图书馆又要面对许多单位……,由此可见,在这个关系模式中,数据的冗余度非常可观。

9

4.1 数据依赖-数据依赖对关系模式的影响

修改复杂 如果某个读者更换了单位,他若借了 10本书,有关他所在单位的信息在 Borrow 中重复存放 10次,当数据更新时必须无遗漏地修改 10个元组中全部的信息。

由于数据冗余, DBMS 要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。这就造成了修改的复杂性。

10

4.1 数据依赖-数据依赖对关系模式的影响

插入异常 如果刚买进一批新书,因为还没有读者借阅,就无法把有关新书的信息存入 Borrow 中,这就是插入异常。

删除异常 如果某个读者把他借的所有的书都还给了图书馆,那么随着这些书的相关信息的删除,这个读者的信息也丢失了。这就产生了删除异常,即不该删除的信息也删除了。

11

4.1 数据依赖-数据依赖对关系模式的影响

结论: Borrow 不是一个好的关系模式,原因是由存在于关系模式中的某些函数依赖引起的,规范化理论正是用来改造关系模式的指南。

12

4.1 数据依赖3. 有关概念⑴函数依赖函数依赖在规范化理论中起着核心作用,它普遍存在于现实生活中,专门讨论一个关系的属性间不同的依赖情况(即不同的函数依赖)。由于属性间依赖情况不同,可使一些关系明显地存在某些不好的性质,因此,要设计一个较佳的、能反映现实世界的关系模式,首先就要深刻理解函数依赖的有关理论,并据此来分析和判断关系是否具有某些不好的性质,然后才能清除关系中这些不合适的部分。

13

4.1 数据依赖-有关概念

定义 4.1 设 R(U) 是一个关系模式, U是 R的属性集合, X和 Y是 U的子集。对于 R(U) 的任意一个可能的关系 r,如果 r中不存在两个元组,它们在 X上的属性值相同,而在 Y上的属性值不同,则称“ X函数决定 Y”或“ Y函数依赖于 X”,记作 X→Y。对当前关系 r的任意两个元组,如果 X值相同,则要求 Y值也相同,即有一个 X值就有一个 Y值与之对应。

14

4.1 数据依赖-有关概念

几点说明: 函数依赖不是指关系模式 R的某个或某些关系实例满足的约束条件,而是指 R的所有关系实例均要满足的约束条件。

函数依赖是语义范畴的概念。 设计者可对现实世界作强制规定。

15

4.1 数据依赖-有关概念

术语和记号: X→Y,但 Y⊄X,则称 X→Y是非平凡函数依赖。

X→Y,但 Y⊆X,则称 X→Y是平凡函数依赖。 若 X→Y,则 X叫做决定因素。 若 X→Y, Y→X,则记作 X↔Y。 若 Y不函数依赖于 X,则记作 X↛Y。

16

4.1 数据依赖-有关概念

⑵完全函数依赖与部分函数依赖定义4.2 在 R(U)中,如果 X→Y,并且对于 X的任意一个真子集X’,都有 X’↛Y,则称 Y完全函数依赖于X,记作 。

若X→Y,但Y不完全函数依赖于 X,则称 Y部分函数依赖于 X,记作 。⑶传递函数依赖 定义 4.3 在 R(U)中,如果 X→Y(Y⊄X), Y→Z,且 Y↛X,则称 Z传递函数依赖于 X,记作 。

YX p

fX Y

tX Z

17

4.1 数据依赖-有关概念

【例】

⑷码 定义 4.4 设 K为 R(U,F) 中的属性或属性组,若 ,则称 K为 R的候选码,若候选码多于一个,则选定其中一个为主码。

函数依赖图

p借书证号

书 号

读者姓名

书 名

借阅日期

读者单位

单位电话

出版社

出版社地址

f

p

pp

p

p

t

t

t

fK U

18

第四章 关系数据库设计理论

4.1 数据依赖4.2 范式4.3 关系模式的规范化

19

4.2 范式

范式是衡量数据模式优劣的标准,范式级别越高,其数据冗余和操作异常现象就越少。范式有 1NF , 2NF , 3NF , BCNF , 4NF , 5NF 。范式之间存在的联系:

1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF一个低一级范式的关系模式通过模式分解可转化成若干个高一级范式的关系模式集合,这个过程就叫做规范化。

20

4.2 范式

1. 第一范式( 1NF ) 定义 4.5 若一个关系模式 R的所有属性都是不可再分的基本数据项,则 R∈1NF 。例 : Borrow∈1NF ,但不是一个好的关系模式。Borrow( 借书证号,读者姓名,读者单位,单位电话,书号,书名,出版社,出版社地址,借阅日期 )为什么会有数据冗余,插入异常,删除异常,修改复杂?因为存在部分函数依赖。

21

4.2 范式

2. 第二范式( 2NF ) 定义 4.6 若关系模式 R∈1NF ,并且每一非主属性都完全函数依赖于 R的码,则 R∈2NF 。我们将 Borrow转化为 2NF ,即要消除非主属性对码的部分函数依赖。方法:投影分解法

22

4.2 范式 - 2NF

把 Borrow 分解为三个关系模式: Reader(借书证号,读者姓名,读者单位,单位电话) Book(书号,书名,出版社,出版社地址) BORR(借书证号,书号,借阅日期)

p借书证号

书 号

读者姓名

书 名

借阅日期

读者单位

单位电话

出版社

出版社地址

f

p

pp

p

p

t

t

t

23

4.2 范式 - 2NF

它们的函数依赖分别如下图所示:

这三个关系都属于 2NF ,联合起来共同表达了原来一个关系所表达的内容,且原来关系不能表达的,它们也能表达。因此,第二范式比第一范式有更强的表达能力,是对现实世界更准确的描述。

读者姓名

借书证号 读者单位

单位电话

书 号 出版社

书 名

出版社地址

借阅日期书号

借书证号

24

4.2 范式 - 2NF

一个属于 2NF 的关系模式还会存在某些问题,如 : Reader(借书证号,读者姓名,读者单位,单位电话)

Book(书号,书名,出版社,出版社地址)

原因:存在传递函数依赖

冗余消失仍有冗余

冗余消失仍有冗余

25

4.2 范式

3. 第三范式( 3NF ) 定义 4.7 若关系模式 R中不存在候选码 X,属性组 Y以及非主属性 Z( Z Y),使得 X→Y,Y→Z和

Y X成立,则 R∈3NF 。要消除关系模式中非主属性对码的传递函数依赖,用投影分解法。

读者姓名

借书证号 读者单位

单位电话

书 号 出版社

书 名

出版社地址

26

4.2 范式 - 3NF

Reader1(借书证号,读者姓名,读者单位) Unitphone(读者单位,单位电话) Book1(书号,书名,出版社) Publish(出版社,出版社地址) Borr(借书证号,书号,借阅日期)

它们的函数依赖分别如下图所示:读者姓名

借书证号读者单位

读者单位 单位电话 出版社书 号 书 名

出版社 出版社地址

书 号

借书证号借阅日期

27

4.2 范式 - 3NF

一个属于 3NF 的关系模式一般可令人满意。局部依赖和传递依赖是模式产生冗余和异常的两个重要原因。由于 3NF 中不存在非主属性对码的局部和传递函数依赖,因此消除了很大一部分异常现象,具有较好的性能。

28

4.2 范式

4.BC范式( BCNF ) 例:设有关系模式 STC(学生,教师,课程 ) 若规定: 每一教师只教一门课,每门课由若干教师教 某一学生选定某门课,就确定了一个固定的教师。

F={教师 →课程, (学生 ,课程 ) →教师, (学生 ,教师 ) →课程}

29

4.2 范式 - BC范式

STC的候选码为:(学生,课程 ), (学生,教师 )

函数依赖图为:

关系模式STC的属性都是主属性,不存在非主属 性,所以STC没有任何非主属性对码的传递或 部分依赖, STC∈3NF 。3NF的 STC关系模式也存在一些诸如插入异常, 删除异常,数据冗余等问题。

教师学生

课程课程

学生

教师

30

4.2 范式 - BC范式

STC出现问题的原因:主属性课程依赖于教师,即课程部分依赖于码 (学生 ,教师 ) 。解决这一问题同样可用投影分解法,将 STC分解为两个关系模式:

ST(学生 ,教师 ) , TC(教师 ,课程 ) 定义 4.8 关系模式 R∈1NF ,若 X→Y,且 Y⊈X时, X必含有码,则 R∈BCNF 。即:在 R中,若每个决定因素都包含码,则 R∈BCNF 。

31

4.2 范式 - BC范式

由定义可知: STC(学生 ,教师 ,课程 ) 不属于 BCNF 。因为教师→课程,但教师即不是候选码,也不包含候选码。而 ST(学生 ,教师 )和 TC(教师 ,课程 ) 都属于 BCNF 。BCNF 即检查非主属性,又检查主属性,显然比3NF 限制更严格。

32

4.2 范式 - BC范式

由 BCNF 的定义可看到,每个 BCNF 的关系模式都具有如下三个性质:

所有非主属性都完全函数依赖于每个码; 所有主属性都完全函数依赖于每个不包含它的码;

没有任何属性完全函数依赖于非码的任何一组属性。若 R∈BCNF ,则⇒ R∈3NF 。若 R∈3NF⇏R∈BCNF ,若 R 只有一个候选码,则 R∈3NF⇒R∈BCNF 。

33

4.2 范式 - BC范式

【例 1】 S(S# , SN , SE , SA , SD) 解:∵ SN有可能重名,则 KEY = S# ,没有任何属性对 S

#部分和传递函数依赖,∴ S∈3NF 。同时 S#是唯一决定因素,∴ S∈BCNF。

【例 2】 C(C# , CN , PC#) 解:设 CN具有唯一性,则 KEY = C#或 KEY = CN ,都为

单属性,彼此不相交。其它属性不存在对码的部分和传递函数依赖,∴ C∈3NF 。同时除 C# , CN外,无其它决定因素,∴ C∈BCNF。

【例 3】 SC(S# , C# , G) 解: KEY = (S# , C#) ,唯一决定因素,∴ S∈BCNF。

34

4.2 范式 - BC范式

【例 4】 SCP(S , C, P)语义:每位学生 (S) 每门课 (C) 都有一个确定的名次(P) ,每门课中每一名次只有一个学生。函数依赖: F= { (S,C)→P,(C,P)→S},

∴(S,C)和 (C,P)都可作为候选码。候选码各由两个属性组成,且相交, SCP中显然没有属性对码的部分和传递函数依赖,∴ SCP∈3NF 。且除(S,C) , (C,P)外没有其它决定因素,∴ SCP∈BCNF。

35

4.2 范式 - BC范式

【例 5】 STC(S , T, C)语义:每位教师 (T) 只教一门课 (C) ,每门课有若干教师,某一学生 (S)选定某门课就对应一个固定的教师。函数依赖: F= { (S,C)→T,(S,T)→C,T→C},

∴(S,C)和 (S,T)都可作为候选码。显然 STC∈3NF ,∵没有任何非主属性对码的部分和传递函数依赖,但 STC不是 BCNF,因为 T是决定因素,但 T不包含码。

S

CT

S

TC

36

4.2 范式 - BC范式

若一个关系 DB中的所有关系模式都属于 BCNF ,则在函数依赖范畴内已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。3NF 的不彻底性表现在可能存在主属性对码的部分和传递函数依赖。

37

4.2 范式

5. 多值依赖与第四范式( 4NF )⑴多值依赖【例】学校中某门课由多个教师讲授,他们使用相同的一套参考书。

数学→ {邓军 ,陈斯 }→{ 数学分析 ,高等代数 ,微分方程 }

物理→ {李平 ,王强 ,刘明 }→{ 普通物理学 ,光学原理 } …… …… ……可以用一个关系模式 Teach(C,T,B)表示课程 C、教师 T和参考书 B之间的关系。

4.2 范式 -多值依赖与第四范式

关系 Teach(C,T,B)可以用右边的二维表表示:关系模式 Teach(C,T,B)的码是全码: Key=(C,T,B)

∴Teach∈BCNF,但存在问题 : 当某门课增加一位教师,

必须插入多个元组。 当要去掉某本参考书,也

必须删除多个元组。 当要修改某门参考书,也

必须修改多个元组。

课程 C 教师 T 参考书 B数学 邓军 数学分析数学 邓军 高等代数数学 邓军 微分方程数学 陈斯 数学分析数学 陈斯 高等代数数学 陈斯 微分方程物理 李平 普通物理学物理 李平 光学原理物理 王强 普通物理学物理 王强 光学原理物理 刘明 普通物理学物理 刘明 光学原理… … … … … …

39

4.2 范式 -多值依赖与第四范式

显然,数据的更新不方便,且冗余十分明显。只所以会出现上述问题,分析后可发现:课程与教师有直接关系;课程与参考书有直接关系;但教师与参考书之间没有直接联系,是一个间接联系。即参考书的取值和教师的取值是彼此独立毫无关系的,它们都只取决于课程名。把有间接联系的属性放在一个关系模式中,就会产生数据冗余和各种异常。

40

4.2 范式 -多值依赖与第四范式

定义 4.9 设 R(U) 是属性集 U 上的关系模式, X,Y,Z是 U的子集,且 Z=U-X-Y,多值依赖 X→→Y成立 ,当且仅当对 R(U) 的任一关系 r, r在 (X,Z) 上的每个值对应一组 Y值,这组值仅仅决定于 X值而与 Z值无关。

若 Z=Ø,则 X→→Y为平凡多值依赖。等价定义:若关系模式 R(U) 的任意关系 r的任意两个元组在 X属性上的值相等,则交换这两个元组在 Y上的属性值,得到的新元组也必定是 r中的元组,则 X→→Y。

41

4.2 范式 -多值依赖与第四范式

多值依赖指的是:两个属性或属性集相互独立。 例:在 Teach(C,T,B) 中,每个 (C,B) 上的值对应一组 T值:

(物理 ,光学原理 )→{ 李平 ,王强 ,刘明 } 这组值仅仅决定于课程上的值 ,即: (物理 ,普通物理学 )→{ 李平 ,王强 ,刘明 }参考书 B的值已改变,但教师 T的值没变,

∴ C→→T (T多值依赖于 C) 。多值依赖给出多对多联系,而函数依赖只给出多对一联系。

4.2 范式 -多值依赖与第四范式

多值依赖具有下列性质: 对称性:若 X→→Y,则 X→→Z,其中 Z=U-X-Y。 例:在关系模式 Teach(C,T,B) 中,已知 C→→T,根据多

值依赖的对称性,必有 C→→B。

对每个 Ci, T有个完整的集合与之对应, B也同样。 {T}Ci中的每个值和 {B}Ci中的每个值对应,正好形成一

个完全二分图。

Ci

Ti1 Ti2 …… Tin

Bi1 Bi2 …… Bin

与 Ci对应的全部 T值 :{T}Ci教 Ci的全体教师

与 Ci对应的全部 B值 :{B}Ci

Ci使用的所有参考书

∴C→→T, 而 B与 T 完全对称 ,∴ C→→B。

43

4.2 范式 -多值依赖与第四范式

传递性:若 X→→Y, Y→→Z,则 X→→Z-Y。替代性:若 X→Y,则 X→→Y。 (∵X→Y时, X

的每一个值 x, Y有一个确定的值 y与之对应,∴ X→→Y)函数依赖可看成是多值依赖的特殊情况。

多值合并性:若 X→→Y, X→→Z,则 X→→YZ。

多值分解性:若 X→→Y, X→→Z,则X→→Y∩Z, X→→Y-Z, X→→Z-Y。

44

4.2 范式 -多值依赖与第四范式

多值依赖的有效性与属性集的范围有关 若 X→→Y,在 U上成立,则在 W(XY⊆W⊆U) 上一定成立。但 X→→Y,在 W(W⊂U) 上成立,在U上并不一定成立。 ( 这是因为多值依赖的定义中不仅涉及到 X和 Y,而且涉及到 U中的其余属性 Z)

若多值依赖 X→→Y在 R(U) 上成立,对于 Y’⊂Y,并不一定有 X→→Y’成立。但若 X→Y在 R上成立,则对任意 Y’⊂Y,均有 X→Y’成立。这两条是函数依赖与多值依赖的基本区别

45

4.2 范式 -多值依赖与第四范式

例: R(C,T,H,R,S,G) ,其中 C为课名, T为教师, H为时间,R为教室, S为学生, G为成绩。有语义 :一门课由一个教师开设,但在不同时间可以安排在不同的教室。即一门课可以有一组“时间 ,教室”与之对应,而与听课的学生与成绩无关。列出两个学生听课情况:

取出任意两个元组,同时交换 HR 中 属性,所得新元组必在原 r 中,而 S 与 G的值不受影响。∴有 C→→HR , T→→HR 等。又有 H⊂HR ,但 C→→H 不成立。∵ (C1,T1,H2,R1,S1,G1) 和 (C1,T1,H1,R2,S1,G1) 不在 r中。

C T H R S G

C1

C1

C1

C1

T1

T1

T1

T1

H1

H2

H1

H2

R1

R2

R1

R2

S1

S1

S2

S2

G1

G1

G2

G2

46

4.2 范式 -多值依赖与第四范式

⑵第四范式 (4NF) 定义 4.10 关系模式 R∈1NF ,如果对于 R的每个非平凡多值依赖 X→→Y(Y X⊈ ) , X都含有候选码,则 R∈4NF 。4NF 就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根据定义,对于每一个非平凡的多值依赖 X→→Y, X都含有候选码,于是就有 X→Y,所以 4NF 所允许的非平凡的多值依赖实际上是函数依赖。显然,若 R∈4NF ➙ R∈BCNF 。

47

4.2 范式 -多值依赖与第四范式

例:在 Teach(C,T,B) 中, C→→T, C→→B都是非平凡的多值依赖,而 Key=(C,T,B) ,即 C不是码。 ∴ Teach∉4NF 。

分解为: CT(C,T) , CB(C,B) 后,都属于 4NF 。虽有 C→→T,但这是平凡多值依赖。因此在多值依赖时,解决数据冗余和更新异常现象的方法是 :把关系分解成仅含平凡多值依赖的多个关系。一个满足 4NF 的关系模式特点:

该关系模式满足 BCNF ; 该关系模式只允许出现平凡多值依赖。

48

4.2 范式 -多值依赖与第四范式

在 Teach(C,T,B)中,前面提到的问题可得到解决 : 参考书只需在 CB中存储一次 某门课增加一位教师,只需在 CT中增加一个 元组 某门课去掉某本参考书时,只需在 CB中删除 一个元组函数依赖和多值依赖是两种最重要的数据依赖。若考虑函数依赖,则属于BCNF的关系模式已很完美;若考虑多值依赖,则属于4NF的关系已很完美。

49

第四章 关系数据库设计理论

4.1 数据依赖4.2 范式4.3 关系模式的规范化

50

4.3 关系模式的规范化

一个关系的每一个分量是不可再分的数据项,是规范化关系的最基本的条件,规范化程度可以有 6个不同的级别( 6个范式)。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这个过程就叫做关系模式的规范化。

51

4.3 关系模式的规范化1. 关系模式规范化的步骤 1NF 消除非主属性对码的部分函数依赖 2NF 消除非主属性对码的传递函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF 消除非平凡且非函数依赖的多值依赖 4NF

52

4.3 关系模式的规范化

2. 关系模式的分解关系模式的规范化过程是通过对关系模式的分解来实现的,但是把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的,在这些分解方法中,只有能够保证分解后关系模式与原关系模式等价的方法才是有意义的。

53

4.3 关系模式的规范化

例: SL(Sno,Sdept,Sloc) ,其中 Sno 是学号, Sdept是学生所在系, Sloc是学生住处,每个系的学生住在同一个地方。

F={Sno→Sdept, Sno→Sloc, Sdept→Sloc} ∵存在传递函数依赖,∴ SL∈2NF 。

54

4.3 关系模式的规范化

第一种分解: SN(Sno) , SC(Sdept) , SO(Sloc)分解后都是规范化程度很高

的关系模式,但分解后丢失了 许多信息。此种分解方法不可取。要使

分解有意义,起码的要求是后 者不能丢失前者的信息。如果分解后的关系可以通过自然连接恢复为原来的关系,则这种分解就没有丢失信息。

Sno Sdept Sloc9800198002980039800498005

CSISMAISPH

ABCBB

SL

55

4.3 关系模式的规范化

第二种分解: NL(Sno, Sloc) , DL(Sdept, Sloc)

Sno Sloc Sdept

9800198002980029800398004980049800598005

ABBCBBBB

CSISPHMAISPHISPH

Sno Sloc9800198002980039800498005

ABCBB

Sdept SlocCSISMAISPH

ABCBB

NL DL

NL⋈DL ⇒连接后多了三个元组,将无法知道原来关系中究竟有哪些元组,从这个意义上讲,这个分解仍然丢失了信息。

56

4.3 关系模式的规范化

第三种分解: ND(Sno, Sdept) , NL(Sno, Sloc)

Sno Sdept9800198002980039800498005

CSISMAISPH

Sno Sloc98001

98002

98003

98004

98005

ABCBB

Sno Sdept Sloc9800198002980039800498005

CSISMAISPH

ABCBB

ND NL

ND⋈NL

没有丢失信息,恢复为原来的关系,这种分解称为 : “无损连接分解”。

57

4.3 关系模式的规范化

定义 4.11 设关系模式 R(U,F)被分解为若干个关系模式 R1(U1,F1) , R2(U2,F2) ,… , Rn(Un,Fn) ( 其中 U=U1 ⋃ U2 ⋃ … ⋃ Un , 且不存在 Ui⊆Uj ,Fi为F在 Ui上的投影 ),若 R 与 R1 ,… , Rn自然连接的结果相等,则称 R的这个分解具有无损连接性。只有具有无损连接性的分解才能保证不丢失

信息

58

4.3 关系模式的规范化

第三种分解虽然具有无损连接性,保证了不丢失原关系中的信息,但它并没有解决各种异常现象。如: 98001转系,则两个关系中相应的元组必须同时修改。因为这种分解没有保证原关系中的函数依赖,SL中的 Sdept→Sloc即没有投影到 ND 上,也没有投影到 NL 上,而是跨在两个关系上。

59

4.3 关系模式的规范化

定义 4.12 设关系模式 R(U,F)被分解为若干个关系模式 R1(U1,F1) , R2(U2,F2) ,… , Rn(Un,Fn) ( 其中 U=U1 ⋃ U2 ⋃ … ⋃ Un , 且不存在 Ui⊆Uj ,Fi为 F在 Ui上的投影 ) ,若 F 所逻辑蕴涵的函数依赖一定也由分解得到的某个关系模式中的函数依赖 Fi所逻辑蕴涵,则称关系模式 R的这个分解是保持函数依赖的。

60

4.3 关系模式的规范化

第四种分解: ND(Sno, Sdept) , DL(Sdept, Sloc) 这种分解保持了函数依赖。判断对关系模式的一个分解是否与原关系模式等价,可有三种不同的标准:

分解具有无损连接性; 分解要保持函数依赖; 分解即要保持函数依赖,又要具有无损连接性。

61

4.3 关系模式的规范化

分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。如果一个分解具有无损连接性,则它能保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。最后应当注意的是,规范化理论为数据库设计提供了理论的指南和工具,但仅仅是指南和工具。并不是规范化程度越高,模式就越好,实际应用中还必须结合应用环境和具体情况,合理地选择数据库模式。

62

第四章结束 第四章结束