数据库第4章(第789讲)_第1页
数据库第4章(第789讲)_第2页
数据库第4章(第789讲)_第3页
数据库第4章(第789讲)_第4页
数据库第4章(第789讲)_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上周回顾上周回顾l 1、嵌套查询、嵌套查询查询条件中又包含一个SELECT查询(又称子查询)l 子查询返回单值:WHERE 属性属性 比较运算符比较运算符 (子查询)(子查询)l 返回多值:元组元组 比较运算符比较运算符 any(子查询)子查询) 元组元组 比较运算符比较运算符 ALL(子查询)子查询)l 集合测试in:列名列名 NOT IN (子查询子查询) 存在测试exist:WHERE NOT EXISTS(子查询)(子查询)(EXISTS谓词的子查询不返回查询的数据,只产生逻辑真值和逻辑假值)2、集合操作、集合操作 (1)并操作: (SELECTSELECT查询查询1 1) UNION

2、 UNION ALLALLSELECTSELECT查询查询2 2) (2)交操作:(SELECT SELECT 查询查询1 1)INTERSECT ALLINTERSECT ALL(SELECT SELECT 查询查询2 2) (3)差操作:(SELECT SELECT 查询查询1 1) EXCEPT ALLEXCEPT ALL(SELECT SELECT 查询查询2 2)3 3、 视图视图视图是一个虚拟的表,是从一个或几个基本表导出的虚拟表表,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。(1

3、)(1) 创建创建: :Create view Create view 视图名视图名( (列名表列名表) as select ) as select 语句语句(2) (2) 修改视图修改视图: :Alter view Alter view 视图名视图名( (列名列名,.n ) as ,.n ) as 查询语查询语句句 (3) (3) 删除视图删除视图: :DROP VIEW DROP VIEW (4) (4) 使用视图使用视图:查询数据同基本表一样查询数据来源即可是视图,也可表,视图中列名与表中列名相同时,引用:视图名.列名(5) (5) 更新视图更新视图:利用视图更新源表中数据:利用视图更新

4、源表中数据(INSERTINSERT、DELETEDELETE、UPDATEUPDATE),),有以下三条规则:有以下三条规则:(1 1)如果一个视图是从多个基本表使用联接操作导出的,)如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。那么不允许对这个视图执行更新操作。(2 2)如果在导出视图的过程中,使用了分组和聚合操作,)如果在导出视图的过程中,使用了分组和聚合操作,也不允许对这个视图执何更新操作也不允许对这个视图执何更新操作(3 3)如果视图是从)如果视图是从单个基本表单个基本表使用选择、投影操作导出的,使用选择、投影操作导出的,并且包含了并且包含了基本表的

5、主键或某个候选键基本表的主键或某个候选键,可以被执行更新,可以被执行更新操作。操作。对视图的更新会自动发送给源表对视图的更新会自动发送给源表第4章 关系模式规范化设计本章概要l 如何设计关系数据库,也就是面对一个现实问题,如如何设计关系数据库,也就是面对一个现实问题,如何选择一个比较好的关系模式的集合,每个关系应该何选择一个比较好的关系模式的集合,每个关系应该由哪些属性组成,以便最大限度减少数据冗余,解决由哪些属性组成,以便最大限度减少数据冗余,解决更新导致的数据不一致。这属于数据库更新导致的数据不一致。这属于数据库逻辑逻辑设计问题,设计问题,本章讲述本章讲述关系数据库规范化理论关系数据库规范

6、化理论,就是数据库逻辑设,就是数据库逻辑设计的理论依据。计的理论依据。掌握函数依赖的有关概念掌握函数依赖的有关概念第一范式、第二范式、第三范式的定义第一范式、第二范式、第三范式的定义. .重点掌握并能够灵活运用关系模式规范化的方法重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。和关系模式分解的方法,这也是本章的难点。 4 4.1.1.1 1 简述简述关系数据库的规范化理论主要包括三个方面的内容:关系数据库的规范化理论主要包括三个方面的内容:(1 1)函数依赖)函数依赖 (2 2)范式()范式(Normal FormNormal Form)(3 3)模式设计)模

7、式设计其中,其中,函数依赖函数依赖起着核心的作用,是模式分解和模式设计的基起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。础,范式是模式分解的标准。4 4.1.1.2 2 泛关系模式与数据库模式泛关系模式与数据库模式l 泛关系模式:泛关系模式:现实问题的所有属性组成一个关系模式现实问题的所有属性组成一个关系模式R R(U U),),这个关系模式就称为泛关系模式。这个关系模式就称为泛关系模式。l 数据库模式:数据库模式:把泛关系模式用一组关系模式的集合把泛关系模式用一组关系模式的集合=R=R1 1,R R2 2,RRi i 来表示时,这个来表示时,这个就是数据库模式。就是数据库

