6第6章-关系数据库模式设计_第1页
6第6章-关系数据库模式设计_第2页
6第6章-关系数据库模式设计_第3页
6第6章-关系数据库模式设计_第4页
6第6章-关系数据库模式设计_第5页
已阅读5页,还剩163页未读 继续免费阅读

下载本文档

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

文档简介

第6章关系数据库模式设计数据库系统原理与设计主讲人:

联系方式:

关系数据库模式???

图1.14数据库系统的体系结构应用程序A1应用程序A2应用程序B1应用程序B2用户A1用户A1外模式A外模式B外模式到模式的映象A外模式到模式的映象B逻辑模式模式到内模式的映象内模式数据库局部逻辑结构概念级DB全局逻辑结构存储级DB存储组织结构DBMSOS用户级DB用户A1用户A1学生关系(学号,姓名,性别,出生年月,籍贯,专业代码,班级)专业关系(专业代码,专业名称)课程关系(课程号,课程名,学时数)设置关系(专业代码,课程代码)学习关系(学号,课程号,分数)教师关系(教工号,教员姓名,教员性别,教员出生年月,教研室,电话)讲授关系(教工号,课程号)

关系数据库模式:在一个实际的数据库应用系统中,把构成该关系数据库的全局逻辑模式的基本表的全体,称为该数据库应用系统的关系数据库模式。

学生关系模式:S(S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE#,CLASS)专业关系模式:SS(SCODE#,SSNAME)课程关系模式:C(C#,CNAME,CLASSH)设置关系模式:CS(SCODE#,C#)学习关系模式:SC(S#,C#,GRADE)教师关系模式:T(T#,TNAME,TSEX,TBIRTHIN,TITLEOF,TRSECTION,TEL)讲授关系模式:TEACH(T#,C#)教学管理数据库系统的数据库模式关系数据库的模式设计问题,是数据库应用系统设计中的核心问题之一。本章中,支撑关系数据库模式设计的函数依赖和规范化理论,是关系数据库设计的重要理论基础,也是本课程学习的主要难点内容。

6.1关系约束与关系模式的表示第6章关系数据库模式设计

Question?

关系数据库模式的设计有哪几种方法呢?

1、E-R模型方法:画出反映用户组织中相互关联的数据及其之间联系的E-R图,再将E-R模型转换成关系模型对应的关系模式。

2、属性表方法:收集、整理和归纳用户组织进行信息管理的各种表格,然后把每个表格转换成一个关系模式。一、关系数据库模式的设计方法表6.1大学教学信息管理系统中的关系模式(表)构建表名学生学籍表课程归属表考试成绩表授课统计表教员信息表拥有的属性学号课程编号学号课程编号教员编号姓名课程名称姓名课程名称教员姓名性别学时数课程号学时数性别出生年月(归属)教研室名称课程名称教员编号出生年月籍贯成绩教员姓名籍贯班级所属专业职称教研室名称所属专业(任课)教研室名称由表6.1可直接得到如下关系模式:学生学籍关系(学号,姓名,性别,出生年月,籍贯,班级,所属专业)课程归属关系(课程编号,课程名称,学时数,教研室名称)考试成绩关系(学号,姓名,课程编号,课程名称,成绩,所属专业)授课统计关系(课程编号,课程名称,学时数,教员编号,教员名称,职称,教研室名称)教员信息关系(教员编号,教员名称,性别,出生年月,职称,教研室名称)

由表6.1可直接得到如下关系模式:学生学籍关系(学号,姓名,性别,出生年月,籍贯,班级,所属专业)课程归属关系(课程编号,课程名称,学时数,教研室名称)考试成绩关系(学号,姓名,课程编号,课程名称,成绩,所属专业)授课统计关系(课程编号,课程名称,学时数,教研室名称,教员编号,教员名称)教员信息关系(教员编号,教员名称,性别,出生年月,职称,教研室名称)

分析可知,在这几个关系模式中,至少存在有2种由一些属性值决定教研室名称属性值的数据依赖关系。

也就是说,一个关系模式中的属性之间存在着一个或多个依赖关系。由于这种依赖是用属性的值来体现的,所以称为数据依赖。

当一般地用属性名集合表示其依赖关系时,就可看作是一种函数依赖。

综上可见,当把所有这些约束完整地反映到对关系模式的描述时,就可得到如下结论:

一个关系模式是一个五元组{R,U,D,DOM,F},并可一般地记为:其中,R是关系名;U是关系的属性集合;D是属性的值域集合;DOM是属性集到值域集合的映射;F是关系中属性集上的一组约束,也即函数依赖集合。二、五元组/三元组关系模式在本章的相关概念讨论中,关系名R、属性集U和依赖集F三者相互关联,相互依存;而值域集合D和映射DOM与各概念的描述则关联性不太大。

所以为了简单起见,本教材后续的内容,把关系模式简化地看作是一个三元组{R,U,F}。且:当且仅当U上的一个关系R满足F时,将称R(U,F)为关系模式{R,U,F}上的一个关系。

6.2对关系模式进行规范化设计的必要性第6章关系数据库模式设计

考察关系模式:

教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)

主键:(T#,C#)

(1)问题:存在有

①数据冗余;

②更新异常;

③插入异常;

④删除异常。教工号姓名职称教研室课程号课程名学时40301徐杨柳副教授403K40301数据库6040301徐杨柳副教授403K40302网络5040302张国庆教授403K40302网络5040302张国庆教授403S40303网络安全4040303张莹讲师403K40304数据挖掘4040304宋歌教授403B40305图像通信50教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)数据冗余存在问题

当某教员同时上几门课程时,教员的基本信息“教工号、姓名、职称、教研室”重复存储,产生了较多的冗余数据。教工号姓名职称教研室课程号课程名学时40301徐杨柳副教授403K40301数据库6040301徐杨柳副教授403K40302网络5040301徐杨柳副教授403K40302网络5040302张国庆教授403S40304数据挖掘4040302张国庆教授403K40303网络安全4040304宋歌讲师403B40305图像通信50教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)数据冗余更新异常存在问题

