
数据库系统原理第2章关系数据库.ppt
135页第第2章章 关系数据库关系数据库((2017版)版) 厦门大学计算机科学系本科生课程厦门大学计算机科学系本科生课程《《数据库系统原理数据库系统原理》•2.0 关系数据库概述•2.1 关系数据结构及形式化定义•2.2 关系操作•2.3 关系的完整性•2.4 关系代数•2.5 关系演算第2章 关系数据库2.0 关系数据库概述•系系统统而而严严格格地地提提出出关关系系模模型型的的是是美美国国IBM公司的公司的E.F.Codd–1970年提出关系数据模型年提出关系数据模型•E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《《Communication of the ACM》》,1970–之后,提出了关系代数和关系演算的概念之后,提出了关系代数和关系演算的概念–1972年提出了关系的第一、第二、第三范式年提出了关系的第一、第二、第三范式–1974年提出了关系的年提出了关系的BC范式范式2.0 关系数据库概述•关关系系数数据据库库应应用用数数学学方方法法来来处处理理数数据据库库中的数据中的数据•80年年代代后后,,关关系系数数据据库库系系统统成成为为最最重重要要、、最流行的数据库系统最流行的数据库系统2.0 关系数据库概述•典型实验系统典型实验系统–System R–University INGRES•典型商用系统典型商用系统–ORACLE–SYBASE–INFORMIX–DB2–SQL SERVER2.1 关系数据结构及形式化定义2.1.1 关系2.1.2 关系模式2.1.3 关系数据库2.1.1 关系•⒈⒈ 域(域(Domain))• 2. 笛卡尔积(笛卡尔积(Cartesian Product))• 3. 关系(关系(Relation))2.1.1 关系•域域是一组具有相同数据类型的值的集合。
例是一组具有相同数据类型的值的集合例:•整数整数•实数实数•介于某个取值范围的整数介于某个取值范围的整数•指定长度的字符串集合指定长度的字符串集合•{‘男男’,,‘女女’}•介于某个取值范围的日期介于某个取值范围的日期•⒈⒈ 域(域(Domain))例例 给出三个域:给出三个域: D1=SUPERVISOR ={ 张清玫,刘逸张清玫,刘逸 } D2=SPECIALITY={计算机专业,信息专业计算机专业,信息专业} D3=POSTGRADUATE={李勇,刘晨,王敏李勇,刘晨,王敏}2.1.1 关系2. 笛卡尔积(笛卡尔积(Cartesian Product))•1) 笛卡尔积笛卡尔积给给定定一一组组域域D1,,D2,,…,,Dn,,这这些些域域中中可可以以有有相相同同的的D1,,D2,,…,,Dn的的笛卡尔积笛卡尔积为:为:D1×D2×…×Dn=={{((d1,,d2,,…,,dn))||di Di,,i==1,,2,,…,,n}}–所有域的所有取值的一个组合所有域的所有取值的一个组合–不能重复不能重复2.1.1 关系2. 笛卡尔积(笛卡尔积(Cartesian Product))•2) 元组元组((Tuple))–笛笛卡卡尔尔积积中中每每一一个个元元素素((d1,,d2,,…,,dn))叫叫作作一一个个n元组元组((n-tuple)或简称)或简称元组元组。
•3) 分量分量((Component))–笛卡尔积元素(笛卡尔积元素(d1,,d2,,…,,dn)中的每一个值)中的每一个值di叫作一个叫作一个分量分量 2.1.1 关系•4) 基数基数((Cardinal number))–若若Di((i==1,,2,,…,,n))为为有有限限集集,,其其基基数数为为 mi (( i == 1,, 2,, … ,, n)) ,, 则则D1×D2×…×Dn 的基数的基数M为:为:2. 笛卡尔积(笛卡尔积(Cartesian Product))2.1.1 关系•5)笛卡尔积的表示方法笛卡尔积的表示方法–笛笛卡卡尔尔积积可可表表示示为为一一个个二二维维表表表表中中的的每每行行对对应应一一个个元元组组,,表中的每列对应一个域表中的每列对应一个域2. 笛卡尔积(笛卡尔积(Cartesian Product))D1×D2×D3 =={{(张清玫,计算机专业,李勇张清玫,计算机专业,李勇),,(张清玫,计算机专业,刘晨张清玫,计算机专业,刘晨),, (张清玫,计算机专业,王敏张清玫,计算机专业,王敏),,(张清玫,信息专业,李勇张清玫,信息专业,李勇),, (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),,(张清玫,信息专业,王敏张清玫,信息专业,王敏),, (刘逸,计算机专业,李勇刘逸,计算机专业,李勇),,(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨),, (刘逸,计算机专业,王敏刘逸,计算机专业,王敏),,(刘逸,信息专业,李勇刘逸,信息专业,李勇),, (刘逸,信息专业,刘晨刘逸,信息专业,刘晨),,(刘逸,信息专业,王敏刘逸,信息专业,王敏) }}在例中,基数:在例中,基数:2×2×3==12,,即即D1×D2×D3共有共有2×2×3==12个元组个元组2.1.1 关系3. 关系(关系(Relation))1) 关系关系D1×D2×…×Dn有有意意义义的的子子集集叫叫作作在在域域D1,,D2,,…,,Dn上上的的关关系系,,表示为表示为 R((D1,,D2,,…,,Dn)) R::关系名关系名 n::关系的关系的目目或或度度((Degree))D1×D2×D3 =={{(张清玫,计算机专业,李勇张清玫,计算机专业,李勇),,(张清玫,计算机专业,刘晨张清玫,计算机专业,刘晨),, (张清玫,计算机专业,王敏张清玫,计算机专业,王敏),,(张清玫,信息专业,李勇张清玫,信息专业,李勇),, (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),,(张清玫,信息专业,王敏张清玫,信息专业,王敏),, (刘逸,计算机专业,李勇刘逸,计算机专业,李勇),,(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨),, (刘逸,计算机专业,王敏刘逸,计算机专业,王敏),,(刘逸,信息专业,李勇刘逸,信息专业,李勇),, (刘逸,信息专业,刘晨刘逸,信息专业,刘晨),,(刘逸,信息专业,王敏刘逸,信息专业,王敏) }}2.1.1 关系3. 关系(关系(Relation)) 取出有意义的元组构造关系取出有意义的元组构造关系SUPERVISORSPECIALITYPOSTGRADUATE张清玫张清玫计算机专业计算机专业李勇李勇张清玫张清玫计算机专业计算机专业刘晨刘晨张清玫张清玫计算机专业计算机专业王敏王敏张清玫张清玫信息专业信息专业李勇李勇张清玫张清玫信息专业信息专业刘晨刘晨张清玫张清玫信息专业信息专业王敏王敏刘逸刘逸计算机专业计算机专业李勇李勇刘逸刘逸计算机专业计算机专业刘晨刘晨刘逸刘逸计算机专业计算机专业王敏王敏刘逸刘逸信息专业信息专业李勇李勇刘逸刘逸信息专业信息专业刘晨刘晨刘逸刘逸信息专业信息专业王敏王敏2.1.1 关系关系:关系:SAP(SUPERVISOR,,SPECIALITY,,POSTGRADUATE)假设:导师与专业:假设:导师与专业:1:1,导师与研究生:,导师与研究生:1:n于是:于是:SAP关系可以包含三个元组关系可以包含三个元组 {{ (张清玫,信息专业,李勇张清玫,信息专业,李勇),, (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),, (刘逸,信息专业,王敏刘逸,信息专业,王敏) }2.1.1 关系2) 元组元组关系中的每个元素是关系中的元组,通常用关系中的每个元素是关系中的元组,通常用t表示。
表示3) 单元关系与二元关系单元关系与二元关系当当n=1时,称该关系为时,称该关系为单元单元关系(关系(Unary relation)当当n=2时,称该关系为时,称该关系为二元二元关系(关系(Binary relation)2.1.1 关系4) 关系的表示关系的表示关关系系也也是是一一个个二二维维表表,,表表的的每每行行对对应应一一个个元元组组,,表的每列对应一个域表的每列对应一个域2.1.1 关系5) 属性属性关关系系中中不不同同列列可可以以对对应应相相同同的的域域,,为为了了加加以以区区分分,,必必须须对对每每列列起起一一个个名名字字,,称称为为属属性性((Attribute)n目关系必有目关系必有n个属性2.1.1 关系6) 码码候选码(候选码(Candidate key))若关系中的某一属性组的值能唯一地标识一个元组,若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码则称该属性组为候选码关系:关系:Experiment (SNo,,BookNo,,Time)关系:关系:Student(SNo,,SName,,SAge)在最简单的情况下,候选码只包含一个属性。
在最简单的情况下,候选码只包含一个属性在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(为全码(All-key))2.1.1 关系主码主码若一个关系有多个候选码,则选定其中一个若一个关系有多个候选码,则选定其中一个为为主码主码((Primary key))主码的诸属性称为主码的诸属性称为主属性主属性((Prime attribute)不包含在任何侯选码中的属性称为不包含在任何侯选码中的属性称为非主属性非主属性((Non-key attribute)) 关系:关系:Experiment (SNo,,BookNo,,Time)关系:关系:Student(SNo,,SName,,SAge)关系:关系:SAP(SUPERVISOR,,SPECIALITY,,POSTGRADUATE)2.1.1 关系7) 三类关系三类关系基本关系基本关系(基本表或基表)(基本表或基表)实际存在的表,是实际存储数据的逻辑表示实际存在的表,是实际存储数据的逻辑表示查询表查询表查询结果对应的表查询结果对应的表视图表视图表由基本表或其他视图表导出的表,是虚表,不对由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据应实际存储的数据2.1.1 关系8) 基本关系的性质①① 列是同质的(列是同质的(Homogeneous))每一列中的分量是同一类型的数据,来自同每一列中的分量是同一类型的数据,来自同一个域一个域②② 不同的列可出自同一个域不同的列可出自同一个域其中的每一列称为一个属性其中的每一列称为一个属性不同的属性要给予不同的属性名不同的属性要给予不同的属性名2.1.1 关系③③ 列的顺序无所谓列的顺序无所谓列的次序可以任意交换列的次序可以任意交换④④ 任意两个元组不能完全相同任意两个元组不能完全相同由笛卡尔积的性质决定由笛卡尔积的性质决定⑤⑤ 行的顺序无所谓行的顺序无所谓行的次序可以任意交换行的次序可以任意交换8) 基本关系的性质2.1.1 关系⑥⑥ 分量必须取原子值分量必须取原子值每一个分量都必须是不可分的数据项。
每一个分量都必须是不可分的数据项这是规范条件中最基本的一条这是规范条件中最基本的一条8) 基本关系的性质2.1.2 关系模式1.什么是关系模式.什么是关系模式2.定义关系模式.定义关系模式3. 关系模式与关系关系模式与关系2.1.2 关系模式关系模式(关系模式(Relation Schema)是型)是型关系模式是对关系的描述关系模式是对关系的描述元组集合的结构元组集合的结构属性构成属性构成属性来自的域属性来自的域 属性与域之间的映象关系属性与域之间的映象关系元组语义以及完整性约束条件元组语义以及完整性约束条件属性间的数据依赖关系集合属性间的数据依赖关系集合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. 关系数据库2. 关系数据库的型与值2.1.3 关系数据库在一个给定的应用领域中,所有实体及实在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数体之间联系的关系的集合构成一个关系数据库。
据库1. 关系数据库2.1.3 关系数据库2. 关系数据库的型与值关系数据库也有型和值之分关系数据库也有型和值之分关关系系数数据据库库的的型型称称为为关关系系数数据据库库模模式式,,是是对对关关系系数据库的描述数据库的描述若干域的定义若干域的定义在这些域上定义的若干关系模式在这些域上定义的若干关系模式关关系系数数据据库库的的值值是是这这些些关关系系模模式式在在某某一一时时刻刻对对应应的数值的集合的数值的集合2.2 关系操作2.2.1 基本的关系操作2.2.2 关系数据语言的分类2.2.1 基本的关系操作•1) 常用的关系操作常用的关系操作–查询查询•选择、投影、连接、除、并、交、差选择、投影、连接、除、并、交、差–数据更新数据更新•插入、删除、修改插入、删除、修改–查询的表达能力是其中最主要的部分查询的表达能力是其中最主要的部分•2) 关系操作的特点关系操作的特点–集合操作方式,即操作的对象和结果都是集合集合操作方式,即操作的对象和结果都是集合•非关系数据模型的数据操作方式:一次一记录非关系数据模型的数据操作方式:一次一记录•文件系统的数据操作方式文件系统的数据操作方式2.2.2 关系数据语言的分类–关系代数语言关系代数语言 •用对关系的运算来表达查询要求用对关系的运算来表达查询要求•典型代表:典型代表:ISBL–关系演算语言:用谓词来表达查询要求关系演算语言:用谓词来表达查询要求–元组关系演算语言元组关系演算语言•谓词变元的基本对象是元组变量谓词变元的基本对象是元组变量•典型代表:典型代表:APLHA, QUEL–域关系演算语言域关系演算语言 •谓词变元的基本对象是域变量谓词变元的基本对象是域变量•典型代表:典型代表:QBE–具有关系代数和关系演算双重特点的语言具有关系代数和关系演算双重特点的语言典型代表:典型代表:SQL2.2.2 关系数据语言的分类关系数据语言的特点关系数据语言的特点–关系语言是一种高度非过程化的语言关系语言是一种高度非过程化的语言•存取路径的选择由存取路径的选择由DBMS的优化机制来完成的优化机制来完成•用户不必用循环结构就可以完成数据操作用户不必用循环结构就可以完成数据操作–能够嵌入高级语言中使用能够嵌入高级语言中使用–关关系系代代数数、、元元组组关关系系演演算算和和域域关关系系演演算算三三种种语言在表达能力上完全等价语言在表达能力上完全等价2.3 关系的完整性2.3.1 关系的三类完整性约束2.3.2 实体完整性2.3.3 参照完整性2.3.4 用户定义的完整性2.3.1 关系的三类完整性约束关系模型的完整性规则是对关系的某种约束条件。
关系模型的完整性规则是对关系的某种约束条件关系模型中三类完整性约束:关系模型中三类完整性约束:•实体完整性实体完整性•参照完整性参照完整性•用户定义的完整性用户定义的完整性 实实体体完完整整性性和和参参照照完完整整性性是是关关系系模模型型必必须须满满足足的的完完整整性性约约束束条条件件,,被被称称作作是是关关系系的的两两个个不不变变性性,,应该由关系系统自动支持应该由关系系统自动支持2.3.2实体完整性实体完整性规则(实体完整性规则(Entity Integrity))若属性若属性A是基本关系是基本关系R的主属性,则属性的主属性,则属性A不能取空值不能取空值2.3.2实体完整性实体完整性(续)关系模型必须遵守实体完整性规则的原因关系模型必须遵守实体完整性规则的原因(1) 实实体体完完整整性性规规则则是是针针对对基基本本关关系系而而言言的的一一个个基基本本表表通通常常对对应应现现实世界的一个实体集或多对多联系实世界的一个实体集或多对多联系2) 现现实实世世界界中中的的实实体体和和实实体体间间的的联联系系都都是是可可区区分分的的,,即即它它们们具具有有某某种唯一性标识种唯一性标识。
3) 相相应应地地,,关关系系模模型型中中以以主主码码作作为为唯唯一一性性标标识识主主码码中中的的属属性性即即主主属性不能取空值属性不能取空值空值就是空值就是“不知道不知道”或或“无意义无意义”的值 主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(实体,这与第(2)点相矛盾,因此这个规则称为实体完整性点相矛盾,因此这个规则称为实体完整性2.3.2实体完整性注意注意实体完整性规则规定基本关系的所有主属性都不能取空值实体完整性规则规定基本关系的所有主属性都不能取空值例例选修(学号,课程号,成绩)选修(学号,课程号,成绩)“学号、课程号学号、课程号”为主码,则两个属性都不能取空值为主码,则两个属性都不能取空值2.3.3 参照完整性1. 关系间的引用关系间的引用2. 外码外码3. 参照完整性规则参照完整性规则2.3.3 参照完整性1. 关系间的引用在在关关系系模模型型中中实实体体及及实实体体间间的的联联系系都都是是用用关关系系来来描描述述的的,,因因此此可可能能存存在在着着关关系系与与关关系系间间的的引用。
引用例例1 学学生生实实体体、、专专业业实实体体以以及及专专业业与与学学生生 间的一对多联系间的一对多联系 专业(专业(专业号专业号,专业名),专业名) 学生( 学生(学号学号,姓名,性别,,姓名,性别,专业号专业号,年龄),年龄)2.3.3 参照完整性学生(学号,姓名,性别,专业号,年龄)专业(专业(专业号专业号,专业名),专业名)2.3.3 参照完整性– 专业(专业(专业号专业号,专业名),专业名)– 学生( 学生(学号学号,姓名,性别,,姓名,性别,专业号专业号,年龄),年龄)学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性取值情况属性取值情况只取下面两类值:只取下面两类值:((1))空值空值,表示尚未给该学生分配专业,表示尚未给该学生分配专业((2)非空值,这时该值必须)非空值,这时该值必须是专业关系中某个元组的是专业关系中某个元组的“专业号专业号”值值,表示该,表示该学生不可能分配到一个不存在的专业中学生不可能分配到一个不存在的专业中2.3.3 参照完整性例例2 学生、课程、学生与课程之间的多对学生、课程、学生与课程之间的多对 多联系多联系 学生(学生(学号学号,,姓名,性别,专业号,年龄)姓名,性别,专业号,年龄) 课程(课程(课程号课程号,课程名,学分),课程名,学分) 选修(选修(学号学号,,课程号课程号,成绩),成绩)2.3.3 参照完整性 学生学生学生选课学生选课课程课程2.3.3 参照完整性 选修(选修(学号学号,,课程号课程号,成绩),成绩)它们只能取学生和课程关系中已经存在的主码值它们只能取学生和课程关系中已经存在的主码值2.3.3 参照完整性例3 学生实体及其内部的领导联系(一对多) 学生(学号,姓名,性别,专业号,年龄,班长)2.3.3 参照完整性学生(学生(学号学号,姓名,性别,专业号,年龄,,姓名,性别,专业号,年龄,班长班长))“班长班长”属性值可以取两类值:属性值可以取两类值:((1)空值,表示该学生所在班级尚未选出班长,或该)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;学生本人即是班长;((2)非空值,这时该值必须是本关系中某个元组的学)非空值,这时该值必须是本关系中某个元组的学号值号值2.3.3 参照完整性设设F是是基基本本关关系系R的的一一个个或或一一组组属属性性,,但但不不是是关关系系R的的码码。
如如果果F与与基基本本关关系系S的的主主码码Ks相相对对应应,,则则称称F是基本关系是基本关系R的的外码外码基基 本本 关关 系系 R称称为为 参参 照照 关关 系系 (( Referencing Relation))基基本本关关系系S称称为为被被参参照照关关系系((ReferencedRelation))或或目目标标关关系系((Target Relation)2.外码(Foreign Key)2.3.3 参照完整性说明说明•关系关系R和和S不一定是不同的关系不一定是不同的关系•目标关系目标关系S的主码的主码Ks 和参照关系的外码和参照关系的外码F必须必须定义在同一个(或一组)域上定义在同一个(或一组)域上•外码并不一定要与相应的主码同名外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往当外码与相应的主码属于不同关系时,往往 取相同的名字,以便于识别取相同的名字,以便于识别2.3.3 参照完整性3. 参照完整性规则若属性(或属性组)若属性(或属性组)F是基本关系是基本关系R的外码的外码它它与与基基本本关关系系S的的主主码码Ks相相对对应应((基基本本关关系系R和和S不不一一定定是是不不同同的的关关系系)),,则则对对于于R中中每每个个元元组组在在F上的值必须为:上的值必须为: 或者取空值(或者取空值(F的每个属性值均为空值)的每个属性值均为空值) 或者等于或者等于S中某个元组的主码值中某个元组的主码值2.3.3 参照完整性学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性只属性只取下面两类值:取下面两类值:((1))空值空值,表示尚未给该学生分配专业,表示尚未给该学生分配专业((2))非非空空值值,,这这时时该该值值必必须须是是专专业业关关系系中中某某个个元元组组的的“专专业业号号”值值,,表表示示该该学学生生不不可可能能分分配配到一个不存在的专业中到一个不存在的专业中2.3.3 参照完整性 选修(选修(学号学号,,课程号课程号,成绩),成绩)“学号学号”和和“课程号课程号”是选修关系中的主属性是选修关系中的主属性按照实体完整性和参照完整性规则,它们只按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主码值能取相应被参照关系中已经存在的主码值2.3.3 参照完整性学生(学生(学号学号,姓名,性别,专业号,年龄,,姓名,性别,专业号,年龄,班长班长))“班长班长”属性值可以取两类值:属性值可以取两类值:((1)空值,表示该学生所在班级尚未选出班长,或该)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;学生本人即是班长;((2)非空值,这时该值必须是本关系中某个元组的学)非空值,这时该值必须是本关系中某个元组的学号值号值2.3.4 用户自定义的完整性•用用户户定定义义的的完完整整性性是是针针对对某某一一具具体体关关系系数数据据库库的的约约束束条条件件,,反反映映某某一一具具体体应应用用所所涉涉及的数据必须满足的语义要求。
及的数据必须满足的语义要求•关关系系模模型型应应提提供供定定义义和和检检验验这这类类完完整整性性的的机机制制,,以以便便用用统统一一的的系系统统的的方方法法处处理理它它们们,,而不要由应用程序承担这一功能而不要由应用程序承担这一功能2.3.4 用户自定义的完整性例例: 课程课程(课程号课程号,课程名,学分,课程名,学分)–“课程名课程名”属性必须取唯一值属性必须取唯一值–非主属性非主属性“课程名课程名”也不能取空值也不能取空值–“学分学分”属性只能取值属性只能取值{1,,2,,3,,4}2.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.关系代数运算的三个要素.关系代数运算的三个要素运算对象:运算对象:关系关系运算结果:运算结果:关系关系运算符:运算符:四类四类2.4.0 概述–集合运算符集合运算符•将关系看成元组的集合将关系看成元组的集合•运算是从关系的运算是从关系的“水平水平”方向即行的角度来进行方向即行的角度来进行–专门的关系运算符专门的关系运算符•不仅涉及行而且涉及列不仅涉及行而且涉及列–算术比较符算术比较符•辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作–逻辑运算符逻辑运算符•辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作2.4.0 概述集集合合运运算算符符∪ ∪-∩×并并差差交交广义笛广义笛卡尔积卡尔积比比较较运运算算符符>>≥<<≤== ≠ 大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于运算符运算符含义含义运算符运算符含义含义表表2.4 关系代数运算符关系代数运算符 2.4.0 概述专门的专门的关系关系运算符运算符σπ ÷ 选择选择投影投影连接连接除除逻辑运逻辑运算符算符 ∧ ∧∨ ∨ 非非与与或或运算符运算符含义含义运算符运算符含义含义表表2.4 关系代数运算符(续)关系代数运算符(续) 2.4.0 概述4.关系代数运算的分类.关系代数运算的分类 传统的集合运算传统的集合运算 并、差、交、广义笛卡尔积并、差、交、广义笛卡尔积专门的关系运算专门的关系运算 选择、投影、连接、除选择、投影、连接、除2.4.1 传统的集合运算•并并•差差•交交•广义笛卡尔积广义笛卡尔积2.4.1 传统的集合运算1. 并(Union)•R和和S–具有相同的目具有相同的目n(即两个关系都有(即两个关系都有n个属性)个属性)–相应的属性取自同一个域相应的属性取自同一个域•R∪ ∪S –仍为仍为n目关系,由属于目关系,由属于R或属于或属于S的元组组成的元组组成 R∪ ∪S = { t|t R∨ ∨t S }2.4.1 传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪ ∪S 1. 并(Union)2.4.1 传统的集合运算2. 差(Difference)•R和和S–具有相同的目具有相同的目n–相应的属性取自同一个域相应的属性取自同一个域•R - S –仍仍为为n目目关关系系,,由由属属于于R而而不不属属于于S的的所所有有元元组组成组组成 R -S = { t|t R∧ ∧t S }2.4.1 传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S 2. 差(Difference)2.4.1 传统的集合运算3. 交(Intersection)•R和和S–具有相同的目具有相同的目n–相应的属性取自同一个域相应的属性取自同一个域•R∩S–仍为仍为n目关系,由既属于目关系,由既属于R又属于又属于S的元组组成的元组组成 R∩S = { t|t R∧ ∧t S } R∩S = R –(R-S))2.4.1 传统的集合运算ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR ∩ S 3. 交(Intersection)2.4.1 传统的集合运算4. 广义笛卡尔积(Extended Cartesian Product)•R–n目关系,目关系,k1个元组个元组•S–m目关系,目关系,k2个元组个元组•R×S –列:(列:(n+m)列的元组的集合)列的元组的集合•元组的前元组的前n列是关系列是关系R的一个元组的一个元组•后后m列是关系列是关系S的一个元组的一个元组–行:行:k1×k2个元组个元组R×S = {tr ts |tr R ∧ ∧ ts S }2.4.1 传统的集合运算ABCa1 b1 c1a1 b2 c2a2 b2 c1ABCa1b2c2a1b3c2a2b2c1RSR × S c1b1a1c1b1a1c1b2a2c1b2a2c2b2a1c1b2a2c1b1a1CBAc2b2a1c2b2a1c2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2c2b2a1CBAc1b2a2c2b3a14. 广义笛卡尔积(Extended Cartesian Product)2.4.2 专门的关系运算表示记号表示记号 ((1)) R,,t R,,t[Ai] 设关系模式为设关系模式为R(A1,,A2,,…,,An)它的一个关系设为它的一个关系设为R。
t R表示表示t是是R的一个元组的一个元组t[Ai]则表示元组则表示元组t中相应于属性中相应于属性Ai的一个分量的一个分量2.4.2 专门的关系运算((2)) A,,t[A],, A 若若A={Ai1,,Ai2,,…,,Aik},其中,其中Ai1,,Ai2,,…,,Aik是是A1,,A2,,…,,An中的一部分,则中的一部分,则A称为属性列或称为属性列或域列t[A]=(t[Ai1],,t[Ai2],,…,,t[Aik])表示元组表示元组t在属性列在属性列A上诸分量的集合上诸分量的集合A 则表示则表示{A1,,A2,,…,,An}中去掉中去掉{Ai1,,Ai2,,…,,Aik}后剩余的属性组后剩余的属性组 2.4.2 专门的关系运算–((3)) tr ts R为为n目关系,目关系,S为为m目关系tr R,,ts S,, tr ts称为元组的连接它是一个称为元组的连接它是一个n + m列列的元组,前的元组,前n个分量为个分量为R中的一个中的一个n元组,后元组,后m个分量为个分量为S中的一个中的一个m元组 2.4.2 专门的关系运算–4)象集)象集Zx 给给定定一一个个关关系系R((X,,Z)),,X和和Z为为属属性性组组。
当当t[X]=x时时,,x在在R中的中的象集象集((Images Set)为:)为: Zx={t[Z]|t R,,t[X]=x} 它表示它表示R中属性组中属性组X上值为上值为x的诸元组在的诸元组在Z上分量的集合上分量的集合 x1Z1x1Z2x1Z3x2Z2x2Z3x3Z1x3Z3例子:x1在R中的象集Zx1={Z1,Z2,Z3}x2在R中的象集为Zx2={Z2,Z3};x3在R中的象集为Zx3={Z1,Z3}R2.4.2 专门的关系运算•选择选择•投影投影•连接连接•除除2.4.2 专门的关系运算1. 选择(Selection)•1) 选择又称为限制(选择又称为限制(Restriction))•2) 选择运算符的含义选择运算符的含义–在关系在关系R中选择满足给定条件的诸元组中选择满足给定条件的诸元组 σF(R) = {t|t R∧ ∧F(t)= '真真'}–F::选选择择条条件件,,是是一一个个逻逻辑辑表表达达式式,,基基本本形形式为:式为:[ ( ] X1θY1 [ )][φ [ ( ] X2θY2 [ )]]…2.4.2 专门的关系运算•3) 选择运算是从行的角度进行的运算选择运算是从行的角度进行的运算 σ1. 选择(Selection)2.4.2 专门的关系运算学学 号号Sno姓姓 名名Sname性性 别别Ssex年年 龄龄Sage系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女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. 选择(Selection)2.4.2 专门的关系运算[例例1] 查询信息系(查询信息系(IS系)全体学生系)全体学生 SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19ISσSdept = 'IS' (Student)结果:结果: 1. 选择(Selection)2.4.2 专门的关系运算[例例2] 查询年龄小于查询年龄小于20岁的学生岁的学生SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS σSage < 20(Student) 结果:结果:1. 选择(Selection)2.4.2 专门的关系运算•1)投影运算符的含义)投影运算符的含义–从从R中选择出若干属性列组成新的关系中选择出若干属性列组成新的关系 πA(R) = { t[A] | t R }A::R中的属性列中的属性列2. 投影(Projection) 2.4.2 专门的关系运算•2)投影操作主要是从列的角度进行运算)投影操作主要是从列的角度进行运算πn但但投投影影之之后后不不仅仅取取消消了了原原关关系系中中的的某某些些列列,,而且还可能取消某些元组(避免重复行)而且还可能取消某些元组(避免重复行)2. 投影(Projection) 2.4.2 专门的关系运算•3) 举例举例[例例3] 查询学生的姓名和所在系查询学生的姓名和所在系即即求求Student关关系系上上学学生生姓姓名名和和所所在在系系两两个个属性上的投影属性上的投影nπSname,,Sdept(Student) 2. 投影(Projection) 2.4.2 专门的关系运算SnameSdept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立IS2. 投影(Projection) 2.4.2 专门的关系运算[例4] 查询学生关系Student中都有哪些系SdeptCSISMAπSdept(Student)结果:结果:2.4.2 专门的关系运算3. 连接(Join)•1)连接也称为)连接也称为θ连接连接•2)连接运算的含义)连接运算的含义–从从两两个个关关系系的的笛笛卡卡尔尔积积中中选选取取属属性性间间满满足足一一定定条条件件的元组的元组 AθBtr tsR S = { | tr R∧ ∧ts S∧ ∧tr[A]θts[B] }nA和和B::分别为分别为R和和S上度数相等且可比的属性组上度数相等且可比的属性组nθ:比较运算符:比较运算符 n连接运算从连接运算从R和和S的广义笛卡尔积的广义笛卡尔积R×S中选中选取(取(R关系)在关系)在A属性组上的值与(属性组上的值与(S关系)关系)在在B属性组上值满足比较关系的元组。
属性组上值满足比较关系的元组2.4.2 专门的关系运算•3)两类常用连接运算)两类常用连接运算–等值连接(等值连接(equijoin)) •什么是等值连接什么是等值连接–θ为为“==”的连接运算称为等值连接的连接运算称为等值连接 •等值连接的含义等值连接的含义–从从关关系系R与与S的的广广义义笛笛卡卡尔尔积积中中选选取取A、、B属属性值相等的那些元组,即等值连接为:性值相等的那些元组,即等值连接为:A=Btr tsR S = { | tr R∧ ∧ts S∧ ∧tr[A] = ts[B] } 3. 连接(Join)2.4.2 专门的关系运算–自然连接(自然连接(Natural join)) •什么是自然连接什么是自然连接–自然连接是一种特殊的等值连接自然连接是一种特殊的等值连接»两个关系中进行比较的分量必须是相同的属两个关系中进行比较的分量必须是相同的属性组性组»在结果中把重复的属性列去掉在结果中把重复的属性列去掉•自然连接的含义自然连接的含义R和和S具有相同的属性组具有相同的属性组B R S = { | tr R∧ ∧ts S∧ ∧tr[B] = ts[B] } tr ts3. 连接(Join)2.4.2 专门的关系运算•4)一般的连接操作是从行的角度进行运算。
一般的连接操作是从行的角度进行运算 AθBRS自然连接还需要取消重复列,所以是同时从自然连接还需要取消重复列,所以是同时从行和列的角度进行运算行和列的角度进行运算 3. 连接(Join)2.4.2 专门的关系运算连接示例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS R S C<<E2.4.2 专门的关系运算AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 R S C<<E连接示例2.4.2 专门的关系运算等值连接示例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS R S R.B=S.B2.4.2 专门的关系运算AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32 R S R.B=S.B等值连接示例2.4.2 专门的关系运算 自然连接自然连接 R S ABCEa1b153a1b267a2b3810a2b382课堂作业请写出下面两个表的自然连接结果:请写出下面两个表的等值连接结果:2.4.2 专门的关系运算4)象集Z 给给定定一一个个关关系系R((X,,Z)),,X和和Z为为属属性性组组 。
当当 t[X]=x时时 ,, x在在 R中中 的的 象象 集集((Images Set)为:)为: Zx={t[Z]|t R,,t[X]=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与与S的除运算得到一个新的关系的除运算得到一个新的关系P(X),,P是是R中满足下列条件的元组在中满足下列条件的元组在X属性列上的投影:属性列上的投影:元组在元组在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合上投影的集合。
R÷S = {tr [X] | tr R∧ ∧πY (S) Yx }Yx::x在在R中的象集,中的象集,x = tr[X]2.4.2 专门的关系运算•2)除操作是同时从行和列角度进行运算÷RS4. 除(Division) 2.4.2 专门的关系运算ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSR÷S4. 除(Division) 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)属性组上的投影属性组上的投影所以 R÷S ={a1} 2.4.2 专门的关系运算5.综合举例SC学学 号号课课 程程 号号成成 绩绩SnoCnoGrade9500119295001285950013889500229095002380查询至少选修查询至少选修1号课程和号课程和3号课程的学生号码号课程的学生号码 2.4.2 专门的关系运算 3 1Cno首先建立一个临时关系首先建立一个临时关系K::然后求:然后求:πSno.Cno(SC)÷K5.综合举例2.4.2 专门的关系运算5.综合举例•πSno.Cno(SC)95001象集象集{1,,2,,3}95002象集象集{2,,3} πCno(K)={1,,3} 于是:πSno.Cno(SC)÷K={95001}SnoCno9500119500129500139500229500232.4.2 专门的关系运算学学 号号Sno姓姓 名名Sname性性 别别Ssex年年 龄龄Sage系系Sdept95001李勇李勇男男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 专门的关系运算综合举例(续)[例例 8] 查询选修了查询选修了2号课程的学生的学号。
号课程的学生的学号πSno(( ))={={ 95001,,95002}} σCno='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课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学 23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理 27C语言语言642.4.2 专门的关系运算选择(续)(c)SC学学 号号课课 程程 号号成成 绩绩SnoCnoGrade95001192950012859500138895002290950023802.4.2 专门的关系运算综合举例(续) πSname(σCpno='5'(Course SC Student))或或 πSname(σCpno='5'(Course) SC πSno,,Sname(Student))或或 πSname (πSno (σCpno='5' (Course) 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,teacher) (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)查询不学课程号为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: ziyulin@个人网页:附录:课程助教单位:厦门大学计算机科学系数据库实验室2016级硕士研究生E-mail: 851189929@.com助教:魏亮助教:魏亮单位:厦门大学计算机科学系数据库实验室2016级硕士研究生E-mail: 1393723173@.com助教:曾冠华助教:曾冠华附录:班级网站林子雨主讲林子雨主讲《《数据库系统原理数据库系统原理》》2017班级主页班级主页扫一扫访问班级网站支持浏览实时主动数据仓库相关问题研究实时主动数据仓库相关问题研究 Department of Computer Science, Xiamen University, 2017。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