8、模式。本章主要介绍如何把本章主要介绍如何把泛关系模式分解成规范的、较优的数据库泛关系模式分解成规范的、较优的数据库模式。模式。 分解不好会出现分解不好会出现数据冗余和异常问题数据冗余和异常问题 4.1 关系规范化理论关系规范化理论 4 4.1.1.3 3 关系模式的冗余和异常问题关系模式的冗余和异常问题 数据冗余是指同一个数据在系统中多次重复出现。如果一数据冗余是指同一个数据在系统中多次重复出现。如果一个关系模式设计得不好,会出现数据冗余、异常、不一个关系模式设计得不好,会出现数据冗余、异常、不一致等问题致等问题. . 例例4 4.1.1 设有一个关系模式设有一个关系模式R R(SNOSNO,

9、CNOCNO,CNAMECNAME,TNAMETNAME),),其属性分其属性分别表示学生学号、选修课程的课程号、课程名、任课老师姓名。具别表示学生学号、选修课程的课程号、课程名、任课老师姓名。具体实例见下图体实例见下图 - - SNO CNO CNAME TNAME SNO CNO CNAME TNAME - - S2 C4 PASCAL WEN S2 C4 PASCAL WEN S4 C4 PASCAL WEN S4 C4 PASCAL WEN S6 C4 PASCAL WEN S6 C4 PASCAL WEN S6 C2 ADA LIU S6 C2 ADA LIU S4 C2 ADA L

10、IU S4 C2 ADA LIU S8 C6 BASIC MA S8 C6 BASIC MA 虽然这个模式只有四个属性,但在使用过程中会出现虽然这个模式只有四个属性,但在使用过程中会出现以下几个问题:以下几个问题: (1 1)数据冗余)数据冗余。如果一门课程有多个学生选修,那。如果一门课程有多个学生选修,那么在关系中要出现多个元组,也就是这门课程的课程名么在关系中要出现多个元组,也就是这门课程的课程名和任课老师姓名要重复多次。和任课老师姓名要重复多次。 (2 2)操作异常)操作异常。由于数据的冗余,在对数据操作时。由于数据的冗余,在对数据操作时会引起各种异常:会引起各种异常: (a a)修改异

11、常修改异常。譬如。譬如 C4C4课程有三个学生选修,在关课程有三个学生选修,在关系中就会有三个元组。如果这门课程的教师改为系中就会有三个元组。如果这门课程的教师改为 CHENCHEN老老师,那么这三个元组的教师姓名,都要改为师,那么这三个元组的教师姓名,都要改为 CHENCHEN老师。老师。若有一个元组的教师姓名未改,就会造成这门课程的任若有一个元组的教师姓名未改,就会造成这门课程的任课老师不惟一,产生不一致现象。课老师不惟一,产生不一致现象。 ( (b)b)插入异常插入异常。如果需安排一门新课程(。如果需安排一门新课程(C8C8,DELPHIDELPHI,CHENCHEN),),在尚无学生选

12、修时,要把这在尚无学生选修时,要把这门课程的数据值存储到关系中去时,在属性门课程的数据值存储到关系中去时,在属性SNOSNO上就会出现空值。在数据库技术中空值的语义上就会出现空值。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也是非常复杂的,对带空值元组的检索和操作也十分麻烦。十分麻烦。 ( (c)c)删除异常删除异常。如果在图中要删除学生。如果在图中要删除学生S8S8选选课元组,那么就要把这门课程的课程名和教师课元组,那么就要把这门课程的课程名和教师姓名一起删除,这也是一种不合适的现象。姓名一起删除,这也是一种不合适的现象。 因此,关系模式因此,关系模式R R的设计不是一个合