当某教员的职称发生变化时,就必须对涉及该教员的所有记录的职称属性进行修改,存在潜在的数据不一致性。教工号姓名职称教研室课程号课程名学时40301徐杨柳副教授403K40301数据库6040301徐杨柳副教授403K40302网络5040301徐杨柳副教授403K40302网络5040302张国庆教授403S40304数据挖掘4040302张国庆教授403K40303网络安全4040304宋歌讲师403B40305图像通信50教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)数据冗余更新异常插入异常存在问题

当新调来的某教员还没有上课时,该教员的信息就无法输入数据库,存在插入异常现象。教工号姓名职称教研室课程号课程名学时40301徐杨柳副教授403K40301数据库6040301徐杨柳副教授403K40302网络5040301徐杨柳副教授403K40302网络5040302张国庆教授403S40304数据挖掘4040302张国庆教授403K40303网络安全4040304宋歌讲师403B40305图像通信50教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)数据冗余更新异常插入异常删除异常存在问题

当某教员不再上课时,该教员的信息就必须全部删除,存在删除异常现象。结论:

当关系模式设计的不合理时,就会存在数据冗余、更新异常、插入异常、删除异常。

因此,必须对关系模式进行规范化设计。(2)关系模式产生异常的原因

数据之间存在着一定的数据依赖关系,其实质即是函数依赖。

(3)解决方法:进行关系模式分解。教员任课(教工号,姓名,职称,教研室,课程号,课程名,学时)

教员关系(教工号,姓名,职称,教研室)课程关系(课程号,课程名,学时)

在本章后续的内容中,涉及到比较严格的定义、定律和公式推导,为了表述上的方便,如不做特殊声明,总是假设有如下约定:

(1)用大写英文字母A、B、C、D等表示关系的单个属性。(2)用大写字母U表示某一关系的属性集(全集),用大写字母V、W、X、Y、Z等表示属性集U的子集。

本章后续内容表述上的有关约定:

(3)不再特意地区分关系和关系模式,并用大写字母R,R1,R2,…和,S,S1,S2…表示关系和关系模式。(4)R(A,B,C),R(ABC)和ABC三种表示关系模式的方法是等价的。同理,{A1,A2,…,An}和A1A2…An是等价的,X∪Y和XY是等价的,X∪{A}和XA是等价的。

本章后续内容表述上的有关约定:

(5)用大写英文字母F,F1,…,以及G表示函数依赖集。(6)若X={A,B},Y={C,D},则X→Y,{A,B}→{C,D}和AB→CD三种函数依赖表示方法是等价的。

#

6.3函数依赖第6章关系数据库模式设计

1、函数依赖的概念

定义6.1设有关系模式R(A1,A2,…,An)和属性集U={A1,A2,…,An}的子集X、Y。如果对于任一具体关系r的任何两个元组u和v,只要u[X]=v[X],就有u[Y]=v[Y],则称X函数地决定Y,或Y函数依赖X,记为X

Y。

