数据库系统原理教程2关系数据库.ppt
第第2章章关系数据库关系数据库2.1关系数据库概述关系数据库概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数2.5关系演算关系演算2.6关系数据库管理系统关系数据库管理系统2.7小结小结关系数据库简介关系数据库简介l系系统统而而严严格格地地提提出出关关系系模模型型的的是是美美国国IBM公司的公司的E.F.Codd1970年提出关系数据模型年提出关系数据模型E.F.Codd,“A Relational Model of Data forLargeSharedDataBanks”,CommunicationoftheACM,1970之后,提出了关系代数和关系演算的概念之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式年提出了关系的第一、第二、第三范式1974年提出了关系的年提出了关系的BC范式范式关系数据库简介关系数据库简介l关关系系数数据据库库应应用用数数学学方方法法来来处处理理数数据据库库中的数据中的数据l80年年代代后后,关关系系数数据据库库系系统统成成为为最最重重要要、最流行的数据库系统最流行的数据库系统关系数据库简介关系数据库简介l典型实验系统典型实验系统SystemRUniversityINGRESl典型商用系统典型商用系统ORACLESYBASEDB2SQLServerINFORMIXINGRES第第2章章关系数据库关系数据库2.1关系数据库概述关系数据库概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数2.5关系演算关系演算2.6关系数据库管理系统关系数据库管理系统2.7小结小结2.1关系数据库概述关系数据库概述l关关系系数数据据库库系系统统是是支支持持关关系系模模型型的的数数据据库系统库系统l关系模型的组成关系模型的组成关系数据结构关系数据结构关系操作集合关系操作集合关系完整性约束关系完整性约束1.关系数据结构关系数据结构l单一的数据结构单一的数据结构-关系关系现现实实世世界界的的实实体体以以及及实实体体间间的的各各种种联联系系均均用用关系来表示关系来表示l数据的逻辑结构数据的逻辑结构-二维表二维表从从用用户户角角度度,关关系系模模型型中中数数据据的的逻逻辑辑结结构构是是一张二维表。一张二维表。2.关系操作关系操作l1)常用的关系操作常用的关系操作l2)关系操作的特点关系操作的特点l3)关系数据语言的种类关系数据语言的种类l4)关系数据语言的特点关系数据语言的特点关系操作关系操作(续)续)l1)常用的关系操作常用的关系操作查询查询选择选择、投影投影、连接连接、除、并、交、差、除、并、交、差数据更新数据更新插入插入、删除删除、修改修改查询的表达能力是其中最主要的部分查询的表达能力是其中最主要的部分关系操作(续)关系操作(续)l2)关系操作的特点关系操作的特点集集合合操操作作方方式式,即即操操作作的的对对象象和和结结果果都都是是集集合。合。非关系数据模型的数据操作方式:一次一记录非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式文件系统的数据操作方式关系操作(续)关系操作(续)l3)关系数据语言的种类关系数据语言的种类关系代数语言关系代数语言用用对关系的运算对关系的运算来表达查询要求来表达查询要求典型代表:典型代表:ISBL关系操作(续)关系操作(续)l关系数据语言的种类(续)关系数据语言的种类(续)关系演算语言:用关系演算语言:用谓词谓词来表达查询要求来表达查询要求元组关系演算语言元组关系演算语言谓词变元的基本对象是元组变量谓词变元的基本对象是元组变量典型代表:典型代表:APLHA,QUEL域关系演算语言域关系演算语言谓词变元的基本对象是域变量谓词变元的基本对象是域变量典型代表:典型代表:QBE具有关系代数和关系演算双重特点的语言具有关系代数和关系演算双重特点的语言典型代表:典型代表:SQL关系操作(续)关系操作(续)l4)关系数据语言的特点关系数据语言的特点关系语言是一种高度非过程化的语言关系语言是一种高度非过程化的语言存取路径的选择由存取路径的选择由DBMS的优化机制来完成的优化机制来完成用户不必用循环结构就可以完成数据操作用户不必用循环结构就可以完成数据操作能够嵌入高级语言中使用能够嵌入高级语言中使用关关系系代代数数、元元组组关关系系演演算算和和域域关关系系演演算算三三种种语言在表达能力上完全等价语言在表达能力上完全等价3.3.关系的三类完整性约束关系的三类完整性约束l实体完整性实体完整性通常由关系系统自动支持通常由关系系统自动支持l参照完整性参照完整性早期系统不支持,目前大型系统能自动支持早期系统不支持,目前大型系统能自动支持l用户定义的完整性用户定义的完整性反反映映应应用用领领域域需需要要遵遵循循的的约约束束条条件件,体体现现了了具体领域中的语义约束具体领域中的语义约束用户定义后由系统支持用户定义后由系统支持第第2章章关系数据库关系数据库2.1关系数据库概述关系数据库概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数2.5关系演算关系演算2.6关系数据库管理系统关系数据库管理系统2.7小结小结2.2关系数据结构关系数据结构l关系模型建立在集合代数的基础上关系模型建立在集合代数的基础上l关系数据结构的基本概念关系数据结构的基本概念关系关系关系模式关系模式关系数据库关系数据库2.2关系数据结构关系数据结构l1.1.关系关系l2.2.关系模式关系模式l3.3.关系数据库关系数据库一、一、关系关系l域(域(Domain)l2.笛卡尔积(笛卡尔积(CartesianProduct)l3.关系(关系(Relation)域(域(Domain)l域域是一组具有相同数据类型的值的集合。是一组具有相同数据类型的值的集合。例例整数整数实数实数指定长度的字符串集合指定长度的字符串集合介于某个取值范围的整数介于某个取值范围的整数男男,女女介于某个取值范围的日期介于某个取值范围的日期2.笛卡尔积(笛卡尔积(CartesianProduct)l1)笛卡尔积笛卡尔积给定一组域给定一组域D1,D2,Dn,这些域中可这些域中可以有相同的。以有相同的。D1,D2,Dn的的笛卡尔积笛卡尔积为:为:D1D2Dn(d1,d2,dn)di Di,i1,2,n 所有域的所有取值的一个组合所有域的所有取值的一个组合不能重复不能重复笛卡尔积(续笛卡尔积(续)例例给出三个域:给出三个域:D1=SUPERVISOR=张清玫,刘逸张清玫,刘逸D2=SPECIALITY=计算机专业,信息专业计算机专业,信息专业 D3=POSTGRADUATE=李勇,刘晨,王敏李勇,刘晨,王敏则则D1,D2,D3的笛卡尔积为:的笛卡尔积为:D1D2D3(张张清清玫玫,计计算算机机专专业业,李李勇勇),(张张清清玫玫,计计算算机机专专业业,刘刘晨晨),(张清玫,计算机专业,王敏张清玫,计算机专业,王敏),(张清玫,信息专业,李勇张清玫,信息专业,李勇),(张清玫,信息专业,刘晨张清玫,信息专业,刘晨),(张清玫,信息专业,王敏张清玫,信息专业,王敏),(刘逸,计算机专业,李勇刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏刘逸,计算机专业,王敏),(刘逸,信息专业,李勇刘逸,信息专业,李勇),(刘逸,信息专业,刘晨刘逸,信息专业,刘晨),(刘逸,信息专业,王敏刘逸,信息专业,王敏)笛卡尔积(续笛卡尔积(续)l2)元组元组(Tuple)笛笛卡卡尔尔积积中中每每一一个个元元素素(d1,d2,dn)叫叫作作一一个个n元组元组(n-tuple)或简称或简称元组元组。例例l3)分量(分量(Component)笛卡尔积元素(笛卡尔积元素(d1,d2,dn)中的每一个值中的每一个值di叫作一个叫作一个分量分量。例例笛卡尔积(续笛卡尔积(续)l4)基数(基数(Cardinalnumber)若若Di(i1,2,n)为为有有限限集集,其其基基数数为为mi(i1,2,n),则则D1D2Dn的基数的基数M为:为:在上例中,基数:在上例中,基数:22312,即,即D1D2D3共共有有22312个元组个元组笛卡尔积(续笛卡尔积(续)l5)笛卡尔积的表示方法笛卡尔积的表示方法笛笛卡卡尔尔积积可可表表示示为为一一个个二二维维表表。表表中中的的每每行行对应一个元组,表中的每列对应一个域。对应一个元组,表中的每列对应一个域。在上例中,在上例中,12个元组可列成一张二维表个元组可列成一张二维表笛卡尔积(续笛卡尔积(续)3.关系关系(Relation)l1)关系关系D1D2Dn的的子子集集叫叫作作在在域域D1,D2,Dn上的上的关系关系,表示为,表示为R(D1,D2,Dn)R:关系名关系名 n:关系的关系的目目或或度度(Degree)关系(续)关系(续)l1)关系关系(续续)注意注意关关系系是是笛笛卡卡尔尔积积的的有有限限子子集集。无无限限关关系系在在数数据据库库系统中是无意义的。系统中是无意义的。由于笛卡尔积不满足交换律,即由于笛卡尔积不满足交换律,即(d1,d2,dn)(d2,d1,dn)但关系满足交换律,即但关系满足交换律,即(d1,d2,di,dj,dn)=(d1,d2,dj,di,dn)(i,j=1,2,n)解解决决方方法法:为为关关系系的的每每个个列列附附加加一一个个属属性性名名以以取取消关系元组的有序性消关系元组的有序性关系(续)关系(续)例例在在表表2.1的笛卡尔积中取出有实际意义的元组的笛卡尔积中取出有实际意义的元组来构造关系来构造关系关系:关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)关系名,属性名关系名,属性名假设:假设:导师与专业:导师与专业:1:1,导师与研究生:,导师与研究生:1:n于是:于是:SAP关系可以包含三个元组关系可以包含三个元组(张清玫,信息专业,李勇张清玫,信息专业,李勇),(张清玫,信息专业,刘晨张清玫,信息专业,刘晨),(刘逸,信息专业,王敏刘逸,信息专业,王敏)关系(续)关系(续)l2)元组元组关系中的每个元素是关系中的关系中的每个元素是关系中的元组元组,通常用,通常用t 表示。表示。l3)单元关系与二元关系单元关系与二元关系当当n=1时,称该关系为时,称该关系为单元单元关系关系(Unaryrelation)。)。当当n=2时,称该关系为时,称该关系为二元二元关系关系(Binaryrelation)。)。关系(续)关系(续)l4)关系的表示关系的表示关关系系也也是是一一个个二二维维表表,表表的的每每行行对对应应一一个个元元组,表的每列对应一个域。组,表的每列对应一个域。关系(续)关系(续)l5)属性属性关关系系中中不不同同列列可可以以对对应应相相同同的的域域,为为了了加加以以区区分分,必必须须对对每每列列起起一一个个名名字字,称称为为属属性性(Attribute)。)。n目关系必有目关系必有n个属性。个属性。关系(续)关系(续)l6)码码候选码候选码若若关关系系中中的的某某一一属属性性组组的的值值能能唯唯一一地地标标识识一一个个元元组,则称该属性组为组,则称该属性组为候选码候选码(Candidatekey)。)。候选码的诸属性称为候选码的诸属性称为主属性主属性(Primeattribute)。)。不不包包含含在在任任何何侯侯选选码码中中的的属属性性称称为为非非码码属属性性(Non-keyattribute)。)。在在最最简简单单的的情情况况下下,候候选选码码只只包包含含一一个个属属性性。在在最最极极端端的的情情况况下下,关关系系模模式式的的所所有有属属性性组组是是这这个个关系模式的候选码,称为关系模式的候选码,称为全码全码(All-key)。)。关系(续)关系(续)l码码(续续)主码主码若若一一个个关关系系有有多多个个候候选选码码,则则选选定定其其中中一一个个为为主主码码(Primarykey)。)。关系(续)关系(续)l7)三类关系三类关系基本关系(基本表或基表)基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示实际存在的表,是实际存储数据的逻辑表示查询表查询表查询结果对应的表查询结果对应的表视图表视图表由由基基本本表表或或其其他他视视图图表表导导出出的的表表,是是虚虚表表,不不对对应实际存储的数据应实际存储的数据关系(续)关系(续)l8)基本关系的性质基本关系的性质列是同质的(列是同质的(Homogeneous)每每一一列列中中的的分分量量是是同同一一类类型型的的数数据据,来来自自同同一一个个域。域。不同的列可出自同一个域不同的列可出自同一个域其中的每一列称为一个属性其中的每一列称为一个属性不同的属性要给予不同的属性名不同的属性要给予不同的属性名关系(续)关系(续)例例:上例中也可以只给出两个域:上例中也可以只给出两个域:人(人(PERSON)=张清玫,刘逸,李勇,刘晨,王敏张清玫,刘逸,李勇,刘晨,王敏专业(专业(SPECIALITY)=计算机专业,信息专业计算机专业,信息专业SAP关系的导师属性和研究生属性都关系的导师属性和研究生属性都从从PERSON域中取值。域中取值。为为了了避避免免混混淆淆,必必须须给给这这两两个个属属性性取取不不同同的的属属性性名名,而而不不能能直接使用域名。直接使用域名。例例 如如 定定 义义 导导 师师 属属 性性 名名 为为 SUPERVISOR-PERSON(或或SUPERVISOR)研研 究究 生生 属属 性性 名名 为为 POSTGRADUATE-PERSON(或或POSTGRADUATE)SAP(SUPERVISOR-PERSON,SPECIALITY,POSTGRADUATE-PERSON)关系(续)关系(续)l基本关系的性质基本关系的性质(续续)列的顺序无所谓列的顺序无所谓列的次序可以任意交换列的次序可以任意交换遵遵循循这这一一性性质质的的数数据据库库产产品品(如如ORACLE),增增加加新属性时,永远是插至最后一列新属性时,永远是插至最后一列但但也也有有许许多多关关系系数数据据库库产产品品没没有有遵遵循循这这一一性性质质,例如例如FoxPro仍然区分了属性顺序仍然区分了属性顺序关系(续)关系(续)l基本关系的性质基本关系的性质(续续)任意两个元组不能完全相同任意两个元组不能完全相同由笛卡尔积的性质决定由笛卡尔积的性质决定但但许许多多关关系系数数据据库库产产品品没没有有遵遵循循这这一一性性质质。例例如如Oracle,FoxPro等等都都允允许许关关系系表表中中存存在在两两个个完完全全相相同同的的元元组组,除除非非用用户户特特别别定定义义了了相相应应的的约约束束条条件。件。关系(续)关系(续)l基本关系的性质基本关系的性质(续续)行的顺序无所谓行的顺序无所谓行的次序可以任意交换行的次序可以任意交换遵遵循循这这一一性性质质的的数数据据库库产产品品(如如ORACLE),插插入入一个元组时永远插至最后一行一个元组时永远插至最后一行但但也也有有许许多多关关系系数数据据库库产产品品没没有有遵遵循循这这一一性性质质,例如例如FoxPro仍然区分了元组的顺序仍然区分了元组的顺序关系(续)关系(续)l基本关系的性质基本关系的性质(续续)分量必须取原子值分量必须取原子值每每一一个个分分量量都都必必须须是是不不可可分分的的数数据据项项。这这是是规规范条件中最基本的一条范条件中最基本的一条二、二、关系模式关系模式l1什么是关系模式什么是关系模式l2定义关系模式定义关系模式l3.关系模式与关系关系模式与关系1什么是关系模式什么是关系模式l关系模式(关系模式(RelationSchema)是型,关系是值是型,关系是值l关系模式是对关系的描述关系模式是对关系的描述元组集合的结构元组集合的结构属性构成属性构成属性来自的域属性来自的域属性与域之间的映象关系属性与域之间的映象关系元组语义元组语义完整性约束条件完整性约束条件属性间的数据依赖关系集合属性间的数据依赖关系集合2定义关系模式定义关系模式l关系模式可以形式化地表示为:关系模式可以形式化地表示为:R(U,D,dom,F)R 关系名关系名U组成该关系的属性名集合组成该关系的属性名集合D属性组属性组U中属性所来自的域中属性所来自的域dom属性向域的映象集合属性向域的映象集合F属性间的数据依赖关系集合。属性间的数据依赖关系集合。定义关系模式定义关系模式(续续)例例在在上上面面例例子子中中,由由于于导导师师和和研研究究生生出出自自同同一一个个域域人人,所所以以要要取取不不同同的的属属性性名名,并并在在模模式式中中定定义义属属性性向向域域的的映映象象,即即说说明明它它们们分分别出自哪个域,如:别出自哪个域,如:dom(SUPERVISOR-PERSON)=dom(POSTGRADUATE-PERSON)=PERSON定义关系模式定义关系模式(续续)l关系模式通常可以简记为关系模式通常可以简记为R(U)或或R(A1,A2,An)R 关系名关系名A1,A2,An 属性名属性名注:域名及属性向域的映象常常直接说明为属注:域名及属性向域的映象常常直接说明为属性的类型、长度。性的类型、长度。3.关系模式与关系关系模式与关系l关系模式关系模式对关系的描述对关系的描述静态的、稳定的静态的、稳定的l关系关系关系模式在某一时刻的状态或内容关系模式在某一时刻的状态或内容动态的、随时间不断变化的动态的、随时间不断变化的l关关系系模模式式和和关关系系往往往往统统称称为为关关系系,通通过过上下文加以区别。上下文加以区别。三、关系数据库三、关系数据库l1.关系数据库关系数据库l2.关系数据库的型与值关系数据库的型与值1.关系数据库关系数据库l在在一一个个给给定定的的应应用用领领域域中中,所所有有实实体体及及实实体体之之间间联联系系的的关关系系的的集集合合构构成成一一个个关关系数据库。系数据库。2.关系数据库的型与值关系数据库的型与值l关系数据库也有型和值之分关系数据库也有型和值之分l关关系系数数据据库库的的型型称称为为关关系系数数据据库库模模式式,是对关系数据库的描述是对关系数据库的描述若干域的定义若干域的定义在这些域上定义的若干关系模式在这些域上定义的若干关系模式l关关系系数数据据库库的的值值是是这这些些关关系系模模式式在在某某一一时时刻刻对对应应的的关关系系的的集集合合,通通常常简简称称为为关关系数据库系数据库第第2章章关系数据库关系数据库2.1关系数据库概述关系数据库概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数2.5关系演算关系演算2.6关系数据库管理系统关系数据库管理系统2.7小结小结2.3关系的完整性关系的完整性l关关系系模模型型的的完完整整性性规规则则是是对对关关系系的的某某种种约约束束条条件。件。l关系模型中三类完整性约束:关系模型中三类完整性约束:实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性l实实体体完完整整性性和和参参照照完完整整性性是是关关系系模模型型必必须须满满足足的的完完整整性性约约束束条条件件,被被称称作作是是关关系系的的两两个个不不变变性性,应该由关系系统自动支持。,应该由关系系统自动支持。关系的完整性关系的完整性(续续)l1.实体完整性实体完整性l2.参照完整性参照完整性l3.用户定义的完整性用户定义的完整性一、一、实体完整性实体完整性l实体完整性规则(实体完整性规则(EntityIntegrity)若若属属性性A是是基基本本关关系系R的的主主属属性性,则则属属性性A不不能取空值。能取空值。例例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE属属性性为为主主码码(假假设设研研究究生生不不会会重重名名),则其不能取空值。,则其不能取空值。实体完整性实体完整性(续续)l关系模型必须遵守实体完整性规则的原因关系模型必须遵守实体完整性规则的原因(1)实实体体完完整整性性规规则则是是针针对对基基本本关关系系而而言言的的。一一个个基基本本表表通通常常对对应应现现实实世世界界的的一一个个实实体体集集或多对多联系。或多对多联系。(2)现现实实世世界界中中的的实实体体和和实实体体间间的的联联系系都都是是可区分的,即它们具有某种唯一性标识。可区分的,即它们具有某种唯一性标识。(3)相相应应地地,关关系系模模型型中中以以候候选选码码作作为为唯唯一一性标识。性标识。实体完整性实体完整性(续续)l关系模型必须遵守实体完整性规则的原因关系模型必须遵守实体完整性规则的原因(续续)(4)候候选选码码中中的的属属性性即即主主属属性性不不能能取取空空值值。所所谓谓空空值值就就是是“不不知知道道”或或“无无意意义义”的的值值。如如果果主主属属性性取取空空值值,就就说说明明存存在在某某个个不不可可标标识识的的实实体体,即即存存在在不不可可区区分分的的实实体体,这这与与第第(2)点点相相矛矛盾盾,因因此此这这个个规规则则称称为为实实体体完完整整性。性。实体完整性实体完整性(续续)l注意注意实实体体完完整整性性规规则则规规定定基基本本关关系系的的所所有有主主属属性性都都不不能能取取空空值值,而而不不仅仅是是主主码码整整体体不不能能取取空空值。值。例:例:选修(学号,课程号,成绩)选修(学号,课程号,成绩)“学号、课程号学号、课程号”为主码,为主码,则学号和课程号两个属性都不能取空值则学号和课程号两个属性都不能取空值二、二、参照完整性参照完整性l1.关系间的引用关系间的引用l2.外码外码l3.参照完整性规则参照完整性规则1.关系间的引用关系间的引用l在在关关系系模模型型中中实实体体及及实实体体间间的的联联系系都都是是用用关关系系来来描描述述的的,因因此此可可能能存存在在着着关关系系与关系间的引用。与关系间的引用。例例1学学生生实实体体、专专业业实实体体以以及及专专业业与与学学生生间间的的一对多联系一对多联系学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)专业(专业(专业号专业号,专业名),专业名)学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)专业(专业(专业号专业号,专业名),专业名)关系间的引用关系间的引用(续续)例例2学生、课程、学生与课程之间的多对多联系学生、课程、学生与课程之间的多对多联系学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)学生学生学生选课学生选课课程课程关系间的引用关系间的引用(续续)例例3学生实体及其内部的领导联系学生实体及其内部的领导联系(一对多一对多)学生(学生(学号学号,姓名,性别,专业号,年龄,班长),姓名,性别,专业号,年龄,班长)2外码外码l外码外码设设F是是基基本本关关系系R的的一一个个或或一一组组属属性性,但但不不是是关关系系R的的码码。如如果果F与与基基本本关关系系S的的主主码码Ks相相 对对 应应,则则 称称 F是是 基基 本本 关关 系系 R的的 外外 码码(ForeignKey)基基本本关关系系R称称为为参参照照关关系系(ReferencingRelation)基基本本关关系系S称称为为被被参参照照关关系系(ReferencedRelation)或或目标关系目标关系(TargetRelation)。)。外码外码(续续)l说明说明关系关系R和和S不一定是不同的关系。不一定是不同的关系。目目标标关关系系S的的主主码码Ks和和参参照照关关系系的的外外码码F必必须须定义在同一个(或一组)域上。定义在同一个(或一组)域上。外码并不一定要与相应的主码同名。外码并不一定要与相应的主码同名。当当外外码码与与相相应应的的主主码码属属于于不不同同关关系系时时,往往往往取相同的名字,以便于识别。取相同的名字,以便于识别。l例例3.参照完整性规则参照完整性规则l参参照照完完整整性性规规则则就就是是定定义义外外码码与与主主码码之之间的引用规则。间的引用规则。l参照完整性规则参照完整性规则若若属属性性(或或属属性性组组)F是是基基本本关关系系R的的外外码码,它它与与基基本本关关系系S的的主主码码Ks相相对对应应(基基本本关关系系R和和S不不一一定定是是不不同同的的关关系系),则则对对于于R中中每每个个元元组组在在F上上的的值值必必须须为:为:或者取空值(或者取空值(F的每个属性值均为空值)的每个属性值均为空值)或者等于或者等于S中某个元组的主码值。中某个元组的主码值。参照完整性规则参照完整性规则(续续)l例例例例1学学生生关关系系中中每每个个元元组组的的“专专业业号号”属属性性只只能能取取下面两类值:下面两类值:(1)空值,表示尚未给该学生分配专业;)空值,表示尚未给该学生分配专业;(2)非非空空值值,这这时时该该值值必必须须是是专专业业关关系系中中某某个个元元组组的的“专专业业号号”值值,表表示示该该学学生生不不可可能能分配到一个不存在的专业中。分配到一个不存在的专业中。参照完整性规则参照完整性规则(续续)例例2由由于于“学学号号”和和“课课程程号号”是是选选修修关关系系中中的的主主属属性性,按按照照实实体体完完整整性性和和参参照照完完整整性性规规则则,它它们们只只能能取取相相应应被被参参照照关关系系中中已已经经存存在在的的主主码值。码值。参照完整性规则参照完整性规则(续续)例例3“班长班长”属性值可以取两类值:属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;长,或该学生本人即是班长;(2)非空值,这时该值必须是本关系中某个)非空值,这时该值必须是本关系中某个元组的学号值。元组的学号值。三、三、用户定义的完整性用户定义的完整性l用用户户定定义义的的完完整整性性是是针针对对某某一一具具体体关关系系数数据据库库的的约约束束条条件件,反反映映某某一一具具体体应应用用所涉及的数据必须满足的语义要求。所涉及的数据必须满足的语义要求。l关关系系模模型型应应提提供供定定义义和和检检验验这这类类完完整整性性的的机机制制,以以便便用用统统一一的的系系统统的的方方法法处处理理它们,而不要由应用程序承担这一功能。它们,而不要由应用程序承担这一功能。用户定义的完整性用户定义的完整性(续续)例例课程课程(课程号课程号,课程名,学分,课程名,学分)“课程名课程名”属性必须取唯一值属性必须取唯一值非主属性非主属性“课程名课程名”也不能取空值也不能取空值“学分学分”属性只能取值属性只能取值1,2,3,4第第2章章关系数据库关系数据库2.1关系数据库概述关系数据库概述2.2关系数据结构关系数据结构2.3关系的完整性关系的完整性2.4关系代数关系代数2.5关系演算关系演算2.6关系数据库管理系统关系数据库管理系统2.7小结小结关系代数(续)关系代数(续)l1.关系代数关系代数l2.运算的三要素运算的三要素l3.关系代数运算的三个要素关系代数运算的三个要素l4.关系代数运算的分类关系代数运算的分类l5.表示记号表示记号关系代数(续)关系代数(续)l1.关系代数关系代数一种抽象的查询语言一种抽象的查询语言用对关系的运算来表达查询用对关系的运算来表达查询关系代数(续)关系代数(续)l2运算的三要素运算的三要素运算对象运算对象运算符运算符运算结果运算结果关系代数(续)关系代数(续)l3关系代数运算的三个要素关系代数运算的三个要素运算对象:关系运算对象:关系运算结果:关系运算结果:关系运算符:四类运算符:四类关系代数(续)关系代数(续)运算符(续)运算符(续)集合运算符集合运算符将关系看成元组的集合将关系看成元组的集合从从关关系系的的“水水平平”方方向向即即行行的的角角度度来来进进行行运运算算专门的关系运算符专门的关系运算符不仅涉及行而且涉及列不仅涉及行而且涉及列算术比较符算术比较符辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作逻辑运算符逻辑运算符辅助专门的关系运算符进行操作辅助专门的关系运算符进行操作集集合合运运算算符符-并并差差交交广义笛广义笛卡尔积卡尔积比比较较运运算算符符大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于运算符运算符含义含义运算符运算符含义含义表表2.4关系代数运算符关系代数运算符关系代数(续)关系代数(续)专专 门门 的的关关系系运运 算算 符符选择选择投影投影连接连接除除逻逻 辑辑 运运算算符符 非非与与或或运算符运算符含义含义运算符运算符含义含义表表2.4关系代数运算符(续)关系代数运算符(续)关系代数(续)关系代数(续)关系代数(续)关系代数(续)l4关系代数运算的分类关系代数运算的分类传统的集合运算传统的集合运算并、差、交、广义笛卡尔积并、差、交、广义笛卡尔积专门的关系运算专门的关系运算选择、投影、连接、除选择、投影、连接、除关系代数(续)关系代数(续)l5表示记号表示记号(1)R,t R,tAi设关系模式为设关系模式为R(A1,A2,An)。它的一它的一个关系设为个关系设为R。t R表示表示t是是R的一个元组。的一个元组。tAi则表示元组则表示元组t中相应于属性中相应于属性Ai的一个分量。的一个分量。关系代数(续)关系代数(续)(2)A,tA,A若若A=Ai1,Ai2,Aik,其中其中Ai1,Ai2,Aik是是A1,A2,An中的一部分,则中的一部分,则A称称为属性列或域列。为属性列或域列。tA=(tAi1,tAi2,tAik)表示元组表示元组t在属性列在属性列A上诸分量的集合。上诸分量的集合。A则表示则表示A1,A2,An中去掉中去掉Ai1,Ai2,Aik后剩余的属性组。后剩余的属性组。关系代数(续)关系代数(续)(3)trts R为为n目关系,目关系,S为为m目关系。目关系。tr R,ts S,trts称为元组的连接称为元组的连接。它是一个它是一个n+m列的元列的元组,前组,前n个分量为个分量为R中的一个中的一个n元组,后元组,后m个个分量为分量为S中的一个中的一个m元组。元组。关系代数(续)关系代数(续)4)象集)象集Zx给给定定一一个个关关系系R(X,Z),X和和Z为为属属性性组组。当当tX=x时时,x在在R中中的的象象集集(ImagesSet)为:为:Zx=tZ|t R,tX=x 它表示它表示R中属性组中属性组X上值为上值为x的诸元组在的诸元组在Z上上分量的集合。分量的集合。2.4 关系代数关系代数l2.4.1传统的集合运算传统的集合运算l2.4.2专门的关系运算专门的关系运算2.4 关系代数关系代数l2.4.1传统的集合运算传统的集合运算l2.4.2专门的关系运算专门的关系运算2.4.1传统的集合运算传统的集合运算l并并l差差l交交l广义笛卡尔积广义笛卡尔积1.并(并(Union)lR和和S具有相同的目具有相同的目n(即两个关系都有即两个关系都有n个属性)个属性)相应的属性取自同一个域相应的属性取自同一个域lRS仍为仍为n目关系,由属于目关系,由属于R或属于或属于S的元组组成的元组组成 RS=t|t Rt S 并并(续续)ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSRS2.差(差(Difference)lR和和S具有相同的目具有相同的目n相应的属性取自同一个域相应的属性取自同一个域lR-S仍仍为为n目目关关系系,由由属属于于R而而不不属属于于S的的所所有有元元组组成组组成R-S=t|t Rt S差差(续续)ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S3.交(交(Intersection)lR和和S具有相同的目具有相同的目n相应的属性取自同一个域相应的属性取自同一个域lRS仍仍为为n目目关关系系,由由既既属属于于R又又属属于于S的的元元组组组组成成 RS=t|t Rt S RS=R(R-S)交交(续续)ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S4.广义笛卡尔积(广义笛卡尔积(ExtendedCartesianProduct)lRn目关系,目关系,k1个元组个元组lSm目关系,目关系,k2个元组个元组lRS列:(列:(n+m)列的元组的集合列的元组的集合元组的前元组的前n列是关系列是关系R的一个元组的一个元组后后m列是关系列是关系S的一个元组的一个元组行:行:k1k2个元组个元组RS=trts|tr Rts S广义笛卡尔积广义笛卡尔积(续续)ABCa1 b1 c1a1 b2 c2a2 b2 c1ABCa1 b2 c2a1 b3 c2a2 b2 c1RSR SABCABCa1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c12.4 关系代数关系代数l2.4.1传统的集合运算传统的集合运算l2.4.2专门的关系运算专门的关系运算2.4.2专门的关系运算专门的关系运算l选择选择l投影投影l连接连接l除除1.选择(选择(Selection)l1)选择又称为限制(选择又称为限制(Restriction)l2)选择运算符的含义选择运算符的含义在关系在关系R中选择满足给定条件的诸元组中选择满足给定条件的诸元组F(R)=t|t RF(t)=真真F:选择条件,是一个逻辑表达式,基本形式为:选择条件,是一个逻辑表达式,基本形式为:(X1Y1)(X2Y2):比较运算符(,比较运算符(,或,或)X1,Y1等等:属属性性名名、常常量量、简简单单函函数数;属属性性名名也也可可以以用用它它的序号来代替;的序号来代替;:逻辑运算符(逻辑运算符(或或):表示任选项:表示任选项:表示上述格式可以重复下去:表示上述格式可以重复下去选择选择(续)续)l3)选择运算是从行的角度进行的运算选择运算是从行的角度进行的运算l4)举例举例设设有有一一个个学学生生-课课程程数数据据库库,包包括括学学生生关关系系Student、课程关系课程关系Course和选修关系和选修关系SC。选择选择(续)续)学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS(a)Student例1例2例4例3例9选择选择(续)续)(b)Course课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64例9选择选择(续)续)(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade9500119295001285950013889500229095002380例7例9选择(续)选择(续)例例1查询信息系(查询信息系(IS系)全体学生系)全体学生Sdept=IS(Student)或或5=IS(Student)结果:结果:SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19IS选择(续)选择(续)例例2查询年龄小于查询年龄小于20岁的学生岁的学生Sage20(Student)或或420(Student)结果:结果:SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS2.投影(投影(Projection)l1)投影运算符的含义)投影运算符的含义从从R中选择出若干属性列组成新的关系中选择出若干属性列组成新的关系A(