13、适的设的设计不是一个合适的设计。计。如果我们用下面两个关系模式如果我们用下面两个关系模式 R1R1和和R2R2代替代替R R: R1 R1(SNOSNO,CNOCNO)和和R2R2(CNOCNO,CNAME,TNAMECNAME,TNAME其关其关系实例如下。系实例如下。 _ _ _ SNO CNO CNO CNAME TNAMESNO CNO CNO CNAME TNAME - - - - S2 C4 C4 PASCAL WEN S2 C4 C4 PASCAL WEN S4 C4 C2 ADA LIU S4 C4 C2 ADA LIU S6 C4 C6 BASIC MA S6 C4 C6 B

14、ASIC MA S6 C2 - S6 C2 - S4 C2 (R2) S4 C2 (R2) S8 C6 S8 C6 - - 这样分解后,例这样分解后,例4 4.1.1中提到的冗余和异常中提到的冗余和异常现象基本消除了。现象基本消除了。每门课程的课程名和教师每门课程的课程名和教师 姓名只存放一次,即使这门课程还没有学生选姓名只存放一次,即使这门课程还没有学生选修,其课程名和教师姓名也可存放在关系修,其课程名和教师姓名也可存放在关系R2R2中。中。但是将但是将R R分解成分解成R1R1和和R2R2两个模式是否最佳两个模式是否最佳分解,也不是绝对的。分解,也不是绝对的。如果要查询学生所学课如果要查询

15、学生所学课程的任课教师,就要对两个关系做联接操作,程的任课教师,就要对两个关系做联接操作,而联接的代价是很大的。而在原来模式而联接的代价是很大的。而在原来模式R R 的关的关系中,就可直接找到上述结果。系中,就可直接找到上述结果。到底什么样的到底什么样的关系模式是最优的?标准是什么?如何实现?关系模式是最优的?标准是什么?如何实现?都是本章要讨论的问题。都是本章要讨论的问题。 4 4.1.4 .1.4 本章的符号规定本章的符号规定 为了便于表述,我们对使用的符号有如下规定:为了便于表述,我们对使用的符号有如下规定: 英文字母表首部的大写字母英文字母表首部的大写字母“A A,B B,C C,”表

16、示单表示单个的属性。个的属性。 英文字母表尾部的大写字母英文字母表尾部的大写字母“,U U,V V,W W,X X,Y Y,Z Z”表示属性集。表示属性集。 大写字母大写字母R R表示关系模式。为叙述方便,有时也用表示关系模式。为叙述方便,有时也用属性名的组合写法表示关系模式。若模式有属性名的组合写法表示关系模式。若模式有 A A、B B、C C三三个属性,就用个属性,就用ABCABC表示关系模式。表示关系模式。 属性集属性集 A1A1,AnAn简写为简写为A1A1AnAn。属性集属性集X X和和Y Y的并集的并集XUYXUY简写为简写为XYXY。XUAXUA简写为简写为XAXA或或AXAX。

17、 4 42 2 函数依赖函数依赖在数据库中,数据之间存在着密切的联系。我们把在数据库中,数据之间存在着密切的联系。我们把数据之间存在的这种联系称为数据之间存在的这种联系称为“数据依赖数据依赖”。设计人员。设计人员的一个职责就是要把数据依赖找出来。在数据库规范化的一个职责就是要把数据依赖找出来。在数据库规范化设计中,数据依赖起着关键的作用。设计中,数据依赖起着关键的作用。它反映属性或属性它反映属性或属性组之间互相依存、互相制约的关系组之间互相依存、互相制约的关系。数据依赖一般分为。数据依赖一般分为函数依赖、多值依赖函数依赖、多值依赖和和连接依赖连接依赖。其中,函数依赖是基。其中,函数依赖是基本也

18、是最重要的一种依赖,它是关键码概念的推广。本也是最重要的一种依赖,它是关键码概念的推广。 4 4.2.1 .2.1 函数依赖的定义函数依赖的定义 在数据库中,属性值之间会发生联系。譬如每个学在数据库中,属性值之间会发生联系。譬如每个学生只有一个姓名,每个学生学一门课程只能有一个总评生只有一个姓名,每个学生学一门课程只能有一个总评成绩,等等。这类联系,称为函数依赖,其形式定义如成绩,等等。这类联系,称为函数依赖,其形式定义如下:下: 定义定义4 4.1.1 设有关系模式设有关系模式R R(U U),),X X和和Y Y是属性集是属性集U U的的子集,函数依赖子集,函数依赖FDFD是是形为形为X

19、XY Y的一个命题的一个命题,只要,只要r r是是R R的当前关系,对的当前关系,对r r中中任意任意元组元组t t和和s,s,都由都由tX=sXtX=sX推导推导出出tY=sY,tY=sY,那么那么FD XFD XY Y在关系模式在关系模式R R(U U)中成立。中成立。 这里这里tXtX表示元组表示元组t t在属性集在属性集X X上的值,其余类同。上的值,其余类同。X XY Y读作读作“X X函数决定函数决定Y Y”,或或“Y Y函数依赖于函数依赖于X X”。对于当前关系对于当前关系r r的任意两个元组,如果的任意两个元组,如果X X值相同,则要求值相同,则要求Y Y值也相同,即值也相同,

20、即有一个有一个X X值就有一个值就有一个Y Y值与之对应,或者值与之对应,或者说说Y Y值由值由X X值决定值决定(y=f(x)(y=f(x)。因而这种依赖称为。因而这种依赖称为函数依函数依赖赖。l 例例4.24.2:对学生关系模式:对学生关系模式 S S(Sno, SName, sdept, ageSno, SName, sdept, age)l 有以下依赖关系:有以下依赖关系: SnoSName, Snosdept, Snoage 例例 4.3有一个关于学生选课、教师任课的关系模式:有一个关于学生选课、教师任课的关系模式: R(SNO,SNAME,CNO,GRADE,CNAME,TNAME

21、,TAGE) 那么可写就下列那么可写就下列FD形式:形式: SNO SNAME CNO CNAME 每个学生每学一门课程,有一个成绩,那么可写出下列每个学生每学一门课程,有一个成绩,那么可写出下列FD (SNO,CNO) GRADE 还可以写出其他一些还可以写出其他一些FD: CNO (CNAME,TNAME) TNAME TAGE 例例4 4. .4 4 设关系模式设关系模式R(ABCD),R(ABCD),在在R R的关系中,属性的关系中,属性值间有这样的联系值间有这样的联系: :A A值与值与B B值有一对多联系,即每个值有一对多联系,即每个A A值有多个值有多个B B值与之联系,而每个值

22、与之联系,而每个B B值只有一个值只有一个A A值与之值与之联系:联系:C C值与值与D D值之间有一对一联系,即每个值之间有一对一联系,即每个C C值只有值只有一个一个D D值与之联系,每个值与之联系,每个D D值只有一个值只有一个C C值与之联系。值与之联系。试根据这些规则写出相应的函数依赖。试根据这些规则写出相应的函数依赖。 解:从解:从A A值与值与B B值有一对多值有一对多( (反过来为多对一)联系,反过来为多对一)联系,可写出函数依赖可写出函数依赖B B A A 从从C C值与值与D D值有一对一联系,可写出两个函数依赖值有一对一联系,可写出两个函数依赖C C D D和和D D C

23、 C4.2.24.2.2有关函数依赖的几点说明:有关函数依赖的几点说明:1 1平凡的函数依赖与非平凡的函数依赖平凡的函数依赖与非平凡的函数依赖。(1 1)如果)如果X XY Y,但,但Y Y不包含于不包含于X X,则称,则称X XY Y是非平凡的函数依赖是非平凡的函数依赖(snosname)(2)如果如果X XY Y,但,但Y Y包含于包含于X X,则称,则称X XY Y是平凡的函数依赖是平凡的函数依赖。 (sno,snamesname) 若不特别声明,我们讨论的都是非平凡的函数依赖。若不特别声明,我们讨论的都是非平凡的函数依赖。(3 3)如果)如果X XY Y,则,则X X称为称为决定因子决