一、函数依赖的定义1、函数依赖的概念例如:对于课程关系C(C#,CNAME,CLASSH),X={C#}、Y={CNAME,CLASSH}及任何具体关系,当给定X中的某一个具体值时,只能查到由该具体值决定的某个具体课程名和学时数。

课程号课程名学时C401001数据结构70C401002操作系统60C402001计算机原理60C402002通信原理60C403001计算机网络60C403002信息安全技术50C404001信息编码与加密60一、函数依赖的定义由上面的定义和例子说明:

函数依赖描述了每个关系中主键属性与非主键属性之间的关系。对于关系R(A1,A2,…,An)和X→Y来说,属性子集X中包括,且仅仅包括了关系R的主键属性,且对于关系的任何属性子集Y,一定成立X→Y。

显然,对于X→Y,可能存在Y

X、两种情况。

一、函数依赖的定义2、非平凡函数依赖与平凡函数依赖①若有X

Y,且,称X

Y为非平凡函数依赖;②若有X

Y,且Y

X,称X

Y为平凡函数依赖。

一、函数依赖的定义在本章后续的内容中,如不特别声明,总假定讨论的是非平凡依赖。且:①若X

Y,则称X为决定因素。②若Y不依赖于X,则记作XY。③若同时有X

Y和YX成立,则记为XY。一、函数依赖的定义二、具有函数依赖约束的关系模式S({S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE#,CLASS},{SNO}→{SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE,CLASS})SS({SCODE#,SSNAME},{SCODE#}→{SSNAME})C({C#,CNAME,CLASSH},{C#}→{CNAME,CLASSH})CS({SCODE#,C#},{SCODE#,C#}→{SCODE#,C#})SC({S#,C#,GRADE},{S#,C#}→{GRADE})T({T#,TNAME,TSEX,TBIRTHIN,TITLEOF,TRSECTION,TEL},{TNO}→{TNAME,TSEX,TBIRTHIN,TITLEOF,TRSECTION,TEL})TEACH({T#,C#},{T#,C#}→{T#,C#})1、逻辑蕴涵

定义5.2

设有关系模式R(U,F),X、Y是属性集U={A1,A2,…,An}的子集,如果从F中的函数依赖能够推导出X

Y,则称F逻辑蕴涵X

Y,或称X

Y是F的逻辑蕴涵。三、函数依赖的逻辑蕴涵2、F的闭包

所有被F逻辑蕴涵的函数依赖组成的依赖集称为F的闭包,记为F+。显然:①F+中的元素是函数依赖;②如果能计算出F+,就可以很方便地判断某个函数依赖是否被F+逻辑蕴涵。三、函数依赖的逻辑蕴涵三、函数依赖的逻辑蕴涵3、F的闭包F+的计算是一件非常复杂的事情,即使F不大,F+也比较大。

A→ο,AB→ο,AC→ο,ABC→ο,B→ο,C→οA→A,AB→A,AC→A,ABC→A,B→B,C→CA→B,AB→B,AC→B,ABC→B,B→C,=A→C,AB→C,AC→C,ABC→C,B→BC,A→AB,AB→AB,AC→AB,ABC→AB,BC→ο,A→AC,AB→AC,AC→AC,ABC→AC,BC→B,A→BC,AB→BC,AC→BC,ABC→BC,BC→C,A→ABC,AB→ABC,AC→ABC,ABC→ABC,BC→BC,举例:设有关系模式R(A,B,C),其函数依赖集为:F={A→B,B→C},则F的闭包为:

显然,一般地有F

F+。

1、候选键的概念

①能够唯一地标识一个关系中不同元组的一个属性集合;②该属性集中不含有多余的属性。三、候选键的形式化定义2、候选键的形式化定义

设有关系模式R(A1,A2,…,An)和属性集U={A1,A2,…,An}的子集X、Y,F是R的的函数依赖集。如果:①X→A1A2…An属于F+;②不存在X的真子集X’,使X’→A1A2…An∈F+,则称X是R的一个候选键。举例

在课程关系C(C#,CNAME,CLASSH)中,有依赖集F={C#→{CNAME,CLASSH}},判断候选键。

因为F中的唯一的函数依赖的决定因素{C#}已经是单个属性了,所以{C#}是唯一的候选建。当然也就是主键了。6.4函数依赖的公理系统第6章关系数据库模式设计

由前述内容可知,对于关系模式来说,关系的主键实质上是由其依赖集中的函数依赖的决定因素确定的。

O、问题的引出

为了从关系模式的函数依赖集中的函数依赖确定该关系的主键,就需要分析各函数依赖之间的逻辑蕴涵关系,或者至少要根据给定的函数依赖集和函数依赖→,确定→是否属于,这显然涉及到的计算。由于的计算是一件非常复杂的事情,经过一些学者的潜心研究,提出了一组推导函数依赖逻辑蕴涵关系的推理规则,并由W.W.Armstrong于1974年归纳成公理体系,就形成了著名的Armstrong(阿姆斯特郎)公理体系。

1、公理

作用:用于从给定的函数依赖集中推导出被其蕴涵的函数依赖。

一、阿姆斯特朗公理

1、公理

条件:设有关系模式R(U,F),U={A1,A2,…,An}是R的属性集,F是R的属性集U上的函数依赖集,X、Y、Z、W是U的子集。

Armstrong公理为:A1自反律:若Y

X,则X

Y;A2增广律:若X

Y,则XZ

YZ;A3传递律:若X

Y,Y

Z,则X

Z。

一、阿姆斯特朗公理

2、公理的证明定理6.1:Armstrong公理是正确的。证明思路:依据函数依赖的定义进行证明。一、阿姆斯特朗公理

1、公理的三条推论

合并规则:若X

Y且X

Z,则X

YZ

分解规则:若X

Y,且Z

Y,则X

Z

伪传递规则:若X

Y且WY

Z,则WX

Z二、阿姆斯特朗公理的推论

2、推论的正确性定理

证明思路:应用Armstrong公理推导出三个推论。二、阿姆斯特朗公理的推论1、合并规则:若X

Y且X

Z,则X

YZ证明:由条件X→Y,并增广律可得X→XY。由条件X→Z,并增广律可得XY→YZ。利用传递律,由X→XY和XY→YZ,可得X→YZ。二、阿姆斯特朗公理的推论2、分解规则:若X

Y,且Z

Y,则X

Z证明:

已知有X→Y。由条件Z

Y,并自反律可得Y→Z。利用传递律,由X→Y和Y→Z,可得Z→Z。二、阿姆斯特朗公理的推论3、伪传递规则:若X

Y且WY

Z,则WX

Z证明:由条件X→Y,并增广律可得WX→WY。利用传递律,和已知条件WY→Z,可得WX→Z。

二、阿姆斯特朗公理的推论例6.2

对于关系模式(CITY,ST,ZIP),依赖集F={ZIP→CITY,CITYST→ZIP},候选键为{CITY,ST}和{ST,ZIP}。证明有:{STZIP}→{CITY,ST,ZIP}和{CITY,ST}→{CITY,ST,ZIP}。现证明前者。证明:

已知有ZIP→CITY由增广律可得{ST,ZIP}→{CITY,ST}(1)又已知{CITY,ST}→{ZIP}由增广律可得{CITY,ST}→{CITY,ST,ZIP}(2)由(1)和(2),并根据传递律即可得到:{ST,ZIP}→{CITY,ST,ZIP}

3、定理

定理6.2如果Ai(i=1,2,…,n)是关系模式R的属性,则X

A1A2…An成立的充分必要条件是X

Ai(i=1,…,n)均成立。

充分性证明:由条件推出结论;

必要性证明:假设结论成立,推出条件成立。

定理5.2的结论,为关系数据库模式设计中的各个关系主键的确定奠定了基础。

二、阿姆斯特朗公理的推论

1、关系数据库模式2、进行关系模式规范化设计的必要性

数据冗余、更新异常、插入异常、删除异常3、函数依赖用于确定关系中一些属性值决定另一些属性值的依赖和被依赖关系,是进行关系模式规范化的基本依据

小结

4、F的闭包概念:所有被F逻辑隐含的函数依赖组成的集合。5、为了根据已知的函数依赖集合

F

判断某函数依赖是否被

F

逻辑隐含,或能够从

F

中推导出来,引入了函数依赖的公理系统。

公理:自反律、增广律、传递律

推论:合并规则、分解规则、伪传递规则

小结

6、最直观的判断某函数依赖是否能够被F逻辑隐含的方法,是判别该函数依赖是否在F+中。7、由于求

F+

NP

难问题,所以:

下面将引入X关于

F

的闭包概念

X+,目的是通过计算

X+,来判断

X→Y

是否被F逻辑蕴涵,从而避开了直接计算

F+

的难题。

小结

1、X关于F的闭包定义6.4设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X。则称所有用阿姆斯特朗公理从F推导出的函数依赖X→Ai的属性Ai组成的集合称为X关于F的闭包,并记为XF+,通常简记为X+。即X+={Ai|用公理从F推出的X→Ai}显然有X

X+。三、X关于F的闭包及其计算例6.3

已知关系模式R(A,B,C)上有函数依赖集F={A

B,B

C},求X分别等于A、B、C时的X+。解:{

求解时的主要依据是Armstrong公理及推论

}

对于X=A,因为有A→A,且已知A→B,B→C,则有A→C,所以有X+=ABC。

对于X=B,因为有B→B,且已知B→C,所以有B+=BC。

对于X=C,显然有X+=C。依据定义6.4计算X关于F的闭包:定理6.3设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y。则X

Y能用阿姆斯特朗公理从F导出的充分必要条件是Y

X+。

该定理的意义:

把判定X

Y是否能从F根据阿姆斯特朗公理导出,也即该函数依赖是否被F蕴涵的问题,转化成了X+是否包含Y的问题:即当X+包含Y时,说明X

Y能从F根据阿姆斯特朗公理导出。(求X+成了关键)利用X+判断某一函数依赖是否能从F导出的方法:

2X关于F的闭包X+的计算

求X+算法的思路:

①从给定的属性集X出发(设X’=X)②如果发现X’包含了F中的某个函数依赖左边的属性,就把该依赖右边的属性添加到X’中。即对于F中的所有V

W,若有V

X’,则有X’=X’W。③循环第②步的过程不断扩充X’,直到该集合再也无法扩展时,得到的结果就是X+。

三、X关于F的闭包及其计算

算法6.1

求X+的算法:

输入:关系模式R的全部属性集U,U上的函数依赖集F,U的子集X。

输出:X关于F的闭包X+。

方法:(1)X(0)=X。(2)从F中找出满足条件V

X(i)的所有函数依赖V→W,并把所有的V→W中的属性W组成的集合记为Z;也即从F中找出那些其决定因素是X(i)的子集的函数依赖,并由这些函数依赖的被决定因素组成一个集合,设其(被记为)Z。(3)若Z

X(i),则转(5)。(4)否则,X(i+1)=X(i)Z,并转(2)。(5)停止计算,输出X(i),即为X+。

3、应用举例

例6.4

已知有函数依赖集F={AB→C,BC→D,ACD→B,D→EG,BE→C},属性集U={A,B,C,D,E,G},且X=BD,求X+。

解:三、X关于F的闭包及其计算

求X+的算法:

输入:关系模式R的全部属性集U,U上的函数依赖集F,U的子集X。

输出:X关于F的闭包X+。

方法:(1)X(0)=X。(2)从F中找出满足条件V

X(i)的所有函数依赖V→W,并把所有的V→W中的属性W组成的集合记为Z;也即从F中找出那些其决定因素是X(i)的子集的函数依赖,并由这些函数依赖的被决定因素组成一个集合,设其(被记为)Z。(3)若Z

X(i),则转(5)。(4)否则,X(i+1)=X(i)Z,并转(2)。(5)停止计算,输出X(i),即为X+。U={A,B,C,D,E,G}F={AB→C,BC→D,ACD→B,D→EG,BE→C}X=BD1、依赖集的等价与覆盖定义定义6.5

设F和G是两个函数依赖集,如果F+=G+,则称F和G等价。如果F和G等价,则称F覆盖G,同时也称G覆盖F。

判断依赖集等价的方法:定理6.4

F+=G+的充要条件是F

G+和G

F+。四、最小函数依赖集根据集合运算规则,具体判断F等价于G的方法:

由定理6.4可知,为了判断F和G是否等价,只要判断对于F中的每一个函数依赖X

Y是否都属于G+,若都属于G+,则F

G+。只要发现某一个函数依赖X

Y不属于G+,就说明F+≠G+。对于G中的每一个函数依赖也作同样的处理。当同时成立F

G+和

GF+时,则F和G等价。四、最小函数依赖集

由于计算F+和G+是NP难问题,所以在实际中,并不需要计算闭包F+和G+,而只要根据的定理6.3,分别计算XF+

和XG+:(1)为了判断F

G+,只要对F中的每一个函数依赖X

Y计算X关于G的闭包XG+,若Y

XG+,则说明X

Y属于G+。(2)同理,为了判断GF+,只要对G中的每一个函数依赖X

Y计算X关于F的闭包XF+

,若Y

XF+,则说明X

Y属于F+。

由函数依赖集等价性引出的结论:

推论6.4

每一个函数依赖集都被其右端只有一个属性的函数依赖组成的依赖集所覆盖。

推论6.4证明的主要理论根据:分解规则与合并过则。

四、最小函数依赖集

2最小函数依赖集定义6.6满足下列条件的函数依赖集F称为最小函数依赖集。①F中每一个函数依赖的右端都是单个属性;②对F中任何函数依赖X

A,F-{X

A}不等价于F;③对F中的任何函数依赖X

A和X的任何真子集Z,(F-{X

A})∪{Z

A}不等价于F。四、最小函数依赖集

最小依赖集的求解方法:

(1)用分解规则将F中的所有函数依赖分解成右端为单个属性的函数依赖;

(2)去掉F中冗余的函数依赖,即对于F中任一函数依赖X

Y:

①设G=F-{X

Y};②求X关于G的闭包XG+;

③看XG+是否包含Y。如果XG+包含Y,则在G中逻辑蕴涵X

Y,说明X

Y是多余的函数依赖,从而可得到较小的函数依赖集F=G;如果XG+不包含Y,则保留X

Y。

④按上述方法逐个考察F中的每一个函数依赖,直到其中所有函数依赖都考察完为止。

注:随着考察顺序的不同可能得到不同的结果。(3)去掉F中函数依赖左端多余的属性,即对于F中左端是非单属性的函数依赖(XY

A),要判断X或Y是不是多余的属性。当要判断Y是否是多余的属性时:①设G=(F-{XY

A})∪{X

A};②求XY关于G的闭包,(XY)G+;③如果(XY)G+包含A,则说明Y是多余的属性,从而可得到较小的函数依赖集F=G;如果(XY)G+不包含A,则说明XY

A不被G逻辑隐含,说明Y不是多余的属性。

或者求X关于F的闭包,(X)F+

如果(X)F+包含A,则Y是多余属性

④当Y不是多余属性时,要接着用类似的方法判断X是不是多余的属性(设G=(F-{XY

A})∪{Y

A})。

⑤如果X和Y都不是多余的属性时,则保留该函数依赖XY

A。⑥接着按上述方法逐个考察F中左端是非单属性的其他函数依赖,直到其中的所有左端是非单属性的函数依赖都考察完为止。

3、最小依赖求解方法举例例6.5求函数依赖集F的最小函数依赖集,其中:AB

C,C

A,BC

D,ACD

B,D

EG,BE

C,CG

BD,CE

AGF=AB

C,C

A,BC

D,ACD

B,D

E,D

G,BE

C,CG

BCG

D,CE

A,CE

G解:①分解F,使每个函数依赖右端均为单个属性F1=3、举例:求函数依赖集F的最小函数依赖集。②去掉F中冗余的函数依赖:即试着去掉F1中的每一个函数依赖,看它是否被F1中剩余的函数依赖蕴含。

◆对于AB

C,求AB关于F1-{AB

C}的闭包。显然,对于(AB)(0)=AB,在F1-{AB

C}中不存在决定因素是AB的子集的函数依赖,也即有(AB)+=AB,且C(AB)+,所以AB

C不多余。AB

C,C

A,BC

D,ACD

B,D

E,D

G,BE

C,CG

BCG

D,CE

A,CE

GF1=3、举例:求函数依赖集F的最小函数依赖集。②去掉F中冗余的函数依赖:

◆对于ACDB,求ACD关于F1-{ACDB}的闭包。由于对于(ACD)+=ABCDEG,且B

(ACD)+=ABCDEG,所以ACD

B是多余的。按照上述思路依次考察F1中的每个函数依赖,可得:AB

C,C

A,BC

D,ACD

B,D

E,D

G,BE

C,CG

BCG

D,CE

A,CE

GF1=3、举例:求函数依赖集F的最小函数依赖集。解:②去掉F中冗余的函数依赖:

去掉多余的依赖ACDB,CGD和CEA。可得:

或,去掉多余的函数依赖CGB和CEA,可得:

AB

C,C

A,BC

D,D

E,D

G,BE

C,CG

B,CE

GF21=AB

C,C

A,BC

D,ACD

B,D

E,D

G,BE

C,CG

D,CE

GF22=3、举例:求函数依赖集F的最小函数依赖集。解:③去掉(F21和F22)左端的多余属性:

Fmin=或Fmin=AB

C,C

A,BC

D,D

E,D

G,BE

CCG

B,CE

GAB

C,C

A,BC

D,CD

B,D

E,D

G,BE

C,CG

D,CE

G6.5关系模式的分解第6章关系数据库模式设计

如本章的6.2节所述,为了消除某些关系模式可能存在的数据冗余、插入异常、删除异常和修改异常,就需要对这些关系模式进行分解。

1、F在Ui上的投影

定义6.7设Ui是属性集U的一个子集,则函数依赖集合{X→Y|X→Y

F+∧XY

Ui}的一个覆盖Fi,称为F在Ui上的投影。

定义6.7的含义和要说明的问题:

对于属性集U的子集Ui,存在一个与其对应的依赖子集Fi,且由Fi中的每个函数依赖X→Y的决定因素X和被决定因素Y组成的属性子集XY均是Ui的子集。一、关系模式分解的概念另一个更明确的F在Ui上的投影定义:

定义6.8设有关系模式R(U,F)和U={A1,A2,…,An}的子集Z,把F+中所有满足XY

Z的函数依赖X→Y组成的集合,称为依赖集F在属性集Z上的投影,记为πz(F)。

由定义5.8知,显然有:

πz(F)={X→Y|X→Y

F+,且XY

Z}所以定义5.8和定义5.7本质上是相同的。

一、关系模式分解的概念

2、关系模式的分解

定义6.9设有关系模式R(U,F),如果U=U1∪U2

∪…∪Uk,并且对于任意的i,j(1≤i,j≤k),不成立Ui

Uj,且Fi是F在Ui上的投影,则称:ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}是关系模式R(U,F)的一个分解。

定义6.9指出:属性子集集合{U1,U2,…,Uk}中的任意一个属性子集Ui,不会是其它任何一个属性子集Uj的子集。一、关系模式分解的概念

关系模式分解应用举例:

例6.6设有关系模式R(U,F),U={S#,SD,SM},F={S#→SD,SD→SM},并设关系R有如下表的当前值r。

下面采用三种不同方法对关系R进行分解。S#SDSMS1D1M1S2D2M1S3D3M2一、关系模式分解的概念4、F={S#→SD,SD→SM}(1)方法1S#SDSMS1D1M1S2D2M1S3D3M2

设:ρ1={R1(S#,φ),R2(SD,φ),R3(SM,φ)}即有,Fi=φ和Ri=πi(R(U))对于已知关系r在πi(R(U))上的投影,有:r1={S1,S2,S3}r2={D1,D2,D3}r3={M1,M2}

S1D1M1,S2D1M1,S3D1M1,S1D1M2,S2D1M2,S3D1M2,S1D2M1,S2D2M1,S3D2M1,S1D2M2,S2D2M2,S3D2M2,S1D3M1,S2D3M1,S3D3M1,S1D3M2,S2D3M2,S3D3M2对关系模式的分解,理应要求分解后的各关系能恢复原关系的原值,一般采用自然联接方法恢复可得:

r1

r2

r3≡rr1r2r3=r1×r2×r3联接结果为:

r1={S1,S2,S3}r2={D1,D2,D3}r3={M1,M2}

比较关系R原来的当前值:S#SDSMS1D1M1S2D2M1S3D3M2和向R1、R2和R3投影后,再联接恢复的值:

S1D1M1,S2D1M1,S3D1M1,S1D1M2,S2D1M2,S3D1M2,S1D2M1,S2D2M1,S3D2M1,S1D2M2,S2D2M2,S3D2M2,S1D3M1,S2D3M1,S3D3M1,S1D3M2,S2D3M2,S3D3M2可知:方法1的分解不保持信息无损,不具有无损联接性。(2)方法2(F={S#→SD,SD→SM})设:ρ2={R1({S#,SD},{S#→

SD}),R2({S#,SM},{S#→SM})}

因为有:

S#→φ,S#SD→φ,SD→φ,S#→S#,S#SD→S#,SD→SD,=S#→SD,S#SD→SD,S#→S#SD,S#SD→S#SDS#→φ,S#SM→φ,SM→φ,S#→S#,S#SM→S#,SM→SM,=

S#→SM,S#SM→SM,S#→S#SM,S#SM→S#SM

分析可知,原F中的SD→SM均不在上面2个闭包中,即:F1∪F2不等于F,但可以证明成立:r1r2=r所以:方法2的分解保持信息无损,但不保持函数依赖。

F={S#→SD,SD→SM}(3)方法3设:ρ2={R1({S#,SD},{S#→SD}),R2({SD,SM},{SD→SM})}因为有:r1={(S1,D1),(S2,D2),(S3,D3)};F1={S#→SD}r2={(D1,M1),(D2,M1),(D3,M2)};F2={SD→SM}

可以证明成立:r1r2=r和F1∪F2=F所以:方法3的分解既能保持信息无损,又能保持函数依赖。S#SDSMS1D1M1S2D2M1S3D3M2

1、保持无损分解的定义

定义5.10设有关系模式R(U,F),ρ=(R1,R2,…,Rk)是R的一个分解。如果对于R的任一满足F的关系r,成立:r=πR1(r)πR2(r)…πRk(r)则称分解ρ是无损联接分解。也称该分解ρ是保持无损的分解。二、保持无损的分解

2、判断保持无损分解的方法算法5.2:判断一个分解的无损联接性输入:关系模式R(A1,…,An),函数依赖集F,R的一个分解ρ=(R1,R2,…,Rk)。输出:ρ是否为无损联接的判断。方法:

二、保持无损的分解算法6.2判断一个分解的无损联接性方法:

(1)构造一个k行n列表S。其中,第i行对应于关系模式R分解后的模式Ri,第j列对应于关系模式R的属性Aj。表中第i行第j列位置的元素填入方法为:如果Aj在Ri中,则在第i行第j列的位置上填上符号aj,否则填上符号bij。二、保持无损的分解(2)对于F中的所有函数依赖X→Y,在表中寻找在X的各个属性上都分别相同的行,若至少存在两个或多个这样的行,则将这些行上对应的Y属性上的元素值,修改成具有相同符号的元素值,修改方法为:①当这些行的Y属性上的某一行上都为aj(j为Y属性对应的那些列的列序号,且j=1,2,…,n)时,则把该行的Y属性上的其它元素都修改成aj;②当这些行的Y属性列中没有这样的aj时,则以Y属性列中下标较小的bij为基准,把这些行的Y属性列上的其它元素都修改成bij。(3)按(2)逐个考察F中的每一个函数依赖,如果发现某一行变成了a1,a2,…,an,则分解ρ具有无损联接性;如果直到检验完F中的所有函数依赖也没有发现有这样的行,表也不再变化,则分解ρ不具有无损联接性。

二、保持无损的分解

3、应用举例例6.7

设R(ABCDE),F={A→C,B→C,C→D,DE→C,CE→A},分解ρ={R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE)},检验分解ρ是否具有无损联接性。

R(ABCDE),F={A→C,B→C,C→D,DE→C,CE→A},ρ={R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE)}

解:第一步,构造表S。ABCDER1a1b12b13a4b15R2a1a2b23b24b25R3b31a2b33b34a5R4b41b42a3a4a5R5a1b52b53b54a5二、保持无损的分解第二步:①根据函数依赖A→C修正表S。ABCDER1a1b12b13a4b15R2a1a2b23/b13b24b25R3b31a2b33b34a5R4b41b42a3a4a5R5a1b52B53/b13b54a5二、保持无损的分解第二步:②根据函数依赖B→C修正表S。ABCDER1a1b12b13a4b15R2a1a2b13b24b25R3b31a2b33/b13b34a5R4b41b42a3a4a5R5a1b52b13b54a5二、保持无损的分解第二步:③根据函数依赖C→D修正表S。ABCDER1a1b12b13a4b15R2a1a2b13b24

/a4b25R3b31a2b13b34/a4a5R4b41b42a3a4a5R5a1b52b13b54/a4a5二、保持无损的分解第二步:④根据函数依赖DE→C修正表S。ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3b31a2b13/a3a4a5R4b41b42a3a4a5R5a1b52b13/a3a4a5二、保持无损的分解第二步:⑤根据函数依赖CE→A修正表S。ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3b31/a1a2a3a4a5R4b41/a1b42a3a4a5R5a1b52a3a4a5

第三步:通过判断,给出结论。二、保持无损的分解第三步:通过判断,给出结论。

表中的第三行都变成aj了,所以分解ρ具有无损联接性。ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3a1a2a3a4a5R4a1b42a3a4a5R5a1b52a3a4a5二、保持无损的分解

4、仅分解成两个子关系的无损联接性判断

定理6.5

设有关系模式R(U,F),ρ=(R1,R2)是R的一个分解,当且仅当:(R1∩R2)→(R1-R2)∈F+或

(R2∩R1)→(R2-R1)∈F+时,ρ具有无损联接性。二、保持无损的分解例6.9设有关系模式R(A,B,C),函数依赖集F={A→B,C→B},分解ρ={R1,R2},其中R1=AB,R2=BC。检验分解ρ是否具有无损联接性。

解:

二、保持无损的分解例6.10在例5.6中,已知有关系模式(S#,SD,SM),函数依赖集={S#→SD,SD→SM}。且对于其中的方法(3),已知有分解={(S#,SD),(SD,SM)},且已指出分解是无损联接分解,下面进行验证。解:

二、保持无损的分解

对于关系模式R(U,F),保持无损性讨论的是R(U)被分解成多个是Ri时的信息保持问题。对于R(F),同样存在分解成多个Ri时,对应的R(Fi)是否成立,以及能否保持原来F的依赖性问题。三、保持依赖的分解

1、函数依赖分解的定义

定义5.11设有关系模式R(U,F),ρ=(R1,R2,…,Rk)是R的一个分解。如果所有函数依赖集πRi(F)(i=1,2,…,k)的并集逻辑蕴含F中的每一个函数依赖,则称分解ρ具有依赖保持性,也即分解ρ保持依赖集F。即:三、保持依赖的分解2、保持依赖分解的判定方法

①对ρ中的每一个Ri求πRi(F)②求③对F中每一个函数依赖X→Y,判断能否由导出,如果均能导出,则分解ρ具有依赖保持性;否则分解ρ不具有依赖保持性。三、保持依赖的分解例6.11已知有关系模式R(S#,SD,SM)和函数依赖集F={S#→SD,SD→SM},且知有分解:ρ3={R1({S#,SD},{S#→SD}),R2({SD,SM},{SD→SM})}。验证分解ρ3是保持依赖的分解。

解:因为所以,具有保持依赖性。

三、保持依赖的分解例6.12已知有关系模式R(S#,SD,SM)和函数依赖集F={S#→SD,SD→SM},且知有分解ρ2={R1({S#,SD},{S#→SD}),R2({S#,SM},{S#→SM})}。验证分解ρ2具有无损联接性,但不具有保持依赖性。

解:(1)验证无损联接性因为(R1∩R2)→(R1-R2)=({S#,SD}∩{S#,SM})→({S#,SD}-{S#,SM})=S#→SD∈F所以分解具有无损联接性。三、保持依赖的分解例6.12已知有关系模式R(S#,SD,SM)和函数依赖集F={S#→SD,SD→SM},且知有分解ρ2={R1({S#,SD},{S#→SD}),R2({S#,SM},{S#→SM})}。验证分解ρ2具有无损联接性,但不具有保持依赖性。

解:(2)验证不具有保持依赖性

因为πR1(F)∪πR2(F)={S#→SD}∪{S#→SM}={S#→SD,S#→SM}显然,(SD→SM){S#→SD,S#→SM}也即,πR1(F)和πR2(F)的并集不逻辑蕴含中的函数依赖SD→SM。所以分解ρ2不具有保持依赖性。由前述的例子可知,一个关系模式的分解有四种情况:

(1)既具有无损联接性,又具有保持依赖性;(2)具有无损联接性,但不具有保持依赖性;(3)不具有无损联接性,但具有保持依赖性;(4)既不具有无损联接性,又不具有保持依赖性。

显然,符合要求的关系模式分解应是第(1)种情况。

课堂练习

设有R(ABC),ρ={AC,BC},F={A→B,B→C};判断该分解是否具有无损联接和保持函数依赖。6.6关系模式的规范化第6章关系数据库模式设计

1、关系属性的分类一、候选键的求解方法定义6.12对于给定的关系S(U,F),关系S的属性按其在函数依赖的左端和右端的出现分为4类:

①L类:仅出现在F中的函数依赖左部的属性;

②R类:仅出现在F中的函数依赖右部的属性;③LR类:在F中函数依赖的左右两边均出现的属性。④N类:在F中函数依赖的左右两边均未出现的属性;一、候选键的求解方法2、候选键的充分条件定义6.13:

设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X:(1)若X是L类属性,则X必为R的某一候选键的成员;(2)若X是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选键;(3)若X是R类属性,则X不是任一候选键的成员;(4)若X是N类属性,则X必包含在R的某一候选键中;(5)若X是R的N类属性和L类属性组成的属性集,且X+包含了R的全部属性,则X是R的唯一候选键。

一、候选键的求解方法3、单属性候选键的依赖图判定方法

定义6.14:设关系模式R(U,F)的依赖集F已经为最小依赖集(即,蕴含依赖右端只有单个属性),则关系模式R的函数依赖图G是一个有序二元组G=(R,F),且:(1)U={A1,A2,…,An}是一个有限非空集,Ai是G中的结点。(2)F是G的一个非空边集,AiAj是G中的一条有向边(Ai,Aj)。一、候选键的求解方法3、单属性候选键的依赖图判定方法

定义6.14:(3)若结点Ai与结点Aj之间存在一条有向边(Ai,Aj),则该边称为Ai的出边和Aj的入边。

(4)只有出边而无入边的结点称为原始点(表示L类属性);只有入边而无出边的结点称为终结点(表示R类属性);既有入边又有出边的结点称为途中点(表示LR类属性);既无入边又无出边的结点称为孤立点(表示N类属性)。一、候选键的求解方法3、单属性候选键的依赖图判定方法

定义6.14:(5)原始点和孤立点统称为关键点;关键点对应的属性称为关键属性;其他结点不能到达的回路称为独立回路。

定义6.14实质上就是函数依赖图的构建方法。

一、候选键的求解方法算法6.3:单个属性候选键的依赖图判定算法。

输入:关系模式R(A1,A2,…,An),R的函数依赖集F;输出:R的所有候选键。

方法:①求F的最小依赖集Fmin;②构造函数依赖图;③从图中找出关键属性集X(X可为空);④查看G中有无独立回路,若无则X即为R的唯一候选键,转⑥;⑤从各独立回路中各取一结点对应的属性与X组合成一候选键,并重复这一过程,取尽所有可能的组合,即为R的全部候选键;⑥输出候选键,算法结束。

4、多属性候选键的求解法算法6.4:多属性候选键的依赖图判定算法

输入:关系模式R(A1,A2,…,An),R的依赖集F;

输出:R的所有候选键。

一、候选键的求解方法

①将R的所有属性分为L、R、N和LR四类,并令X代表L和N类,Y代表LR类;②求X+。若X+包含了R的全部属性,则X是R的唯一候选键,转⑤;否则,转③;③在Y中取一属性A,求(XA)+,若它包含了R的全部属性,则XA为R的一个候选键;④重复③,直到Y中的属性依次取完为止;⑤从Y中除去已成为主属性的属性A;⑥在剩余属性中依次取两个、三个、…,将其记为集合B,求(XB)+:若(XB)+包含了R的全部属性,且自身不包含已求出的候选键,则XB为R的一个候选键;⑦重复⑥,直到Y中的属性按方法⑥的组合依次取完为止;⑧输出候选键,算法结束。例5.14设有关系模式R(A,B,C,D,E)和R的函数依赖集F={A

BC,CD

E,B

D,E

A},求R的所有候选键。解:①根据F对R的所有属性进行分类:ABCDE均为LR类属性,并令Y=ABCDE。②从Y中依次取一个属性,并计算该属性关于F的闭包:A+=ABCDE,包含了R的全部属性,所以A为R的一个候选键;B+=BD,没有包含R的全部属性,所以B不是R的候选键;C+=C,没有包含R的全部属性,所以C不是R的候选键;D+=D,没有包含R的全部属性,所以C不是R的候选键;E+=ABCDE,包含了R的全部属性,所以E为R的一个候选键。③从Y中去掉已经是候选键中的属性A和E,并令Y=BCD。

④再从Y中依次取两个属性,并计算该属性集合关于Y的闭包:(BC)+=ABCDE,包含了R的全部属性,所以BC为R的一个候选键;(BD)+=BD,没有包含R的全部属性,所以BD不是R的候选键;(CD)+=ABCDE,包含了R的全部属性,所以CD为R的一个候选键。综上可知:R的候选键有A、E、BC和CD。

1、第一范式定义定义6.15:如果关系模式R中的每一个属性的值域的值都是不可再分的最小数据单位,则称R是满足第一范式(1NF)的关系模式,也称R∈1NF。二、第一范式(1NF)DEPNAMELOCS-PARTDEP1XIANP1P2DEP2WUHANP1P3DEP3CHENGDUP2TNAMEADDRESSPHONE徐浩张明敏李阳洋宋歌郭宏伟5-1-212-2-46-4-723-3-810-2-388992885188882688158(a)属性S-PART有重复值(b)属性PHONE有空白值图5.10非规范关系2、非规范关系

二、第一范式(1NF)(a)属性S-PART的规范关系(b)属性PHONE的规范关系把某些非规范关系转换成规范关系的方法:

TNAMEADDRESSPHONE徐浩张明敏李阳洋宋歌郭宏伟5-1-212-2-46-4-723-3-810-2-3889928851888826NULL88158DEPNAMELOCS-PARTDEP1XIANP1DEP1XIANP2DEP2WUHANP1DEP2WUHANP3DEP3CHENGDUP2图6.11图6.10的非规范关系转化成的规范关系二、第一范式(1NF)

1、部分依赖与完全依赖

定义5.16:设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y。如果X→Y,并且对于X的任何真子集Xˊ,都有Xˊ→Y不成立,则称Y完全依赖于X,记为XY。三、第二范式(2NF)例6.15在课程关系C(C#,CNAME,CLASSH)中,有:{C#}{CNAME}、{C#}{CLASSH}和{C#}{CNAME,CLASSH}

在学习关系SC(S#,C#,GRADE)中,有:

{S#}{GRADE}、{C#}{GRADE}

{S#,C#}{GRADE}三、第二范式(2NF)

定义6.17:设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y。如果X→Y,但Y不完全依赖于X,则称Y部分依赖于X,记为XY。

比较定义6.16和定义6.17可知:所谓完全依赖,就是不存在X的真子集Xˊ(XˊX

,Xˊ≠X)使Xˊ→Y成立;若存在X的真子集Xˊ使Xˊ→X成立,则称为部分依赖。三、第二范式(2NF)

定义6.17:设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y。如果X→Y,但Y不完全依赖于X,则称Y部分依赖于X,记为XY。

同时,由定义6.16和定义6.17可知,当X是仅包含有一个属性的属性子集时,Y都是完全依赖于X的,只有当X是由多个属性组成的属性子集时,才可能会有Y完全依赖于X和Y部分依赖于X二种情况。三、第二范式(2NF)

2、第二范式

定义6.18:如果一个关系模式R属于1NF,并且它的每一个非主属性都完全函数依赖于它的一个候选键,则称R为满足第二范式(2NF)的关系模式,也称R∈2NF。

换句话说,如果一个关系模式R属于1NF,并且不存在非主属性对候选键的部分依赖,则称该关系模式R是一个满足第二范式的关系模式,也即R属于2NF。三、第二范式(2NF)

2、第二范式

定义6.18:如果一个关系模式R属于1NF,并且它的每一个非主属性都完全函数依赖于它的一个候选键,则称R为满足第二范式(2NF)的关系模式,也称R∈2NF。

显然,如果一个关系模式属于1NF,并且它的主键只由一个属性组成(单属性主键)时,就不可能存在非主属性对候选键的部分依赖,所以一定属于2NF。

如果关系模式的候选键是复合候选键(由多个属性组成的候选键),才可能出现非主属性部分依赖于候选键的情况。

三、第二范式(2NF)例6.16:设有关系模式SCT(S#,C#,GRADE,TNAME,TRESECTION)和关系模式SCT的具体关系:S#C#GRADETNAMETRSECTION200401001C40100190徐浩计算机200401001C40200290李阳洋指挥自动化200401001C40300185宋歌网络工程200401002C40100175徐浩计算机200401002C40200288李阳洋指挥自动化200401003C40200269李阳洋指挥自动化200402001C40100187徐浩计算机200402001C40100290张国庆计算机200402002C40300192宋歌网络工程

分析可知有函数依赖集F={(S#,C#)

GRADE,C#

TNAME,TNAME

TRESECTION},R是满足第几范式的关系模式?

例6.16:SCT(S#,C#,GRADE,TNAME,TRESECTION)F={(S#,C#)

GRADE,C#

TNAME,TNAME

TRESECTION}结论:R满足1NF,不是2NF。当将SCT分解成SC、CT后,才均为2NF:SC(S#,C#,GRADE)F1={(S#,C#)

GRADE}CT(C#,TNAME,TRESECTION)F2={C#

TNAME,TNAME

TRESECTION}

◆需要注意的是,在一个1NF关系模式转换成2VF关系模式后,可以在一定程度上减少原1NF关系中存在的插入异常、删除异常、数据冗余等问题,但并不能完全消除该关系中的所有异常和数据冗余。

2、第二范式三、第二范式(2NF)1、传递依赖

设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y、Z。如果有X

Y、Y

Z、Z-Y≠φ,Z-X≠φ和YX,则称Z传递依赖于X,记为XZ。四、第三范式(3NF)1、传递依赖

设有关系模式R(U,F)和属性集U={A1,A2,…,An}的子集X、Y、Z。如果有X

Y、Y

Z、Z-Y≠φ,Z-X≠φ和YX,则称Z传递依赖于X,记为XZ。

在定义5.19中,Z-Yф说明在属性子集Z中至少存在一个属性不在属性子集Y中,因而保证了Y→Z是非平凡依赖。同理,Z-Xф说明在属性子集Z中至少存在一个属性不在属性子集X中,因而保证了X→Z是非平凡依赖;如果同时存在X→Y,Y→X,则有XY,而YX保证了该定义中只成立X→Y而不成立Y→X

温馨提示

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

评论

0/150

提交评论