1、1数据库原理数据库原理第三章第三章 关系运算关系运算本章内容概要本章内容概要l 关系数据模型关系数据模型l关系数据模型定义关系数据模型定义l关键码和表之间的联系关键码和表之间的联系l关系模式关系模式l关系模型的完整性规则关系模型的完整性规则l 关系运算关系运算l关系查询语言和关系运算关系查询语言和关系运算l关系代数运算符的分类关系代数运算符的分类l传统的集合运算传统的集合运算l专门的关系运算专门的关系运算l扩充的关系代数操作(自学)扩充的关系代数操作(自学)l 关系代数表达式的优化(自学)关系代数表达式的优化(自学)l关系数据库关系数据库l关系数据库是通过关系数据模型建立起来的数关系数据库是通
2、过关系数据模型建立起来的数据库系统据库系统 。l关系数据库有一个严密的、能够数学推导的、关系数据库有一个严密的、能够数学推导的、容易理解的、得到实践证明正确的是关系数据容易理解的、得到实践证明正确的是关系数据模型。模型。l 基本概念:基本概念:利用利用集合代数集合代数、谓词演算谓词演算等抽象的等抽象的数学知识,深刻而透彻地介绍了数学知识,深刻而透彻地介绍了关系数据结构关系数据结构,关关系数据库操作系数据库操作及及关系数据库完整性关系数据库完整性这关系数据模型这关系数据模型的的三要素三要素的概念。的概念。l数据模型中的数据描述数据模型中的数据描述,组成的基本要素组成的基本要素.3.13.1关系数
3、据模型关系数据模型关系数据模型关系数据模型 关系数据模型三要素关系数据模型三要素-关系数据结构关系数据结构、关系操关系操作集合作集合和和关系完整性约束关系完整性约束。1 1、关系模型的数据结构、关系模型的数据结构关系结构关系结构l 关系模型的数据结构:非常单一,在用户看来关关系模型的数据结构:非常单一,在用户看来关系模型中数据的逻辑结构是一张二维表。但关系模系模型中数据的逻辑结构是一张二维表。但关系模型的这种简单的数据结构能够表达丰富的语义,描型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。述出现实世界的实体以及实体间的各种联系。2 2、关系模型的数据操作、
4、关系模型的数据操作关系操作关系操作l 关系模型给出了关系操作的能力,它利用基于数关系模型给出了关系操作的能力,它利用基于数学的方法来表达关系操作,关系模型给出的关系操学的方法来表达关系操作,关系模型给出的关系操作往往不针对具体的作往往不针对具体的RDBMSRDBMS语言来表述。语言来表述。关系模型(续)关系模型(续)3 3、关系的三类完整性约束、关系的三类完整性约束l 关系模型提供了丰富的完整性控制机制,允许定义关系模型提供了丰富的完整性控制机制,允许定义三类完整性:实体完整性、参照完整性和用户自定义三类完整性:实体完整性、参照完整性和用户自定义的完整性。其中实体完整性和参照完整性是关系模型的
5、完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支必须满足的完整性约束条件,应该由关系系统自动支持。用户自定义的完整性是应用领域特殊要求而需要持。用户自定义的完整性是应用领域特殊要求而需要遵循的约束条件,体现了具体领域中的语义约束。遵循的约束条件,体现了具体领域中的语义约束。3.1.13.1.1关系数据模型的定义关系数据模型的定义 域(域(DomainDomain)定义定义1:1:域是一组具有相同数据类型的值的集合。又称为域是一组具有相同数据类型的值的集合。又称为值值域域(用用D D表示表示)。域中所包含的值的个数称为域的域中所包含的值的个数称为域的基数
6、基数(用用m m表示表示)。)。在关系中就是用域来表示属性的在关系中就是用域来表示属性的取值范围取值范围的。的。例如,自然数、整数、实数、长度小于例如,自然数、整数、实数、长度小于1010字节的字符串集字节的字符串集合、合、1-161-16之间的整数之间的整数,它们都是域。它们都是域。又如,又如,D1=张三,李四张三,李四 D1的基数的基数m1为为2 D2=男,女男,女 D2的基数的基数m2为为2 D3=19,20,21 D3的基数的基数m3为为3 笛卡尔积(笛卡尔积(Cartesian ProductCartesian Product)l 定义定义2 2:给定一组域给定一组域D1、D2、Dn
7、(这些域中可以包含相同的这些域中可以包含相同的元素元素,即可以完全不同即可以完全不同(也可以部分或全部相同也可以部分或全部相同),),D1、D2、Dn的的笛卡尔积笛卡尔积为:为:D D1 1D D2 2D Dn n=(d(d1,1,d d2,2,d,dn n)|d)|di iDDi,i,i i1,2,1,2,,n n 由定义可以看出,笛卡尔积也是一个由定义可以看出,笛卡尔积也是一个集合集合。其中:其中:(1)(1)其中每一个元素其中每一个元素(d(d1,1,d d2,2,d,dn n)叫作一个叫作一个n n元组元组(n-(n-tupletuple),或简称为元组,或简称为元组(Tuple(Tu
8、ple)。但元组不是。但元组不是d di i的集合,的集合,元组由元组由d di i按序排列而成。按序排列而成。(2)(2)元素中的每一个值元素中的每一个值d di i叫作一个分量叫作一个分量(Component)(Component)。分。分量来自相应的域量来自相应的域(d(di iDDi i)。(3)(3)若若D Di i(i i1 1,2 2,n n)为有限集,)为有限集,其基数(其基数(Cardinal numberCardinal number)为)为m mi i(i i1 1,2 2,n n),),则则D D1 1D D2 2D Dn n的基数为的基数为n n个域的基数累乘之积个域
9、的基数累乘之积(4)(4)笛卡尔积可表示为一个二维表。表中的每行对应一个元笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。组,表中的每列对应一个域。l如上面例子中如上面例子中D D1 1与与D D2 2的笛卡尔积:的笛卡尔积:D D1 1D D2 2=(=(张三张三,男男),(),(张三张三,女女),(),(李四李四,男男),(),(李四李四,女女)可以表示成二维表,如下表可以表示成二维表,如下表2.12.1所示:所示:姓名姓名 性别性别张三张三男男张三张三女女李四李四男男李四李四女女表表3-3 3-3 笛卡尔积笛卡尔积笛卡尔积是个二维表笛卡尔积是个二维表3 3、关系
10、、关系(RelationRelation)l关系是属性值域的笛卡尔积中有意义的元组的集合关系是属性值域的笛卡尔积中有意义的元组的集合l定义定义3:3:D D1 1D D2 2D Dn n的任何一个子集叫作在域的任何一个子集叫作在域D D1 1,D,D2 2,D Dn n上的关系,用上的关系,用 R(DR(D1 1,D,D2 2,D Dn n)表示。如上表示。如上例中例中D D1 1D D2 2笛卡尔积的子集可以构成关系笛卡尔积的子集可以构成关系T T1 1,如下,如下表所示:表所示:姓名姓名性别性别张三张三男男李四李四女女笛卡尔积的子集笛卡尔积的子集关系关系T1笛卡尔积的二维表笛卡尔积的二维表
11、关系关系T1的二维表的二维表表现形式表现形式关系关系(续续)(1)R R表示关系的名字,表示关系的名字,n n是关系的目或度(是关系的目或度(DegreeDegree)。当当n=1n=1时,称为单元关系。时,称为单元关系。当当n=2n=2时,称为二元关系。时,称为二元关系。当当n=mn=m时,称为时,称为 m m元关系。元关系。(2)(2)关系中的每个元素是关系中的元组。关系中的每个元素是关系中的元组。通常用通常用t t表示表示。(3)(3)关系是笛卡尔积的子集,所以关系也是一个二维表。关系是笛卡尔积的子集,所以关系也是一个二维表。表的每行对应一个元组,表的每列对应一个域。由于表的每行对应一个
12、元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的域可以相同,为了加以区分,必须对每列起一个唯一的名字,称为属性(名字,称为属性(AttributeAttribute)。)。n n目关系必有目关系必有n n个属性。个属性。关系关系(续续2)2)l对关系作如下限定和扩充:对关系作如下限定和扩充:无限关系在数据库系统中是无意义的。因此限定无限关系在数据库系统中是无意义的。因此限定关系数据模型中的关系必须是关系数据模型中的关系必须是有限集合有限集合。通过为关系的每个列附加一个属性名的方法取消通过为关系的每个列附加一个属性名的方法取消关系元组的有序性。关系元组的有序性。即即
13、(d(d1,1,d d2,2,d,dj,j,d di i,d,dn n)=(d =(d1,1,d d2,2,d,di,i,d dj j,d,dn n)(i)(i,j=1,2j=1,2,n n)l基本关系具有以下六条性质:基本关系具有以下六条性质:列是同质的列是同质的(HomogeneousHomogeneous),),即每一列中的分量是即每一列中的分量是同一类型的数据,来自同一个域。同一类型的数据,来自同一个域。不同的列可出自同一个域,称其中的每一列为一不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。个属性,不同的属性要给予不同的属性名。关系关系(续续3)3)列
14、的顺序无所谓,即列的次序可以任意交换。列的顺序无所谓,即列的次序可以任意交换。任意两个元组不能完全相同。任意两个元组不能完全相同。行的顺序无所谓,即行的次序可以任意交换。行的顺序无所谓,即行的次序可以任意交换。分量必须取原子值,即每一个分量都必须是不可分分量必须取原子值,即每一个分量都必须是不可分的数据项。的数据项。如下两图:如下两图:课程关系课程关系C(C(不规范的关系不规范的关系)课程关系课程关系C C(规范的关系规范的关系)课程名课程名学时学时理论理论实验实验数据库数据库52522020C C语言语言45452020数据结构数据结构55553030课程名课程名理论理论学时学时实验实验学时
15、学时数据库数据库52522020C C语言语言45452020数据结构数据结构555530303.1.2 3.1.2 关键码和表之间的关系关键码和表之间的关系插入键的概念:键(插入键的概念:键(KeyKey)-关键码关键码l1 1、超键(、超键(Super KeySuper Key)l在一个关系中能唯一标识元组的属性集合在一个关系中能唯一标识元组的属性集合例如:属性集(教师、系别)例如:属性集(教师、系别)l2 2、候选键(、候选键(Candidate KeyCandidate Key)l若关系中某一属性组的值能唯一地表示一个元组,则称该属若关系中某一属性组的值能唯一地表示一个元组,则称该属性
16、组为候选键。例如:教师编号、身份证号性组为候选键。例如:教师编号、身份证号l3 3、主键(、主键(Primary KeyPrimary Key)l在候选键中选中一个作为主键,主键带有主属性。在候选键中选中一个作为主键,主键带有主属性。l例如:可选教师号、身份证号均可。例如:可选教师号、身份证号均可。l4 4、合成键(、合成键(Composite KeyComposite Key)l由多个属性组成的候选键。由多个属性组成的候选键。l5 5、外键(、外键(Foreign KeyForeign Key)l若关系包含有另一个关系若关系包含有另一个关系R R所对应的属性所对应的属性F F,则,则F F为
17、为R R的外键,的外键,或当关系或当关系R1R1与与R2R2建立联系时,建立联系时,R1R1的属性的属性A1A1不是不是R1R1的候选键,的候选键,而是而是R2R2的候选键,则称的候选键,则称A1A1为为R1R1的外键。的外键。l例如教师编号、例如教师编号、系别编号系别编号、姓名、年龄、省份证号、姓名、年龄、省份证号例题:例题:l设教学管理数据库中有设教学管理数据库中有5 5个关系如下:个关系如下:学生学生 S(SNO,SNAME,AGE,SEX,BPLACE)S(SNO,SNAME,AGE,SEX,BPLACE)课程课程 C(CNO,CNAME,CREDIT)C(CNO,CNAME,CRED
18、IT)教师教师 T(TNO,TNAME,AGE,PS)T(TNO,TNAME,AGE,PS)选课选课 SE(SNO,CNO,GRADE)SE(SNO,CNO,GRADE)任课任课 TE(CNO,TNO,SNUM)TE(CNO,TNO,SNUM)例例11找出找出S S,SESE关系中的各种关键字。关系中的各种关键字。例例22设关系设关系S S中有两个超键中有两个超键BCBC、C C,其中哪个是候选健、,其中哪个是候选健、主键、复合键。主键、复合键。Home关键码和表之间的关系(续)关键码和表之间的关系(续)3.1.3 3.1.3 关系模式关系模式l 在数据库中要区分型和值两方面。在数据库中要区分
19、型和值两方面。关系数据库中,关系模式是型,关系是值。关系模式是对关系关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述,那么一个关系需要描述哪些方面?的描述,那么一个关系需要描述哪些方面?l 首先应该知道,关系实际上是一张二维表,首先应该知道,关系实际上是一张二维表,表的每一行为一个元组,每一列为一个属性。表的每一行为一个元组,每一列为一个属性。其次一个关系通常是由赋予它的元组语义来确定的。其次一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个元组语义实质上是一个n n目谓词(目谓词(n n是属性集中属性的个数)是属性集中属性的个数)。l 关系模式的关系在不同的时刻会随着
20、现实世界的不断关系模式的关系在不同的时刻会随着现实世界的不断地变化会有所变化。地变化会有所变化。现实世界的许多已有事实限定了关系模式,因此所有可能的关现实世界的许多已有事实限定了关系模式,因此所有可能的关系必须满足一定的完整性约束条件。系必须满足一定的完整性约束条件。l 关系模式的形式化表示关系模式的形式化表示 一个关系模式应当是一个一个关系模式应当是一个5 5元组。元组。关系模式(续)关系模式(续)l定义定义4 4:关系的描述称为关系模式关系的描述称为关系模式(Relation Schema)(Relation Schema)一个关系模式应当是一个五元组。一个关系模式应当是一个五元组。它形式
21、化地表示为:它形式化地表示为:R R(U,D,domU,D,dom,F,F)。其中其中R R为关系名,为关系名,U U为组成该关系的属性名集合,为组成该关系的属性名集合,D D为属性为属性组组U U中属性所来自的域的集合,中属性所来自的域的集合,domdom为属性向域的映象集合,为属性向域的映象集合,F F为属性间数据的依赖关系集合。为属性间数据的依赖关系集合。l关系模式通常简记为:关系模式通常简记为:R(AR(A1 1,A,A2 2,A,An n)或或R(U)R(U)。其中其中 A A1 1,A,A2 2,A,An n为属性名。而域名及属性向域的映象常常为属性名。而域名及属性向域的映象常常直
22、接说明为属性的类型、长度。直接说明为属性的类型、长度。l关系实际上就是关系模式在某一时刻的状态或内容。关系实际上就是关系模式在某一时刻的状态或内容。就是说,关系模式是型,关系是它的值。关系模式是静态的、就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系。和关系统称为关系。关系数据库关系数据库n在一个给定的现实世界领域中,所有实体及实体之间在一个给定的现实
23、世界领域中,所有实体及实体之间的联系关系的集合构成一个关系数据库的联系关系的集合构成一个关系数据库。n 在关系模型中,实体以及实体间的联系都是用关系来表示。在关系模型中,实体以及实体间的联系都是用关系来表示。例如学生实体、课程实体、学生与课程之间的多对多选课联例如学生实体、课程实体、学生与课程之间的多对多选课联系都可以分别用一个关系(或二维表)来表示。系都可以分别用一个关系(或二维表)来表示。n关系数据库也分成型和值。关系数据库也分成型和值。n型称为关系数据库模式,是对关系数据库的描述,是关系模型称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。式的集合。n值称为关系数据库,是关系的
24、集合。值称为关系数据库,是关系的集合。n关系数据库模式与关系数据库通常统称为关系数据库。关系数据库模式与关系数据库通常统称为关系数据库。3.1.4 3.1.4 关系模型的完整性规则关系模型的完整性规则l一、实体完整性规则(一、实体完整性规则(Entity IntegrityEntity Integrity)规则规则3.143.14:若属性组(或属性)若属性组(或属性)K K是基本关系是基本关系R R的主码(或称主的主码(或称主关键字),则所有关键字),则所有元组元组K K的取值唯一的取值唯一,并且并且K K中属性中属性不能全部或部分取空值不能全部或部分取空值。l二、参照完整性(二、参照完整性(
25、Referential integrityReferential integrity)定义定义5 5:设设F F是基本关系是基本关系R R的一个或一组属性,但不是的一个或一组属性,但不是关系关系R R的码,如果的码,如果F F与基本关系与基本关系S S的主码的主码K Ks s相对应,则相对应,则称称F F是基本关系是基本关系R R的外码的外码(Foreign keyForeign key),),并称基本并称基本关系关系R R为为参照关系参照关系(Referencing relationReferencing relation),),基本基本关系关系S S为为被参照关系被参照关系(Referen
26、ced relationReferenced relation)或目)或目标关系(标关系(Target relationTarget relation)。关系)。关系R R和和S S可能是相同可能是相同的关系,即自身参照。的关系,即自身参照。关系模型的完整性规则(续)关系模型的完整性规则(续)规则规则3.15 3.15 参照完整性规则:参照完整性规则:若属性(或属性组)若属性(或属性组)F F是基本关系是基本关系R R的外码,它与的外码,它与基本关系基本关系S S的主码的主码K Ks s相对应(基本关系相对应(基本关系R R和和S S可能是相可能是相同的关系),则对于同的关系),则对于R R中
27、每个元组在中每个元组在F F上的值必须为上的值必须为以下两种情况,或者取空值(以下两种情况,或者取空值(F F的每个属性值均为空的每个属性值均为空值);或者等于值);或者等于S S中某个元组的主码值。中某个元组的主码值。例子见教材例子见教材P37.P37.三、用户定义的完整性(三、用户定义的完整性(User-defined integrityUser-defined integrity)用户定义的完整性就是针对某一具体应用的关系用户定义的完整性就是针对某一具体应用的关系数据库所制定的约束条件,它反映某一具体应用所数据库所制定的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。涉及的数
28、据必须满足的语义要求。例如:非空、例如:非空、0 0、限定的值域范围等等。、限定的值域范围等等。完整性约束完整性约束 数据做更新操作必须遵守的规则数据做更新操作必须遵守的规则数据做更新操作必须遵守如下数据做更新操作必须遵守如下4 4类完整性约束。类完整性约束。l 实体(实体(Entity IntegrityEntity Integrity)约束)约束:主键值必须唯一,:主键值必须唯一,且不能为空值。且不能为空值。l 参照(参照(Referential IntegrityReferential Integrity)约束)约束:关系:关系R1R1与与R2R2关联时,关联时,R2R2中的外键值依赖于
29、中的外键值依赖于R1R1中的主键值。中的主键值。l 域(域(Domain IntegrityDomain Integrity)约束)约束:对属性的取值范围:对属性的取值范围或是否为空值(或是否为空值(NULLNULL)。)。l 用户自定义约束用户自定义约束:用户自定义的默认值等。:用户自定义的默认值等。3.2 3.2 关系运算关系运算l关系运算就是指研究关系操作的问题关系运算就是指研究关系操作的问题l关系查询语言和关系运算关系查询语言和关系运算l关系代数运算符及其分类关系代数运算符及其分类l传统的集合运算传统的集合运算l专门的关系运算专门的关系运算l关系代数表达式应用实例关系代数表达式应用实例
30、l扩充的关系代数操作扩充的关系代数操作关系代数关系代数l 关系代数是一种抽象的查询语言。关系代数是一种抽象的查询语言。用对关系的运算来表达关系操作,关系代数是研用对关系的运算来表达关系操作,关系代数是研究关系数据操作语言的一种较好的数学工具。究关系数据操作语言的一种较好的数学工具。l 关系代数是关系代数是E.F.CoddE.F.Codd 1970 1970年首次提出的,后面一年首次提出的,后面一节的关系演算是节的关系演算是E.F.CoddE.F.Codd 1972 1972年首次提出的,年首次提出的,19791979年年E.F.CoddE.F.Codd对关系模型作了扩展,讨论了关对关系模型作了
31、扩展,讨论了关系代数中加入空值和外连接的问题。系代数中加入空值和外连接的问题。l 关系代数以一个或两个关系为输入(或称为操作关系代数以一个或两个关系为输入(或称为操作对象),产生一个新的关系作为其操作结果。对象),产生一个新的关系作为其操作结果。即其即其运算对象是关系,运算结果亦为关系。关系代数用运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符,如表算符、算术比较符和逻辑运算符,如表3.63.6所示。所示。关系代数的运算符关系代数的运算符关系代数的运算符关系代数的运算符运算符运算符含
32、义含义运算符运算符含义含义集合集合运运算符算符-并并交交差差笛卡尔积笛卡尔积比较比较运算运算符符大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于专门专门的关的关系运系运算符算符广义笛卡尔积广义笛卡尔积选取选取投影投影除除连接连接逻辑逻辑运算运算符符 与与或或非非关系代数运算符分类说明关系代数运算符分类说明l比较运算符和逻辑运算符是用来辅助专门的关系运比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的算符进行操作的,所以关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两不同主要分为传统的集合运算和专门的关系运算两类。类。
33、l1.1.传统的集合运算:包括并、交、差、广义笛卡尔传统的集合运算:包括并、交、差、广义笛卡尔积四种运算。积四种运算。l2.2.专门的关系运算:包括选择、投影、连接、除等。专门的关系运算:包括选择、投影、连接、除等。l其中传统的集合运算将关系看成元组的集合,其运其中传统的集合运算将关系看成元组的集合,其运算是从关系的算是从关系的“水平水平”方向即行的角度来进行。而方向即行的角度来进行。而专门的关系运算不仅涉及到行而且涉及到列。专门的关系运算不仅涉及到行而且涉及到列。3.2.3 3.2.3 传统的集合运算传统的集合运算 传统的集合运算是二目运算,包括传统的集合运算是二目运算,包括并、交、差、广义
34、并、交、差、广义笛卡尔积笛卡尔积四种运算。四种运算。l 设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n(即两个关系都有(即两个关系都有n n个个属性),且相应的属性取自同一个域,则可定义并、差、属性),且相应的属性取自同一个域,则可定义并、差、交运算如下:交运算如下:l 合并(合并(UnionUnion)设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n(即两个关系都有(即两个关系都有n n个个属性),且相应的属性取自同一个域,则属性),且相应的属性取自同一个域,则关系关系R R与关系与关系S S的并由的并由属于属于R R或属于或属于S S的所有元组的所有元
35、组组成组成。记作。记作:RS=t|tRtS 其结果关系仍为其结果关系仍为n n目关系,由属于目关系,由属于R R或属于或属于S S的元组组的元组组成。关系的并操作对应于关系的插入或添加记录的操作,成。关系的并操作对应于关系的插入或添加记录的操作,俗称俗称“+”操作,是关系代数的基本操作。操作,是关系代数的基本操作。合并(合并(UnionUnion)例子)例子编号书名数量101C语言19102数据库20105操作系统15108汇编语言10编号书名数量12C语言1913高等数学2018外语(四)10编号编号书名书名数量数量101C语言19102数据库20105操作系统15108汇编语言1012C语
36、言1913高等数学2018外语(四)10合并运算结果(合并运算结果(C)进货关系(进货关系(B)库存关系(库存关系(A)传统的集合运算(续)传统的集合运算(续)l 求差(求差(DifferenceDifference)设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n,且相应的属性取自,且相应的属性取自同一个域,则关系同一个域,则关系R R 与关系与关系S S的差由的差由属于属于R R而不属于而不属于S S的所有元组的所有元组组成。组成。记作:记作:R-S=R-S=t|tRtSt|tRtS 其结果关系仍为其结果关系仍为n n目关系,由属于目关系,由属于R R而不属于而不属于S
37、S的所的所有元组组成。关系的差操作对应于关系的删除记录的有元组组成。关系的差操作对应于关系的删除记录的操作,俗称操作,俗称“-”操作,是关系代数的基本操作。操作,是关系代数的基本操作。l 相交(相交(IntersectionIntersection)其结果关系仍为其结果关系仍为n n目关系,由既目关系,由既属于属于R R又属于又属于S S的元组的元组组成。关系的交可以用差来表示,组成。关系的交可以用差来表示,即即RS=R-(R-S)RS=R-(R-S)。关系的交操作对应于寻找两关系共有记录的操作,关系的交操作对应于寻找两关系共有记录的操作,是一种关系查询操作。关系的交操作能用差操作来代是一种关
38、系查询操作。关系的交操作能用差操作来代替,为此不是关系代数的基本操作。替,为此不是关系代数的基本操作。合并与相交运算都满足结合律。但求差运算不满足合并与相交运算都满足结合律。但求差运算不满足结合律。结合律。传统的集合运算(续传统的集合运算(续2 2)l 广义笛卡尔积(广义笛卡尔积(Extended Cartesian ProductExtended Cartesian Product)广义笛卡尔积不要求参加运算的两个关系具有广义笛卡尔积不要求参加运算的两个关系具有相同的目(自然也就不要求来自同样的域)。相同的目(自然也就不要求来自同样的域)。设设R R为为n n目关系目关系,S,S为为m m目
39、关系目关系,则则R R和和S S的广义笛卡的广义笛卡尔积为尔积为:R RS=S=t tr r t ts s|t|tr rRtRts sSS t tr r t ts s表示由两个元组表示由两个元组t tr r和和t ts s前后有序连接而成的前后有序连接而成的一个元组。相当于是一个组合的关系。一个元组。相当于是一个组合的关系。例子见教材例子见教材P42P42传统的集合运算(续传统的集合运算(续3 3)l任取元组任取元组t tr r和和t ts s,当且仅当当且仅当t tr r属于属于R R且且t ts s属于属于S S时时,t,tr r和和t ts s的的有序连接有序连接即为即为R RS S的一
40、个元组。的一个元组。lR R和和S S的广义笛卡尔积是一个(的广义笛卡尔积是一个(n+mn+m)目的关系。)目的关系。其其中任何一个元组的前中任何一个元组的前n n列是关系列是关系R R的一个元组的一个元组,后后m m列列是关系是关系S S的一个元组。的一个元组。若若R R有有K K1 1个元组个元组,S,S有有K K2 2个元组个元组,则则R RS S有有K K1 1K K2 2个元组。个元组。l 实际操作时实际操作时,可从可从R R的第一个元组开始的第一个元组开始,依次与依次与S S的每的每一个元组组合一个元组组合,然后然后,对对R R的下一个元组进行同样的操的下一个元组进行同样的操作作,
41、直至直至R R的最后一个元组也进行完同样的操作为止的最后一个元组也进行完同样的操作为止,即可得到即可得到R RS S的全部元组。的全部元组。传统的集合运算(续传统的集合运算(续4 4)l下列给出了两个关系下列给出了两个关系R R和和S,S,以及它们进行并、以及它们进行并、差、差、交和笛卡尔积后的结果关系。交和笛卡尔积后的结果关系。传统的集合运算(续传统的集合运算(续5 5)3.2.4 3.2.4 专门的关系运算专门的关系运算 上节中所讲的传统集合运算,只是从行的角度上节中所讲的传统集合运算,只是从行的角度进行,而要灵活地实现关系数据库的多样查询操进行,而要灵活地实现关系数据库的多样查询操作,则
42、须引入专门的关系运算。作,则须引入专门的关系运算。专门的关系运算专门的关系运算包括选择、投影、连接、除等。为了叙述方便,包括选择、投影、连接、除等。为了叙述方便,我们先引入几个记号。我们先引入几个记号。l 分量:分量:设关系模式为设关系模式为R(AR(A1 1,A,A2 2,A,An n)。它的一个关。它的一个关系设为系设为R R。tRtR表示表示t t是是R R的一个元组。的一个元组。tAtAi i 则表示则表示元组元组t t中相应于属性中相应于属性A Ai i的一个分量。的一个分量。专门的关系运算(续)专门的关系运算(续)l 属性列或域列:属性列或域列:若若A=AA=Ai1i1,A,Ai2
43、i2,A,Aikik,其中,其中A Ai1i1,A,Ai2i2,A Aikik是是A A1 1,A,A2 2,A,An n中的一部分,则中的一部分,则A A称为属性称为属性列或域列。列或域列。tA=(tAtA=(tAi1i1,tA,tAi2i2,tA,tAikik)表示元组表示元组t t在属性列在属性列A A上诸分量的集合。上诸分量的集合。A A则表示则表示 A A1 1,A,A2 2,A,An n 中去掉中去掉 A Ai1i1,A,Ai2i2,A,Aikik 后剩余的属性组。后剩余的属性组。l 元组的连接:元组的连接:R R为为n n目关系,目关系,S S为为m m目关系。目关系。t tr
44、rRR,t ts sSS,t tr r t ts s称为元组的连接(称为元组的连接(ConcatenationConcatenation)。它是一个)。它是一个(n+m)(n+m)列的元组,前列的元组,前n n个分量为个分量为R R中的一个中的一个n n元组,元组,后后m m个分量为个分量为S S中的一个中的一个m m元组。元组。l象集:象集:给定一个关系给定一个关系R(XR(X,Z)Z),X X和和Z Z为属性组。我们定义,为属性组。我们定义,当当tXtX=x=x时,时,x x在在R R中的象集(中的象集(Images SetImages Set)为:)为:Z Zx x =tZ|tR,tX=
45、tZ|tR,tX=x=x l关系模型的关系模型的5 5种基本数据操作种基本数据操作l投影投影:在一个关系内选择属性在一个关系内选择属性。l选择选择:在一个关系内选择元组在一个关系内选择元组。l连接连接:是两个关系的合并是两个关系的合并。l插入插入:在一个关系内插入新元组在一个关系内插入新元组。l删除删除:在一个关系内删除元组在一个关系内删除元组。专门的关系运算(续专门的关系运算(续2 2)专门的关系运算(续专门的关系运算(续2 2)一、选择(一、选择(SelectionSelection)选择又称为限制(选择又称为限制(RestrictionRestriction)。它是在)。它是在关系关系R
46、 R中选择满足给定条件的诸元组,记作:中选择满足给定条件的诸元组,记作:F F(R(R)=t|tRF(t)=“)=t|tRF(t)=“真真”其中其中F F表示选择条件,它是一个逻辑表达式,表示选择条件,它是一个逻辑表达式,取逻辑值取逻辑值“真真”或或“假假”。逻辑表达式逻辑表达式F F的基本形式为:的基本形式为:X X1 1YY1 1 X X2 2YY2 2 专门的关系运算专门的关系运算 (续(续3 3)其中其中表示比较运算符,它可以是、表示比较运算符,它可以是、或或。X1X1、Y1Y1等是属性名或常量或简单函数。等是属性名或常量或简单函数。属性名也可以用它的序号来代替(如属性名也可以用它的序
47、号来代替(如1 1,2 2,)。)。表示逻辑运算符,它可以是表示逻辑运算符,它可以是、或或。表示任选表示任选项,即项,即 中的部分可以要也可以不要,中的部分可以要也可以不要,表示上述格式表示上述格式可以重复下去。可以重复下去。例如:设有一个学生例如:设有一个学生-课程关系数据库,包括学生关课程关系数据库,包括学生关系系Student(Student(说明:说明:CSCS表示计算机系、表示计算机系、ISIS表示信息系、表示信息系、MAMA表示数学系表示数学系)、课程关系、课程关系CourseCourse和选修关系和选修关系SCSC。下面通。下面通过一些例子将对这三个关系进行运算。过一些例子将对这
48、三个关系进行运算。专门的关系运算(续专门的关系运算(续4 4)例例1 1 查询信息系(查询信息系(CSCS系)全体学生。系)全体学生。cs(Studentcs(Student)例例2 2 查询年龄大于查询年龄大于1919岁的学生。岁的学生。年龄年龄=19(Student)=19(Student)二二 投影(投影(ProjectionProjection)关系关系R R上的投影是从上的投影是从R R中选择出若干属性列组成新的中选择出若干属性列组成新的关系。记作:关系。记作:(R)=tA|tR(R)=tA|tR 其中其中A A为为R R中的属性列。关系的投影操作对应于关系中的属性列。关系的投影操作
49、对应于关系列的角度进行的选取操作(纵向选取),也是关系查询列的角度进行的选取操作(纵向选取),也是关系查询操作的重要成员之一,是关系代数的基本操作。操作的重要成员之一,是关系代数的基本操作。2.4.2 2.4.2 专门的关系运算(续专门的关系运算(续5 5)例例33 查询选修关系查询选修关系SCSC在学号和课程号两个属性上在学号和课程号两个属性上的投影。的投影。(SC)(SC)或或 (SC)(SC)例例4 4 查询学生关系查询学生关系StudentStudent中都有哪些系,即是中都有哪些系,即是学生关系学生关系StudentStudent在所系属性上的投影操作。在所系属性上的投影操作。(St
50、udent)(Student)三三 连接(连接(JoinJoin)连接也称连接也称连接连接,是从两个关系的广义笛卡是从两个关系的广义笛卡尔积中选取满足某规定条件的全体元组尔积中选取满足某规定条件的全体元组,形成一形成一个新的关系个新的关系,记为记为专门的关系运算(续专门的关系运算(续6 6)其中其中,A,A是是R R的属性组的属性组(A A1 1,A,A2 2,A,Ak k),B,B是是S S的属性的属性 组(组(B B1 1,B,B2 2,B,BK K)。)。ABAB的实际形式为的实际形式为 A Ai i和和B Bi i(i=1,2,i=1,2,k,k)不一定同名)不一定同名,但必须可比。但