24、定因子。 (snosname),其中sno 是决定因子(4 4)如果)如果XYXY,并且对于,并且对于X X的一个任意真子集的一个任意真子集X X 都有都有X X /Y/Y,则称,则称Y Y完全函数依赖完全函数依赖于于X X,记作,记作 ;如果;如果X X Y Y成立,则称成立,则称Y Y部分函数依赖部分函数依赖于于X X,记作,记作 X f YX P Y 2 2函数依赖是语义范畴的概念。函数依赖是语义范畴的概念。我们只能根据语义来确定一个函数依赖,而不我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否能按照其形式化定义来证明一个函数依赖是否成立。成立。例如,对于

25、关系模式例如,对于关系模式S (SNO,SNAME,AGE,DEPT) S (SNO,SNAME,AGE,DEPT) ,当学生不存在重名的情况下,可以得到:当学生不存在重名的情况下,可以得到:lSNAMEAGE SNAMEAGE SNAMEDEPTSNAMEDEPTl 这种函数依赖关系,必须是在没有重名的学生条件下才成立的,不存在函数依赖,所以函数依赖反映了一种语义完整性约束。 3 3函数依赖与属性之间的联系类型有关。函数依赖与属性之间的联系类型有关。l (1 1)在一个关系模式中,如果属性)在一个关系模式中,如果属性X X与与Y Y有有1:11:1联系时联系时(一个班有一个班长),则存在函数

26、依赖则存在函数依赖XYXY,YXYX,即即X YX Y。l (2 2)如果属性如果属性X X与与Y Y有有1:1:m m的联系时的联系时(一个系有多个学生),则只存在函数依赖则只存在函数依赖YXYX。l (3 3)如果属性如果属性X X与与Y Y有有m: nm: n的联系时,则的联系时,则X X与与Y Y之间不存在任之间不存在任何函数依赖关系。何函数依赖关系。l 例如,一个学生可以选修多门课程,一门课程又可以为例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以多个学生选修,所以SNOSNO与与CNOCNO之间不存在函数依赖关系。之间不存在函数依赖关系。l 由于函数依赖与属性之间

27、的联系类型有关,所以在确定属性由于函数依赖与属性之间的联系类型有关,所以在确定属性间的函数依赖关系时,可以从分析间的函数依赖关系时,可以从分析属性间的联系类型属性间的联系类型入手,入手,便可确定属性间的函数依赖。便可确定属性间的函数依赖。 例:设关系模式例:设关系模式R(ABCD),R(ABCD),如果规定关系中如果规定关系中B B值与值与D D值之间是一对多联系,值之间是一对多联系,A A值值与与C C值之间是一对一联系,试写出相应函数依赖值之间是一对一联系,试写出相应函数依赖: : A C,C A,D B 4.2.3 FD 4.2.3 FD和关键码的联系和关键码的联系 有了有了FDFD概念

28、后,我们可以把关键码概念后,我们可以把关键码( (简称键)和简称键)和FDFD联系联系起来。实际上,函数依赖是关键码概念的推广。起来。实际上,函数依赖是关键码概念的推广。 定义定义4.24.2: 设关系模式设关系模式R R的属性集是的属性集是U U,X X是是U U的一个子的一个子集。如果集。如果XUXU在在R R上成立,那么称上成立,那么称X X是是R R的一个超键。如果的一个超键。如果X-X-F FUU在在R R上成立,那么称上成立,那么称X X是是R R上的一个候选键。本章的上的一个候选键。本章的关键码都是指候选键关键码都是指候选键, ,。 例例4.54.5在学生选课、教师任课的关系模式

