《数据库系统原理第2章关系数据库》由会员分享,可在线阅读,更多相关《数据库系统原理第2章关系数据库(135页珍藏版)》请在金锄头文库上搜索。
1、第第2章章关系数据库关系数据库(2017版)版)厦门大学计算机科学系本科生课程厦门大学计算机科学系本科生课程数据库系统原理数据库系统原理2.0关系数据库概述2.1关系数据结构及形式化定义2.2关系操作2.3关系的完整性2.4关系代数2.5关系演算第2章关系数据库2.0关系数据库概述系系统统而而严严格格地地提提出出关关系系模模型型的的是是美美国国IBM公司的公司的E.F.Codd1970年提出关系数据模型年提出关系数据模型E.F.Codd, “A Relational Model of Data forLargeSharedDataBanks”,CommunicationoftheACM,197
2、0之后,提出了关系代数和关系演算的概念之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式年提出了关系的第一、第二、第三范式1974年提出了关系的年提出了关系的BC范式范式2.0关系数据库概述关关系系数数据据库库应应用用数数学学方方法法来来处处理理数数据据库库中的数据中的数据80年年代代后后,关关系系数数据据库库系系统统成成为为最最重重要要、最流行的数据库系统最流行的数据库系统2.0关系数据库概述典型实验系统典型实验系统SystemRUniversityINGRES典型商用系统典型商用系统ORACLESYBASEINFORMIXDB2SQLSERVER2.1关系数据结
3、构及形式化定义2.1.1关系2.1.2关系模式2.1.3关系数据库2.1.1关系域(域(Domain)2.笛卡尔积(笛卡尔积(CartesianProduct)3.关系(关系(Relation)2.1.1关系域域是一组具有相同数据类型的值的集合。例是一组具有相同数据类型的值的集合。例:整数整数实数实数介于某个取值范围的整数介于某个取值范围的整数指定长度的字符串集合指定长度的字符串集合男男,女女介于某个取值范围的日期介于某个取值范围的日期域(域(Domain)例例给出三个域:给出三个域:D1=SUPERVISOR=张清玫,刘逸张清玫,刘逸D2=SPECIALITY=计算机专业,信息专业计算机专业
4、,信息专业 D3=POSTGRADUATE=李勇,刘晨,王敏李勇,刘晨,王敏2.1.1关系2.笛卡尔积(笛卡尔积(CartesianProduct)1)笛卡尔积笛卡尔积给给定定一一组组域域D1,D2,Dn,这这些些域域中中可可以以有有相相同同的的。D1,D2,Dn的的笛卡尔积笛卡尔积为:为:D1D2Dn(d1,d2,dn)di Di,i1,2,n所有域的所有取值的一个组合所有域的所有取值的一个组合不能重复不能重复2.1.1关系2.笛卡尔积(笛卡尔积(CartesianProduct)2)元组元组(Tuple)笛笛卡卡尔尔积积中中每每一一个个元元素素(d1,d2,dn)叫叫作作一一个个n元组元组
5、(n-tuple)或简称)或简称元组元组。3)分量分量(Component)笛卡尔积元素(笛卡尔积元素(d1,d2,dn)中的每一个值)中的每一个值di叫作一个叫作一个分量分量。2.1.1关系4)基数基数(Cardinalnumber)若若Di(i1,2,n)为为有有限限集集,其其基基数数为为 mi ( i 1, 2, , n) , 则则D1D2Dn 的基数的基数M为:为:2.笛卡尔积(笛卡尔积(CartesianProduct)2.1.1关系5)笛卡尔积的表示方法笛卡尔积的表示方法笛笛卡卡尔尔积积可可表表示示为为一一个个二二维维表表。表表中中的的每每行行对对应应一一个个元元组组,表中的每列对
6、应一个域。表中的每列对应一个域。2.笛卡尔积(笛卡尔积(CartesianProduct)D1D2D3 (张清玫,计算机专业,李勇张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏张清玫,计算机专业,王敏),(张清玫,信息专业,李勇张清玫,信息专业,李勇), (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),(张清玫,信息专业,王敏张清玫,信息专业,王敏), (刘逸,计算机专业,李勇刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏刘逸,计算机专业,王敏),(刘逸,信息专业,李勇刘逸
7、,信息专业,李勇), (刘逸,信息专业,刘晨刘逸,信息专业,刘晨),(刘逸,信息专业,王敏刘逸,信息专业,王敏) 在例中,基数:在例中,基数:22312,即即D1D2D3共有共有22312个元组个元组2.1.1关系3.关系(关系(Relation)1)关系关系D1D2Dn有有意意义义的的子子集集叫叫作作在在域域D1,D2,Dn上上的的关关系系,表示为表示为R(D1,D2,Dn)R:关系名关系名 n:关系的关系的目目或或度度(Degree)D1D2D3 (张清玫,计算机专业,李勇张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏张清玫,
8、计算机专业,王敏),(张清玫,信息专业,李勇张清玫,信息专业,李勇), (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),(张清玫,信息专业,王敏张清玫,信息专业,王敏), (刘逸,计算机专业,李勇刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏刘逸,计算机专业,王敏),(刘逸,信息专业,李勇刘逸,信息专业,李勇), (刘逸,信息专业,刘晨刘逸,信息专业,刘晨),(刘逸,信息专业,王敏刘逸,信息专业,王敏) 2.1.1关系3.关系(关系(Relation)取出有意义的元组构造关系取出有意义的元组构造关系SUPERVISORSPECIALIT
9、YPOSTGRADUATE张清玫张清玫计算机专业计算机专业李勇李勇张清玫张清玫计算机专业计算机专业刘晨刘晨张清玫张清玫计算机专业计算机专业王敏王敏张清玫张清玫信息专业信息专业李勇李勇张清玫张清玫信息专业信息专业刘晨刘晨张清玫张清玫信息专业信息专业王敏王敏刘逸刘逸计算机专业计算机专业李勇李勇刘逸刘逸计算机专业计算机专业刘晨刘晨刘逸刘逸计算机专业计算机专业王敏王敏刘逸刘逸信息专业信息专业李勇李勇刘逸刘逸信息专业信息专业刘晨刘晨刘逸刘逸信息专业信息专业王敏王敏2.1.1关系关系:关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)假设:导师与专业:假设:导师与专业:1
10、:1,导师与研究生:,导师与研究生:1:n于是:于是:SAP关系可以包含三个元组关系可以包含三个元组 (张清玫,信息专业,李勇张清玫,信息专业,李勇), (张清玫,信息专业,刘晨张清玫,信息专业,刘晨), (刘逸,信息专业,王敏刘逸,信息专业,王敏) 2.1.1关系2)元组元组关系中的每个元素是关系中的元组,通常用关系中的每个元素是关系中的元组,通常用t表示。表示。3)单元关系与二元关系单元关系与二元关系当当n=1时,称该关系为时,称该关系为单元单元关系(关系(Unaryrelation)。)。当当n=2时,称该关系为时,称该关系为二元二元关系(关系(Binaryrelation)。)。2.1
11、.1关系4)关系的表示关系的表示关关系系也也是是一一个个二二维维表表,表表的的每每行行对对应应一一个个元元组组,表的每列对应一个域。表的每列对应一个域。2.1.1关系5)属性属性关关系系中中不不同同列列可可以以对对应应相相同同的的域域,为为了了加加以以区区分分,必必须须对对每每列列起起一一个个名名字字,称称为为属属性性(Attribute)。)。n目关系必有目关系必有n个属性。个属性。2.1.1关系6)码码候选码(候选码(Candidatekey)若关系中的某一属性组的值能唯一地标识一个元组,若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码则称该属性组为候选码关系:关系:Ex
12、periment (SNo,BookNo,Time)关系:关系:Student(SNo,SName,SAge)在最简单的情况下,候选码只包含一个属性。在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(为全码(All-key)2.1.1关系主码主码若一个关系有多个候选码,则选定其中一个若一个关系有多个候选码,则选定其中一个为为主码主码(Primarykey)主码的诸属性称为主码的诸属性称为主属性主属性(Primeattribute)。)。不包含在任何侯选码中的属性称为不包
13、含在任何侯选码中的属性称为非主属性非主属性(Non-keyattribute)关系:关系:Experiment (SNo,BookNo,Time)关系:关系:Student(SNo,SName,SAge)关系:关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)2.1.1关系7)三类关系三类关系基本关系基本关系(基本表或基表)(基本表或基表)实际存在的表,是实际存储数据的逻辑表示实际存在的表,是实际存储数据的逻辑表示查询表查询表查询结果对应的表查询结果对应的表视图表视图表由基本表或其他视图表导出的表,是虚表,不对由基本表或其他视图表导出的表,是虚表,不对应实际存
14、储的数据应实际存储的数据2.1.1关系8)基本关系的性质列是同质的(列是同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同每一列中的分量是同一类型的数据,来自同一个域一个域不同的列可出自同一个域不同的列可出自同一个域其中的每一列称为一个属性其中的每一列称为一个属性不同的属性要给予不同的属性名不同的属性要给予不同的属性名2.1.1关系列的顺序无所谓列的顺序无所谓列的次序可以任意交换列的次序可以任意交换任意两个元组不能完全相同任意两个元组不能完全相同由笛卡尔积的性质决定由笛卡尔积的性质决定行的顺序无所谓行的顺序无所谓行的次序可以任意交换行的次序可以任意交换8)基本关系的性质2.
15、1.1关系分量必须取原子值分量必须取原子值每一个分量都必须是不可分的数据项。每一个分量都必须是不可分的数据项。这是规范条件中最基本的一条这是规范条件中最基本的一条8)基本关系的性质2.1.2关系模式1什么是关系模式什么是关系模式2定义关系模式定义关系模式3.关系模式与关系关系模式与关系2.1.2关系模式关系模式(关系模式(RelationSchema)是型)是型关系模式是对关系的描述关系模式是对关系的描述元组集合的结构元组集合的结构属性构成属性构成属性来自的域属性来自的域属性与域之间的映象关系属性与域之间的映象关系元组语义以及完整性约束条件元组语义以及完整性约束条件属性间的数据依赖关系集合属性
16、间的数据依赖关系集合2.1.2关系模式关系模式可以形式化地表示为:关系模式可以形式化地表示为:R(U,D,dom,F) R 关系名关系名U组成该关系的属性名集合组成该关系的属性名集合D属性组属性组U中属性所来自的域中属性所来自的域dom属性向域的映象集合属性向域的映象集合F属性间的数据依赖关系集合属性间的数据依赖关系集合2.1.2关系模式关系模式通常可以简记为关系模式通常可以简记为 R (U)或或R (A1,A2,An)R 关系名关系名A1,A2,An 属性名属性名注:域名及属性向域的映象常常直接说明为注:域名及属性向域的映象常常直接说明为属性的类型、长度属性的类型、长度2.1.3关系数据库1
17、.关系数据库2.关系数据库的型与值2.1.3关系数据库在一个给定的应用领域中,所有实体及实在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数体之间联系的关系的集合构成一个关系数据库。据库。1.关系数据库2.1.3关系数据库2.关系数据库的型与值关系数据库也有型和值之分关系数据库也有型和值之分关关系系数数据据库库的的型型称称为为关关系系数数据据库库模模式式,是是对对关关系系数据库的描述数据库的描述若干域的定义若干域的定义在这些域上定义的若干关系模式在这些域上定义的若干关系模式关关系系数数据据库库的的值值是是这这些些关关系系模模式式在在某某一一时时刻刻对对应应的数值的集合的数
18、值的集合2.2关系操作2.2.1基本的关系操作2.2.2关系数据语言的分类2.2.1基本的关系操作1)常用的关系操作常用的关系操作查询查询选择、投影、连接、除、并、交、差选择、投影、连接、除、并、交、差数据更新数据更新插入、删除、修改插入、删除、修改查询的表达能力是其中最主要的部分查询的表达能力是其中最主要的部分2)关系操作的特点关系操作的特点集合操作方式,即操作的对象和结果都是集合。集合操作方式,即操作的对象和结果都是集合。非关系数据模型的数据操作方式:一次一记录非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式文件系统的数据操作方式2.2.2关系数据语言的分类关系代数语言关系代
19、数语言用对关系的运算来表达查询要求用对关系的运算来表达查询要求典型代表:典型代表:ISBL关系演算语言:用谓词来表达查询要求关系演算语言:用谓词来表达查询要求元组关系演算语言元组关系演算语言谓词变元的基本对象是元组变量谓词变元的基本对象是元组变量典型代表:典型代表:APLHA,QUEL域关系演算语言域关系演算语言谓词变元的基本对象是域变量谓词变元的基本对象是域变量典型代表:典型代表:QBE具有关系代数和关系演算双重特点的语言具有关系代数和关系演算双重特点的语言典型代表:典型代表:SQL2.2.2关系数据语言的分类关系数据语言的特点关系数据语言的特点关系语言是一种高度非过程化的语言关系语言是一种
20、高度非过程化的语言存取路径的选择由存取路径的选择由DBMS的优化机制来完成的优化机制来完成用户不必用循环结构就可以完成数据操作用户不必用循环结构就可以完成数据操作能够嵌入高级语言中使用能够嵌入高级语言中使用关关系系代代数数、元元组组关关系系演演算算和和域域关关系系演演算算三三种种语言在表达能力上完全等价语言在表达能力上完全等价2.3关系的完整性2.3.1关系的三类完整性约束2.3.2实体完整性2.3.3参照完整性2.3.4用户定义的完整性2.3.1关系的三类完整性约束关系模型的完整性规则是对关系的某种约束条件。关系模型的完整性规则是对关系的某种约束条件。关系模型中三类完整性约束:关系模型中三类
21、完整性约束:实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性实实体体完完整整性性和和参参照照完完整整性性是是关关系系模模型型必必须须满满足足的的完完整整性性约约束束条条件件,被被称称作作是是关关系系的的两两个个不不变变性性,应该由关系系统自动支持。应该由关系系统自动支持。2.3.2实体完整性实体完整性规则(实体完整性规则(EntityIntegrity)若属性若属性A是基本关系是基本关系R的主属性,则属性的主属性,则属性A不能取空值不能取空值2.3.2实体完整性实体完整性(续)关系模型必须遵守实体完整性规则的原因关系模型必须遵守实体完整性规则的原因(1)实实体体完完整整
22、性性规规则则是是针针对对基基本本关关系系而而言言的的。一一个个基基本本表表通通常常对对应应现现实世界的一个实体集或多对多联系。实世界的一个实体集或多对多联系。(2)现现实实世世界界中中的的实实体体和和实实体体间间的的联联系系都都是是可可区区分分的的,即即它它们们具具有有某某种唯一性标识。种唯一性标识。(3)相相应应地地,关关系系模模型型中中以以主主码码作作为为唯唯一一性性标标识识。主主码码中中的的属属性性即即主主属性不能取空值。属性不能取空值。空值就是空值就是“不知道不知道”或或“无意义无意义”的值。的值。 主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的主属性取空值,就说明存在某
23、个不可标识的实体,即存在不可区分的实体,这与第(实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。)点相矛盾,因此这个规则称为实体完整性。2.3.2实体完整性注意注意实体完整性规则规定基本关系的所有主属性都不能取空值实体完整性规则规定基本关系的所有主属性都不能取空值例例选修(学号,课程号,成绩)选修(学号,课程号,成绩)“学号、课程号学号、课程号”为主码,则两个属性都不能取空值。为主码,则两个属性都不能取空值。2.3.3参照完整性1.关系间的引用关系间的引用2.外码外码3.参照完整性规则参照完整性规则2.3.3参照完整性1.关系间的引用在在关关系系模模型型中中实实体体及及实实体体间间的的
24、联联系系都都是是用用关关系系来来描描述述的的,因因此此可可能能存存在在着着关关系系与与关关系系间间的的引用。引用。例例1 学学生生实实体体、专专业业实实体体以以及及专专业业与与学学生生 间的一对多联系间的一对多联系 专业(专业(专业号专业号,专业名),专业名) 学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄),年龄)2.3.3参照完整性学生(学号,姓名,性别,专业号,年龄)专业(专业(专业号专业号,专业名),专业名)2.3.3参照完整性专业(专业(专业号专业号,专业名),专业名)学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄),年龄)学生关系中每个元组的学生
25、关系中每个元组的“专业号专业号”属性取值情况属性取值情况只取下面两类值:只取下面两类值:(1)空值空值,表示尚未给该学生分配专业,表示尚未给该学生分配专业(2)非空值,这时该值必须)非空值,这时该值必须是专业关系中某个元组的是专业关系中某个元组的“专业号专业号”值值,表示该,表示该学生不可能分配到一个不存在的专业中学生不可能分配到一个不存在的专业中2.3.3参照完整性例例2学生、课程、学生与课程之间的多对学生、课程、学生与课程之间的多对多联系多联系学生(学生(学号学号,姓名,性别,专业号,年龄)姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分) 选修(选修(学号
26、学号,课程号课程号,成绩),成绩)2.3.3参照完整性学生学生学生选课学生选课课程课程2.3.3参照完整性选修(选修(学号学号,课程号课程号,成绩),成绩)它们只能取学生和课程关系中已经存在的主码值它们只能取学生和课程关系中已经存在的主码值2.3.3参照完整性例3学生实体及其内部的领导联系(一对多)学生(学号,姓名,性别,专业号,年龄,班长)2.3.3参照完整性学生(学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄,班长班长)“班长班长”属性值可以取两类值:属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长,或该)空值,表示该学生所在班级尚未选出班长,或该学生本人
27、即是班长;学生本人即是班长;(2)非空值,这时该值必须是本关系中某个元组的学)非空值,这时该值必须是本关系中某个元组的学号值号值2.3.3参照完整性设设F是是基基本本关关系系R的的一一个个或或一一组组属属性性,但但不不是是关关系系R的的码码。如如果果F与与基基本本关关系系S的的主主码码Ks相相对对应应,则则称称F是基本关系是基本关系R的的外码外码基基 本本 关关 系系 R称称为为 参参 照照 关关 系系 ( ReferencingRelation)基基本本关关系系S称称为为被被参参照照关关系系(ReferencedRelation)或或目目标标关关系系(TargetRelation)。)。2外
28、码(ForeignKey)2.3.3参照完整性说明说明关系关系R和和S不一定是不同的关系不一定是不同的关系目标关系目标关系S的主码的主码Ks和参照关系的外码和参照关系的外码F必须必须定义在同一个(或一组)域上定义在同一个(或一组)域上外码并不一定要与相应的主码同名外码并不一定要与相应的主码同名当外码与相应的主码属于不同关系时,往往当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别取相同的名字,以便于识别2.3.3参照完整性3.参照完整性规则若属性(或属性组)若属性(或属性组)F是基本关系是基本关系R的外码的外码它它与与基基本本关关系系S的的主主码码Ks相相对对应应(基基本本关关系系
29、R和和S不不一一定定是是不不同同的的关关系系),则则对对于于R中中每每个个元元组组在在F上的值必须为:上的值必须为: 或者取空值(或者取空值(F的每个属性值均为空值)的每个属性值均为空值) 或者等于或者等于S中某个元组的主码值中某个元组的主码值2.3.3参照完整性学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性只属性只取下面两类值:取下面两类值:(1)空值空值,表示尚未给该学生分配专业,表示尚未给该学生分配专业(2)非非空空值值,这这时时该该值值必必须须是是专专业业关关系系中中某某个个元元组组的的“专专业业号号”值值,表表示示该该学学生生不不可可能能分分配配到一个不存在的专业中到一
30、个不存在的专业中2.3.3参照完整性选修(选修(学号学号,课程号课程号,成绩),成绩)“学号学号”和和“课程号课程号”是选修关系中的主属性是选修关系中的主属性按照实体完整性和参照完整性规则,它们只按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主码值能取相应被参照关系中已经存在的主码值2.3.3参照完整性学生(学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄,班长班长)“班长班长”属性值可以取两类值:属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长,或该)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;学生本人即是班长;(2)非空
31、值,这时该值必须是本关系中某个元组的学)非空值,这时该值必须是本关系中某个元组的学号值号值2.3.4用户自定义的完整性用用户户定定义义的的完完整整性性是是针针对对某某一一具具体体关关系系数数据据库库的的约约束束条条件件,反反映映某某一一具具体体应应用用所所涉涉及的数据必须满足的语义要求。及的数据必须满足的语义要求。关关系系模模型型应应提提供供定定义义和和检检验验这这类类完完整整性性的的机机制制,以以便便用用统统一一的的系系统统的的方方法法处处理理它它们们,而不要由应用程序承担这一功能。而不要由应用程序承担这一功能。2.3.4用户自定义的完整性例例:课程课程(课程号课程号,课程名,学分,课程名,
32、学分)“课程名课程名”属性必须取唯一值属性必须取唯一值非主属性非主属性“课程名课程名”也不能取空值也不能取空值“学分学分”属性只能取值属性只能取值1,2,3,42.4关系代数2.4.0概述2.4.1传统的集合运算2.4.2专门的关系运算2.4.0概述1.关系代数关系代数2.运算的三要素运算的三要素3.关系代数运算的三个要素关系代数运算的三个要素4.关系代数运算的分类关系代数运算的分类5.表示记号表示记号2.4.0概述1.关系代数关系代数一种抽象的查询语言一种抽象的查询语言用对关系的运算来表达查询用对关系的运算来表达查询2.4.0概述2关系代数运算的三个要素关系代数运算的三个要素运算对象:运算对
33、象:关系关系运算结果:运算结果:关系关系运算符:运算符:四类四类2.4.0概述集合运算符集合运算符将关系看成元组的集合将关系看成元组的集合运算是从关系的运算是从关系的“水平水平”方向即行的角度来进行方向即行的角度来进行专门的关系运算符专门的关系运算符不仅涉及行而且涉及列不仅涉及行而且涉及列算术比较符算术比较符辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作逻辑运算符逻辑运算符辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作2.4.0概述集集合合运运算算符符 -并并差差交交广义笛广义笛卡尔积卡尔积比比较较运运算算符符 大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于
34、不等于运算符运算符含义含义运算符运算符含义含义表表2.4关系代数运算符关系代数运算符2.4.0概述专门的专门的关系关系运算符运算符 选择选择投影投影连接连接除除逻辑运逻辑运算符算符 非非与与或或运算符运算符含义含义运算符运算符含义含义表表2.4关系代数运算符(续)关系代数运算符(续)2.4.0概述4关系代数运算的分类关系代数运算的分类传统的集合运算传统的集合运算并、差、交、广义笛卡尔积并、差、交、广义笛卡尔积专门的关系运算专门的关系运算选择、投影、连接、除选择、投影、连接、除2.4.1传统的集合运算并并差差交交广义笛卡尔积广义笛卡尔积2.4.1传统的集合运算1.并(Union)R和和S具有相同
35、的目具有相同的目n(即两个关系都有(即两个关系都有n个属性)个属性)相应的属性取自同一个域相应的属性取自同一个域R S仍为仍为n目关系,由属于目关系,由属于R或属于或属于S的元组组成的元组组成 R S=t|t R t S 2.4.1传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S1.并(Union)2.4.1传统的集合运算2.差(Difference)R和和S具有相同的目具有相同的目n相应的属性取自同一个域相应的属性取自同一个域R - S仍仍为为n目目关关系系,由由属属于于R而而不
36、不属属于于S的的所所有有元元组组成组组成R -S=t|t R t S2.4.1传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S2.差(Difference)2.4.1传统的集合运算3.交(Intersection)R和和S具有相同的目具有相同的目n相应的属性取自同一个域相应的属性取自同一个域RS仍为仍为n目关系,由既属于目关系,由既属于R又属于又属于S的元组组成的元组组成 RS=t|t R t S RS=R(R-S)2.4.1传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABC
37、a1b2c2a1b3c2a2b2c1RSR S3.交(Intersection)2.4.1传统的集合运算4.广义笛卡尔积(ExtendedCartesianProduct)Rn目关系,目关系,k1个元组个元组Sm目关系,目关系,k2个元组个元组RS列:(列:(n+m)列的元组的集合)列的元组的集合元组的前元组的前n列是关系列是关系R的一个元组的一个元组后后m列是关系列是关系S的一个元组的一个元组行:行:k1k2个元组个元组RS=trts|tr R ts S2.4.1传统的集合运算ABCa1 b1 c1a1 b2 c2a2 b2 c1ABCa1b2c2a1b3c2a2b2c1RSR Sc1b1a
38、1c1b1a1c1b2a2c1b2a2c2b2a1c1b2a2c1b1a1CBAc2b2a1c2b2a1c2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2c2b2a1CBAc1b2a2c2b3a14.广义笛卡尔积(ExtendedCartesianProduct)2.4.2专门的关系运算表示记号表示记号(1)R,t R,tAi设关系模式为设关系模式为R(A1,A2,An)它的一个关系设为它的一个关系设为R。t R表示表示t是是R的一个元组的一个元组tAi则表示元组则表示元组t中相应于属性中相应于属性Ai的一个分量的一个分量2.4.2专门的关系运算(2)A,tA,A若若A=
39、Ai1,Ai2,Aik,其中,其中Ai1,Ai2,Aik是是A1,A2,An中的一部分,则中的一部分,则A称为属性列或称为属性列或域列。域列。tA=(tAi1,tAi2,tAik)表示元组表示元组t在属性列在属性列A上诸分量的集合。上诸分量的集合。A 则表示则表示A1,A2,An中去掉中去掉Ai1,Ai2,Aik后剩余的属性组。后剩余的属性组。2.4.2专门的关系运算(3)trts R为为n目关系,目关系,S为为m目关系。目关系。tr R,ts S,trts称为元组的连接。它是一个称为元组的连接。它是一个n+m列列的元组,前的元组,前n个分量为个分量为R中的一个中的一个n元组,后元组,后m个分
40、量为个分量为S中的一个中的一个m元组。元组。2.4.2专门的关系运算4)象集)象集Zx给给定定一一个个关关系系R(X,Z),X和和Z为为属属性性组组。当当tX=x时时,x在在R中的中的象集象集(ImagesSet)为:)为:Zx=tZ|t R,tX=x它表示它表示R中属性组中属性组X上值为上值为x的诸元组在的诸元组在Z上分量的集合。上分量的集合。x1Z1x1Z2x1Z3x2Z2x2Z3x3Z1x3Z3例子:x1在R中的象集Zx1=Z1,Z2,Z3x2在R中的象集为Zx2=Z2,Z3;x3在R中的象集为Zx3=Z1,Z3R2.4.2专门的关系运算选择选择投影投影连接连接除除2.4.2专门的关系运
41、算1.选择(Selection)1)选择又称为限制(选择又称为限制(Restriction)2)选择运算符的含义选择运算符的含义在关系在关系R中选择满足给定条件的诸元组中选择满足给定条件的诸元组F(R)=t|t R F(t)=真真F:选选择择条条件件,是是一一个个逻逻辑辑表表达达式式,基基本本形形式为:式为: (X1Y1) ( X2Y2)2.4.2专门的关系运算3)选择运算是从行的角度进行的运算选择运算是从行的角度进行的运算1.选择(Selection)2.4.2专门的关系运算学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage系系Sdept95001李勇李勇男男20CS95002
42、刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS(a)Student1.选择(Selection)2.4.2专门的关系运算(b)Course课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27C语言语言641.选择(Selection)2.4.2专门的关系运算(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade95001192950012859500138895002290950023801.选择(Selec
43、tion)2.4.2专门的关系运算例例1查询信息系(查询信息系(IS系)全体学生系)全体学生SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19ISSdept = IS (Student)结果:结果: 1.选择(Selection)2.4.2专门的关系运算例例2查询年龄小于查询年龄小于20岁的学生岁的学生SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS Sage 20(Student) 结果:结果:1.选择(Selection)2.4.2专门的关系运算1)投影运算符
44、的含义)投影运算符的含义从从R中选择出若干属性列组成新的关系中选择出若干属性列组成新的关系A(R)=tA|t RA:R中的属性列中的属性列2.投影(Projection)2.4.2专门的关系运算2)投影操作主要是从列的角度进行运算)投影操作主要是从列的角度进行运算n但但投投影影之之后后不不仅仅取取消消了了原原关关系系中中的的某某些些列列,而且还可能取消某些元组(避免重复行)而且还可能取消某些元组(避免重复行)2.投影(Projection)2.4.2专门的关系运算3)举例举例例例3查询学生的姓名和所在系查询学生的姓名和所在系即即求求Student关关系系上上学学生生姓姓名名和和所所在在系系两两
45、个个属性上的投影属性上的投影nSname,Sdept(Student) 2.投影(Projection)2.4.2专门的关系运算SnameSdept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立IS2.投影(Projection)2.4.2专门的关系运算例4查询学生关系Student中都有哪些系SdeptCSISMASdept(Student)结果:结果:2.4.2专门的关系运算3.连接(Join)1)连接也称为)连接也称为连接连接2)连接运算的含义)连接运算的含义从从两两个个关关系系的的笛笛卡卡尔尔积积中中选选取取属属性性间间满满足足一一定定条条件件的元组的元组 ABtrtsR S=|tr R
46、 ts S trAtsBnA和和B:分别为分别为R和和S上度数相等且可比的属性组上度数相等且可比的属性组n:比较运算符:比较运算符n连接运算从连接运算从R和和S的广义笛卡尔积的广义笛卡尔积RS中选中选取(取(R关系)在关系)在A属性组上的值与(属性组上的值与(S关系)关系)在在B属性组上值满足比较关系的元组。属性组上值满足比较关系的元组。2.4.2专门的关系运算3)两类常用连接运算)两类常用连接运算等值连接(等值连接(equijoin)什么是等值连接什么是等值连接为为“”的连接运算称为等值连接的连接运算称为等值连接等值连接的含义等值连接的含义从从关关系系R与与S的的广广义义笛笛卡卡尔尔积积中中
47、选选取取A、B属属性值相等的那些元组,即等值连接为:性值相等的那些元组,即等值连接为:A=BtrtsR S=|tr R ts S trA=tsB3.连接(Join)2.4.2专门的关系运算自然连接(自然连接(Naturaljoin)什么是自然连接什么是自然连接自然连接是一种特殊的等值连接自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同的属两个关系中进行比较的分量必须是相同的属性组性组在结果中把重复的属性列去掉在结果中把重复的属性列去掉自然连接的含义自然连接的含义R和和S具有相同的属性组具有相同的属性组BR S=|tr R ts S trB=tsBtrts3.连接(Join)2.4
48、.2专门的关系运算4)一般的连接操作是从行的角度进行运算。)一般的连接操作是从行的角度进行运算。 ABRS自然连接还需要取消重复列,所以是同时从自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。行和列的角度进行运算。 3.连接(Join)2.4.2专门的关系运算连接示例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS R SCE2.4.2专门的关系运算AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 R S CE连接示例2.4.2专门的关系运算等值连接示例ABCa1b15a1b26a2b3
49、8a2b412BEb13b27b310b32b52RS R SR.B=S.B2.4.2专门的关系运算AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32 R SR.B=S.B等值连接示例2.4.2专门的关系运算自然连接自然连接R S ABCEa1b153a1b267a2b3810a2b382课堂作业请写出下面两个表的自然连接结果:请写出下面两个表的等值连接结果:2.4.2专门的关系运算4)象集Z给给定定一一个个关关系系R(X,Z),X和和Z为为属属性性组组 。 当当 tX=x时时 , x在在 R中中 的的 象象 集集(ImagesSet)为:)为:Zx=tZ|t
50、 R,tX=x 它表示它表示R中属性组中属性组X上值为上值为x的诸元组在的诸元组在Z上分量的集合。上分量的集合。2.4.2专门的关系运算象集示例ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1RBCb1c2b2c3b2c1Cc2Cc3c1(a1,b1)象集象集(a1,b2)象集象集(a1)象集象集2.4.2专门的关系运算4.除(Division)给定关系给定关系R (X,Y) 和和S (Y,Z),其中,其中X,Y,Z为属性组。为属性组。R中的中的Y与与S中的中的Y可以有不同的属性名,但必须出自相同的域集。可以有不同的属性名,但必须出自相同的域集。R与与
51、S的除运算得到一个新的关系的除运算得到一个新的关系P(X),P是是R中满足下列条件的元组在中满足下列条件的元组在X属性列上的投影:属性列上的投影:元组在元组在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合。上投影的集合。RS=trX|tr R Y(S) YxYx:x在在R中的象集,中的象集,x=trX2.4.2专门的关系运算2)除操作是同时从行和列角度进行运算RS4.除(Division)2.4.2专门的关系运算ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSRS4.除(Division)
52、2.4.2专门的关系运算分析:在关系在关系R中,中,A可以取四个值可以取四个值a1,a2,a3,a4 a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为的象集为(b3,c7),(b2,c3)a3的象集为的象集为(b4,c6)a4的象集为的象集为(b6,c6)S在在(B,C)上的投影为上的投影为 (b1,c2),(b2,c1),(b2,c3) 只有只有a1的象集包含了的象集包含了S在在(B,C)属性组上的投影属性组上的投影所以RS=a12.4.2专门的关系运算5综合举例SC学学号号课课程程号号成成绩绩SnoCnoGrade95001192950012859500138
53、89500229095002380查询至少选修查询至少选修1号课程和号课程和3号课程的学生号码号课程的学生号码2.4.2专门的关系运算 3 1Cno首先建立一个临时关系首先建立一个临时关系K:然后求:然后求:Sno.Cno(SC)K5综合举例2.4.2专门的关系运算5综合举例Sno.Cno(SC)95001象集象集1,2,395002象集象集2,3Cno(K)=1,3于是:Sno.Cno(SC)K=95001SnoCno9500119500129500139500229500232.4.2专门的关系运算学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage系系Sdept95001李勇
54、李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS(a)Student5综合举例2.4.2专门的关系运算选择(续)(b)Course课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27C语言语言642.4.2专门的关系运算选择(续)(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade95001192950012859500138895002290950023802.4.2专门的关系运算
55、综合举例(续)例例8查询选修了查询选修了2号课程的学生的学号。号课程的学生的学号。Sno( ) 95001,95002Cno=2(SC)2.4.2专门的关系运算例例9查查询询选选修修了了一一门门其其先先行行课课为为5号号课程的课程的学生姓名。课程的课程的学生姓名。综合举例(续)2.4.2专门的关系运算5综合举例学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS(a)Student2.4.2专门的关系运算选择(续)(b)Course课程号课程号课程名
56、课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27C语言语言642.4.2专门的关系运算选择(续)(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade95001192950012859500138895002290950023802.4.2专门的关系运算综合举例(续)Sname(Cpno=5(CourseSCStudent)或或Sname(Cpno=5(Course)SCSno,Sname(Student)或或Sname(Sno(Cpno=5(Course
57、)SC)Sno,Sname(Student) 2.4.2专门的关系运算解法1:2.4.2专门的关系运算解法2:2.4.2专门的关系运算解法3:2.4.2专门的关系运算例例10查查询询选选修修了了全全部部课课程程的的学学生生号号码和姓名码和姓名.综合举例(续)2.4.2专门的关系运算综合举例(续)例例10查询选修了全部课程的学生号码和姓名。查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)课堂作业学生关系S(snum,sname,age,sex)学习关系SC(snum,cnum,grade)课程关系C(cnum,cname,tea
58、cher)(1)查询学习课程号为C2的学生学号与成绩(2)查询学习课程号为C2的学生学号与姓名(3)查询选修课程名为MATHS的学生学号与姓名(4)查询选修课程号为C2或C4的学生学号(5)查询至少选修课程号为C2和C4的学生学号(6)查询不学课程号为C2的学生姓名与年龄(7)查询学习全部课程的学生姓名(8)查询所学课程包含学生S3所学课程的学生号课堂作业(1)查询学习课程号为C2的学生学号与成绩(2)查询学习课程号为C2的学生学号与姓名(3)查询选修课程名为MATHS的学生学号与姓名(4)查询选修课程号为C2或C4的学生学号(5)查询至少选修课程号为C2和C4的学生学号(6)查询不学课程号为
59、C2的学生姓名与年龄(7)查询学习全部课程的学生姓名(8)查询所学课程包含学生S3所学课程的学生号课堂作业答案(1)查询学习课程号为C2的学生学号与成绩(2)查询学习课程号为C2的学生学号与姓名课堂作业答案(3)查询选修课程名为MATHS的学生学号与姓名(4)查询选修课程号为C2或C4的学生学号课堂作业答案(5)查询至少选修课程号为C2和C4的学生学号(6)查询不学课程号为C2的学生姓名与年龄课堂作业答案(7)查询学习全部课程的学生姓名(8)查询所学课程包含学生S3所学课程的学生号课后作业王珊、萨师煊数据库系统概论(第5版)教材第70页第6题只需要写出关系代数,不需要写ALPHA语言和QBE语言附录:主讲教师单位:厦门大学计算机科学系E-mail:个人网页:http:/