29、中:在学生选课、教师任课的关系模式中:R R(SNOSNO,SNAMESNAME,CNOCNO,GRADEGRADE,CNAMECNAME, TNAME TNAME,TAGETAGE) 如果规定:每个学生每学一门课只有一个成绩;每个学如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。有一个任课教师。根据这些规则,可以知道根据这些规则,可以知道(SNOSNO,CNOCNO)能函数决定能函数决定R R的全的全部属性,是一个候选键。部属性,是一个候选键。虽然(虽然(SNOSNO,SN

30、AMESNAME,CNOCNO,TNAMETNAME)也能函数决定也能函数决定R R的全部属性,但相比之下,只能说是一个超的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。键,而不能说是候选键,因为其中含有多余属性。 例:设关系模式例:设关系模式R(ABCD),FR(ABCD),F是是R R上的上的FDFD集,集,F=F=ABB,CBB,相对于F,试写出关系模式R的关键码。ACDACD 4 4.2.2.4 4 FDFD的推理规则的推理规则设设U U是关系模式是关系模式R R的属性集的属性集, , FD FD 的推理规则有以下三条:的推理规则有以下三条: A1A1

31、(自反性自反性): :若若Y Y X X U U,则则XYXY在在R R上成立。上成立。(sno,sname) sname) A2A2(增广性增广性): :若若XYXY在在R R上成立,且上成立,且Z Z U U,则则XZYZXZYZ在在R R上上成立。成立。(sno sname推出(sno,dept) (sname,dept) A3A3(传递性传递性): :若若XYXY和和YZYZ在在R R上成立,则上成立,则XZXZ在在R R上成立。上成立。(cno tname,tname tage推出cno tage) 除了上述除了上述A1A1、A2A2、A3A3三条规则外,三条规则外,FDFD还有几个

32、实用的推还有几个实用的推理规则,这些规则可从上面三条规则导出。理规则,这些规则可从上面三条规则导出。 A4A4(合并性合并性): : XYXY,XZXZ则则 XYZ XYZ 在在R R上成立。上成立。(sno sname,sno sdept推出sno (sname,sdept) A5A5(分解性分解性): : XY, Z XY, Z Y Y 则则 XZXZ在在R R上成立。上成立。(sno (sname,dept)推出sno sname)A6A6(伪传递性伪传递性):):XYXY,WYZWYZ则则WXZWXZ。(cno cname,(sno,cname)grade推出(cno,sno) gra

33、de) A7A7(复合性复合性): : XYXY,WZWZ则则XWYZ XWYZ (sno sname,cno cname,(sno,cno) (sname,cname)从从A4A4和和A5A5,立即可得到下面的定理。立即可得到下面的定理。 定理定理1 1:如果如果A A1 1AnAn是关系模式是关系模式R R的属性集,那么的属性集,那么XAXA1 1AnAn成立的充分必要条件是成立的充分必要条件是XAi(i=1XAi(i=1,n)n)成立成立 . . 证明:证明:XAi(i=1XAi(i=1,n)n),由,由 A4(A4(合并性:合并性:XYXY,XZXZ则则XYZXYZ立立) )推出:推出

34、: XA XA1 1AnAn 反之,反之,XAXA1 1AnAn,由,由A5(A5(分解性分解性: XY, Z: XY, Z Y Y 则则 XZ)XZ)推推出:出:XAi(i=1XAi(i=1,n)n)( (Ai(i=1Ai(i=1,n)n) A A1 1An )An ) 例例4-6 4-6 选择题选择题:关系模式关系模式R R(B B,C C,M M,T T,A A,G G),),根据语义有如下函数依赖集:根据语义有如下函数依赖集: F= F=BC,(M ,T)B,(M,C) T,BC,(M ,T)B,(M,C) T, (M,A) T,(A,B)G (M,A) T,(A,B)G 则关系模式的

35、关键码为则关系模式的关键码为:(1)(M(1)(M,T T)()(2)(M2)(M,C C)()(3)(M3)(M,A A)()(4)(A4)(A,B B) 注:若有多个函数依赖求关键码,凡是不在函注:若有多个函数依赖求关键码,凡是不在函数依赖右边出现的属性都可能作为关键码的属性。数依赖右边出现的属性都可能作为关键码的属性。如上述例子的答案为如上述例子的答案为(3 3)()(M M,A A)。 4 4.2.2.5 FD5 FD集的最小依赖集集的最小依赖集 关系模式关系模式R(U)R(U)上的函数依赖集上的函数依赖集F F中的中的FDFD很多,我们应该从很多,我们应该从F F中去掉平凡的中去掉平

36、凡的FDFD、无关的无关的FDFD、FDFD中无关的属性,以求得中无关的属性,以求得F F的的最小依赖集最小依赖集FminFmin。形式定义如下。形式定义如下。 定义定义4.34.3:设设F F是属性集是属性集U U上的上的FDFD集。集。如果如果FminFmin是是F F的一个的一个最小依赖集,那么最小依赖集,那么FminFmin应满足下列四个条件:应满足下列四个条件:(1 1)FminFmin+ += F= F+ +;(;(2 2)每个每个FDFD的右边都是单属性;的右边都是单属性;(3 3)FminFmin中没有冗余的中没有冗余的FDFD(即即F F中不存在这样的函数依赖中不存在这样的函

37、数依赖XYXY,使得使得F F与与F-XYF-XY等价);等价);(4 4)每个)每个FDFD的左边没有冗余的属性(即的左边没有冗余的属性(即F F中不存在这样的函数中不存在这样的函数依赖依赖XYXY,X X有真子集有真子集W W使得使得F-F- XYWYXYWY与与 F F等价)。等价)。显然,显然,每个函数依赖集至少存在一个最小依赖集,但并不一定每个函数依赖集至少存在一个最小依赖集,但并不一定惟一。惟一。 ( 注:F+称为F的闭包:关系R(U,F)中所逻辑蕴含的的全部函数依赖的全体) 例例4:74:7 设设F F是关系模式是关系模式R R(ABCABC)的的FDFD集,集,F FAABCB

38、C,B BC C,A AB B,ABABCC,试求试求FminFmin。 解:先把解:先把F F中的中的FDFD写成右边是单属性形式:写成右边是单属性形式: F FAAB B,A AC C,B BC C,A AB,ABB,ABCC 显然多了一个显然多了一个A AB B,可删去。得可删去。得F= AF= AB B,A AC C,B BC,ABC,ABCC F F中中A AC C是冗余的是冗余的( (由AB,BC传递性可得),可删去。可删去。得得F F A AB,BB,BC,ABC,ABCC F F中中ABABC C 可从可从(AB和BC推出ABBC 再得到),因因此此ABABC C也可删去。最后

39、得也可删去。最后得F F A AB,BB,BCC,即所求的即所求的 FminFmin。l 之所以关系模式存在数据冗余之所以关系模式存在数据冗余,插入、删除、更新异常这些问插入、删除、更新异常这些问题正是由于模式中的某些数据依赖引起的题正是由于模式中的某些数据依赖引起的l 解决方法:通过分解关系模式来消除其中不合适的数据依赖解决方法:通过分解关系模式来消除其中不合适的数据依赖4 43 31 1 模式分解问题模式分解问题 l 概念:概念:把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。 定义定义4.4: 关系模式R(U)的分解是指R为它的一组子集=R1(U1), R2(U2), Rk

40、(UK)所代替的过程。 其中U=U1U2.k ,并且没有Ui Uj. , 为关系模式R的一个分解, 也称为数据库模式43 关系模式的分解关系模式的分解l 例例4.8: 将R=(ABCD,AB,BC,BD,CA)分解为关于U1=AB,U2=ACD两个关系,求R1,R2 。l 解: R1=(AB,AB,BA) ) R2=(ACD,AC,CA,AD )关系模式分解必须遵守两个准则遵守两个准则 (1)无损性:信息不失真(不增减信息)。 (2)函数依赖保持性:不破坏属性间存在的依赖关系。 4 4.3.2 .3.2 无损分解无损分解 例例4 4. .9 9 设有关系模式设有关系模式R R(ABCABC),

41、),分解成分解成r rABAB,ACAC。 (1 1)设设 F F A C A C是是 R R上上 FDFD集。图集。图1 1是是 R R上的一个上的一个关系关系 r r, 图图2 2和图和图3 3是是 r r在模式在模式ABAB和和ACAC上的投影上的投影r1r1和和r2r2。显然,此时有显然,此时有r1 r1 r2= rr2= r。也就是在也就是在r r投影、联接以投影、联接以后仍然能恢复成后仍然能恢复成r r,即未丢失信息,这正是我们所即未丢失信息,这正是我们所希望的。这种分解称为希望的。这种分解称为“无损分解无损分解”。 RABC111121r1AB1112r2AC11 例例4 4.

42、.1010 设有关系模式设有关系模式R R(ABCABC),),分解成分解成r rABAB,ACAC。 (2)(2)设设F FB CB C是是R R上的上的FDFD集。图集。图1 1是是R R上的一个关系上的一个关系r r,图,图2 2和和图图3 3是是r r在模式在模式ABAB和和ACAC上的投影上的投影r1r1和和r2r2,图图4 4是是r1 r2r1 r2。此时此时r1 r2rr1 r2r。也就是也就是r r在投影、联接以后比原来在投影、联接以后比原来r r的元组还要的元组还要多(增加了噪声),把多(增加了噪声),把原来的信息丢失原来的信息丢失了。这种分解是我们了。这种分解是我们不希望产

43、生的。这种分解称为不希望产生的。这种分解称为“损失分解损失分解”RABC114123r1AB1112r2AC1413RABC114113124123定义定义4.5:设设R R是一个关系模式是一个关系模式, ,F F是是R R上的一个上的一个FDFD集。集。R R分解成数据库模式分解成数据库模式r=Rr=R1 1, ,,R Rk k 。如果如果对对R R中满足中满足F F的每一个关系的每一个关系r r,都有都有 r=r=R1R1(r) (r) R2R2( (r) r) RkRk(r)(r) 那么称分解那么称分解r r相对于相对于F F是是“无损联接分解无损联接分解”(Lossless Join

44、DecompositionLossless Join Decomposition),),简称简称为为“无损分解无损分解”,否则称为否则称为“损失分解损失分解”(Lossy DecompositionLossy Decomposition)。)。 其中符号其中符号RiRi(r r)表示关系表示关系r r在模式在模式RiRi属属性上的投影,性上的投影, 表示自然联接。表示自然联接。 当当r r中只包含两个关系模式时,存在一个较简单的测试定中只包含两个关系模式时,存在一个较简单的测试定理判断分解是否是一个无损分解。理判断分解是否是一个无损分解。定理定理2 2设设r rR1,R2R1,R2是关系模式是

45、关系模式R R的一个分解,的一个分解,F F是是R R上上成立的成立的FDFD集,那么分解集,那么分解r r相相对于对于F F是无损分解的充分必要条是无损分解的充分必要条件是件是(R1R2R1R2)(R1R1R2R2)或(或(R1R2R1R2)(R2R2R1R1)例例4.11:设关系模式R(SAIP),F=SA,SIP,=R1(SA),R2(SIP) 是R上的一个分解,检验分解是否为无损联接? 解:R1R2=SASIP=S R1-R2=SA-SIP=A SAF,所以是无损分解。例:设关系模式例:设关系模式R(ABCD),FR(ABCD),F是是R R上成立的上成立的FDFD集,集,F= F=

46、BA,CABA,CA, =AB,BC是是R上的一个分解,上的一个分解,试试求该分解是否为无损分解。求该分解是否为无损分解。解:解: ABBC=B AB-BC=A BAF,所以所以是无损分解。是无损分解。例:设关系模式例:设关系模式R(ABCD),FR(ABCD),F是是R R上成立的上成立的FDFD集,集,F= F= AB,BC, AD,DCAB,BC, AD,DC, =AB,AC,BD是是R上上的一个分解,的一个分解,试求该分解是否为无损分解。试求该分解是否为无损分解。解:解: ABBD=B BD-AB=D F中不存在中不存在BD 或或 ABBD=B AB-BD=A F中不存在中不存在BA所

47、以所以是损失分解。是损失分解。4 4.3.4 .3.4 保持函数依赖的分解保持函数依赖的分解 分解的另一个特性是在分解的过程中能否保持函数分解的另一个特性是在分解的过程中能否保持函数依赖性,如果不能保持依赖性,如果不能保持 FDFD,那么数据的语义就会出现混那么数据的语义就会出现混乱。乱。设设F F是属性集是属性集U U上的上的FDFD集,集,Z Z是是U U的子集,的子集,F F在在Z Z上的投影用上的投影用Z Z(F F)表示,表示,Z Z(F)(F)XYXYXYF,XYF,且且XYXY Z Z例:设关系模式R(ABCD),F是R上成立的FD集,F= AC,BC,试求F在模式AB和AC上投

48、影。 AB(F)= , AC(F)=AC 定义定义4.6:设设F F是关系模式是关系模式R R的函数依赖集,的函数依赖集,=R=R1 1(U(U1 1,F,F1 1), ), R R2 2(U(U2 2,F,F2 2), R), Rk k(U(Uk k,F,Fk k)为为R R的一个分解,的一个分解, F Fi i=R Ri i(F)(F),如果如果(F(F1 1FF2 2FFk k)F)F(i=1,2,ki=1,2,k) 则分解则分解具有具有保持函数依赖性。保持函数依赖性。 例例4.124.12:将:将R=(ABCD,AB,BC,BD,CA)R=(ABCD,AB,BC,BD,CA)分解为关于

49、分解为关于U U1 1=AB=AB,U U2 2=ACD=ACD两个关系,求两个关系,求R R1 1、R R2 2,并检验分解的无损联接性和分解,并检验分解的无损联接性和分解的函数依赖保持性。的函数依赖保持性。 解:解:F F1 1=R1R1(F)=AB,BA,(F)=AB,BA, F F2 2=R2R2(F)=AC,CA,AD(F)=AC,CA,AD R R1 1=(AB,AB,BA)=(AB,AB,BA) R R2 2=(ACD,AC,CA,AD)=(ACD,AC,CA,AD) U U1 1UU2 2=ABACD=A,=ABACD=A, U U1 1-U-U2 2=AB-ACD=B,ABF

50、, =AB-ACD=B,ABF, 所以所以是无损分解;是无损分解; F F1 1UFUF2 2=AB,BA,AC,CA,ADAB,BC,BD,=AB,BA,AC,CA,ADAB,BC,BD,CA=FCA=F 所以所以是保持函数依赖性。是保持函数依赖性。 例例4 4. .13:13:设关系模式设关系模式R R(WNO,WS,WGWNO,WS,WG)的属性分别表示职的属性分别表示职工的工号、工资级别和工资数目。工的工号、工资级别和工资数目。FDFD有有WNOWSWNOWS,WSWGWSWG。R R分解成分解成r rR1R1,R2R2,其中其中R1R1WNOWNO,WSWS,R2R2WNOWNO,W

51、GWG,验证这个分解是无损分解,验证这个分解是无损分解,但没有保持函数依赖性。但没有保持函数依赖性。 R1 R1上的上的FD (FD (即即R1R1(F F)是是WNOWSWNOWS,R2R2上的上的FD FD ( (即即R2R2(F F)是是WNOWGWNOWG。但从这两个但从这两个FDFD推导不出在推导不出在R R上成立的上成立的FD WSWGFD WSWG,因此分解因此分解r r把把WSWGWSWG丢失了,丢失了,即即r r不保持不保持F F。下图中的(下图中的(a a)和和( (b)b)是两个关系是两个关系r1r1和和r2,r2,(c c)是是r1r2r1r2。r1r1和和r2r2分别

52、满足分别满足R1R1(F F)和和R2R2(F F)。)。但但r1 r2r1 r2违反了违反了WSWGWSWG。WNO WNO WS WS WNOWNO WG WGWNO WNO WS WS WG WGW1 W1 8 8级级 W1W1 2000 2000 W1 W1 8 8级级20002000W2W2 6 6级级 W2 W2 16001600 W2 W2 6 6级级16001600W3W3 6 6级级 W3W3 1400 1400 W3 W3 6 6级级14001400(a a)关系(关系(b b)关系(关系(c c)r1r2r1r2丢失丢失FDFD的分解的分解 如果某个分解能保持如果某个分解

53、能保持FDFD集,那么在数据输集,那么在数据输入或更新时,只要每个关系模式本身的入或更新时,只要每个关系模式本身的FDFD约束约束被满足,就可以确保整个数据库中数据的语义被满足,就可以确保整个数据库中数据的语义完整性不受破坏。显然这是一个良好的特性。完整性不受破坏。显然这是一个良好的特性。 补充例子补充例子: 设关系模式设关系模式R RCITYCITY,STST,ZIPZIP表示各城市表示各城市街道的邮政编码,其中属性分别表示城市、街道名和邮政街道的邮政编码,其中属性分别表示城市、街道名和邮政编码,编码,F F(CITY(CITY,ST)ZIPST)ZIP,ZIPCITYZIPCITY。如果将

54、如果将R R分解分解为为RR1 1,R R2 2 ,其中其中R R1 1STST,ZIPZIP,R R2 2CITY,ZIPCITY,ZIP,由于由于 R R1 1RR2 2=ZIP=ZIP,R R2 2R R1 1=CITY=CITY,ZIPCITYFZIPCITYF 所以所以是无损连接分解是无损连接分解。但由于。但由于 F F1 1R 1R 1(F)(F),F,F2 2R 2R 2(F)(F)ZIPCITY ZIPCITY F F1 1FF2 2ZIPCITYZIPCITY 丢失丢失F F中的中的( (CITYCITY,ST)ZIPST)ZIP,所以所以不是保持函数不是保持函数依赖的分解。

55、依赖的分解。 4 4.4 .4 关系模式的范式关系模式的范式我们把关系模式分解,分解后的关系模式的好与坏,用什我们把关系模式分解,分解后的关系模式的好与坏,用什么标准衡量?么标准衡量?这个标准就是模式的范式(这个标准就是模式的范式(Normal FormsNormal Forms,简简记为记为 NFNF)。)。范式有范式有1 1NFNF、2NF2NF、3NF3NF、BCNFBCNF等多种。等多种。关系模式中的关系要满足一定的要求,满足不同程度的要求为不同的范式l 满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式(1NF)(1NF),l 在第一范式中进一步满足一些

56、要求为在第一范式中进一步满足一些要求为第二范式第二范式(2NF)(2NF),l 以此类推就产生了以此类推就产生了第三范式第三范式(3NF)(3NF)等概念。等概念。l 每种范式都规定了一些限制约束条件每种范式都规定了一些限制约束条件l 1 1NF,2NF,3NF,BCNF,4NF,5NF,NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。一级比一级有更严格的要求。l 各个范式之间的联系可以表示为:各个范式之间的联系可以表示为:5 5NF 4NF BCNF 3NF 2NF 1NFNF 4NF BCNF 3NF 2NF 1NF4 4.4 .4 关系模式的范式关系模式的范式我

57、们把关系模式分解,分解后的关系模式的好与坏,用什我们把关系模式分解,分解后的关系模式的好与坏,用什么标准衡量?么标准衡量?这个标准就是模式的范式(这个标准就是模式的范式(Normal FormsNormal Forms,简简记为记为 NFNF)。)。范式有范式有1 1NFNF、2NF2NF、3NF3NF、BCNFBCNF等多种。等多种。关系模式中的关系要满足一定的要求,满足不同程度的要求为不同的范式l 满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式(1NF)(1NF),l 在第一范式中进一步满足一些要求为在第一范式中进一步满足一些要求为第二范式第二范式(2NF

58、)(2NF),l 以此类推就产生了以此类推就产生了第三范式第三范式(3NF)(3NF)等概念。等概念。l 每种范式都规定了一些限制约束条件每种范式都规定了一些限制约束条件l 1 1NF,2NF,3NF,BCNF,4NF,5NF,NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。一级比一级有更严格的要求。l 各个范式之间的联系可以表示为:各个范式之间的联系可以表示为:5 5NF 4NF BCNF 3NF 2NF 1NFNF 4NF BCNF 3NF 2NF 1NF图图 各种范式之间的关系各种范式之间的关系 4 4.4.1 .4.1 第一范式(第一范式(1 1NFNF) 定

59、义定义4 47 7 如果关系模式如果关系模式R R的每个关系的每个关系r r的属性值都的属性值都是不可分的原子值(即每个属性项不能是属性组),那是不可分的原子值(即每个属性项不能是属性组),那么称么称R R是第一范式(是第一范式(First Normal formFirst Normal form,简记为简记为 1 1NFNF)模式。模式。满足满足1 1NFNF的关系称为规范化的关系,否则称为非规的关系称为规范化的关系,否则称为非规范化的关系。关系数据库研究的是规范化的关系。范化的关系。关系数据库研究的是规范化的关系。1 1NFNF是关系模式必须具备的最起码的条件。每个规是关系模式必须具备的最

60、起码的条件。每个规范化的关系都属于范化的关系都属于1 1NFNF,这也是它之所以称为这也是它之所以称为“第一第一”的原因。的原因。 第一范式(1NF):属性不包含属性组的关系下列两个关系模式均不是第一范式:下列两个关系模式均不是第一范式:l 部门部门( (部门号,名称,经理部门号,名称,经理( (正经理,副经理正经理,副经理)l 雇员雇员( (雇员号,姓名,工资雇员号,姓名,工资( (基本工资,补贴,奖基本工资,补贴,奖金金) 可以转化为如下可以转化为如下1 1NFNF的关系:的关系:l 部门部门( (部门号,名称,正经理,副经理部门号,名称,正经理,副经理) )。l 雇员雇员( (雇员号,姓

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论