第2章 关系模型精选文档.ppt
第2章关系模型本讲稿第一页,共八十页本章主要内容本章主要内容u关系模型的数据组织方式关系模型的数据组织方式数据结构数据结构u按关系模型组织的数据必须满足的约束按关系模型组织的数据必须满足的约束条件条件数据完整性数据完整性u按关系模型组织的数据所允许的操作按关系模型组织的数据所允许的操作数据操作数据操作 本讲稿第二页,共八十页引言vE.F.Codd于70年代初提出关系数据理论,他因此获得1981年的ACM图灵奖v关系理论是建立在集合代数理论基础上的,有着坚实的数学基础v早期代表系统System:由IBM研制INGRES:由加州Berkeley分校研制v目前主流的商业数据库系统都为关系型:Oracle,Informix,Sybase,SQLServer,DB2Access,Foxpro,Foxbase本讲稿第三页,共八十页2.1 关系模型的数据结构关系模型的数据结构1.关系的基本名词关系的基本名词v关系:一张满足某些约束条件的二维表,如表一张满足某些约束条件的二维表,如表2-1 Students关系。关系模型的数据结构是关系。关系。关系模型的数据结构是关系。v元组:关系中的一行称为一个元组。对应表中的一行,存放关系中的一行称为一个元组。对应表中的一行,存放的是客观世界的一个的是客观世界的一个实例实例,如表,如表Students关系中的一行,关系中的一行,存放的是一个学生的数据存放的是一个学生的数据。v属性:关系中的一列,称为一个属性。对应表中的一列。一个关系中的一列,称为一个属性。对应表中的一列。一个属性表示实体的一个特征,如表属性表示实体的一个特征,如表 Students关系中的关系中的Sno属性属性表示学生表示学生实体实体的学号特征值。的学号特征值。本讲稿第四页,共八十页v实体实体(Entity):实体是客观存在的并且相互区分的事务。实体可以实体是客观存在的并且相互区分的事务。实体可以是实际事务,也可以是抽象事件。例如,一个职工、一个部门等是实际事务,也可以是抽象事件。例如,一个职工、一个部门等属于实际的事务;一次订货、借阅若干本图书、一场比赛等活动属于实际的事务;一次订货、借阅若干本图书、一场比赛等活动是比较抽象的事件。是比较抽象的事件。v实体集(实体集(Entity Set):同型实体的集合称为实体集。例如全体职同型实体的集合称为实体集。例如全体职工集合,全馆图书等。工集合,全馆图书等。v实体型(实体型(Entity Type):具有相同属性的实体具有共同的特征):具有相同属性的实体具有共同的特征和性质,用实体名及其属性名来抽象和刻画同类实体称为实体和性质,用实体名及其属性名来抽象和刻画同类实体称为实体型。例如实体型型。例如实体型“职工职工”表示全体职工的概念,并不具体指职表示全体职工的概念,并不具体指职工甲或职工乙。每个职工是职工实体工甲或职工乙。每个职工是职工实体“型型”的一个具体的一个具体“值值”,必须明确区分,必须明确区分“型型”与与“值值”的概念。在数据模型中的实体的概念。在数据模型中的实体均是指均是指“型型”而言的。以后在不致引起混淆的情况下,说而言的。以后在不致引起混淆的情况下,说实体实体即是实体型。即是实体型。本讲稿第五页,共八十页v一个二维表就是一个关系学生表属性属性元组元组男女男性别192221年龄D01李红1002D02王伟1003D01张军1001系号姓名学号记录字段本讲稿第六页,共八十页v域:关系中一个属性的取值范围。例如,关系中一个属性的取值范围。例如,Ssex的取值范围是的取值范围是M,F,代表性别为男性和女性。,代表性别为男性和女性。v关系示例关系示例:本讲稿第七页,共八十页v关系的等价术语之间的对应关系关系的等价术语之间的对应关系一般用户 关系模型 程序员 表(Table)关系(Relation)文件(File)行(Row)实体(Entity)记录(Record)列(Column)属性(Attribute)字段(Field)2.2.关系的性质关系的性质v关系中每一属性都是最小的关系中每一属性都是最小的。对表而言,每一个。对表而言,每一个行与列的交叉点上只能存放一个单值行与列的交叉点上只能存放一个单值 。本讲稿第八页,共八十页v关系中同一属性的所有属性值具有相同的数据类型。关系中同一属性的所有属性值具有相同的数据类型。对表而言,表中同一列中的所有列值都必须属于同对表而言,表中同一列中的所有列值都必须属于同一数据类型。例如表一数据类型。例如表2-1中中Students表的表的Sname列的列的所有值都是字符串类型。所有值都是字符串类型。v关系中的属性名不能重复。关系中的属性名不能重复。对表而言,表中每一对表而言,表中每一列都有惟一的列名,不允许有两个列有相同的列名。列都有惟一的列名,不允许有两个列有相同的列名。例如表例如表2-1 Students表不允许有两个列,列名都叫表不允许有两个列,列名都叫Sname。本讲稿第九页,共八十页v关关系系的的属属性性位位置置从从左左到到右右出出现现的的顺顺序序无无关关紧紧要要。对对表表而而言言,表表中中的的列列从从左左到到右右出出现现的的顺顺序序无无关关紧紧要要。即即列列的的次次序序可可以以任任意意交交换换。例例如如表表2-1 Students表表中中,可可以把以把Sname列放在第一列,也可以是第二列等等。列放在第一列,也可以是第二列等等。v关关系系中中任任意意两两个个元元组组不不能能完完全全相相同同。对对表表而而言言,表表中中任任意意两两个个行行不不能能完完全全相相同同,即即每每一一行行都都是是惟惟一一的的,没有重复的行。没有重复的行。v关关系系中中的的元元组组从从上上到到下下出出现现的的顺顺序序无无关关紧紧要要。对对表表而而言言,表表中中的的行行从从上上到到下下出出现现的的顺顺序序也也无无关关紧紧要要,即即行行的的次次序序可以任意交换。可以任意交换。本讲稿第十页,共八十页v满足上述条件的表才能称作关系。满足上述条件的表才能称作关系。v当我们把关系和表看作是等价的时候,即默认此表当我们把关系和表看作是等价的时候,即默认此表是满足上述关系的性质的。是满足上述关系的性质的。v理解关系的性质:横向上看,一个关系可以看作是若理解关系的性质:横向上看,一个关系可以看作是若干个元组的集合;纵向上看,一个关系可以看作是若干个元组的集合;纵向上看,一个关系可以看作是若干个属性的集合。集合的理论表明,集合中不允许包干个属性的集合。集合的理论表明,集合中不允许包含重复元素的,因而可以解释关系的含重复元素的,因而可以解释关系的6条性质。条性质。本讲稿第十一页,共八十页3.关系的候选键与主键关系的候选键与主键v表表中中某某一一列列(或或若若干干列列的的最最小小组组合合)的的值值能能惟惟一一标标识识一一个个行行,称称该该列列或或列列组组为为候候选选键键。如如Students表表的的Sno列列,就就是是一一个个候候选选键键。因因为为,给给定定一一个个Sno的的值值,如如20030101,就能确定表中惟一的一行,第,就能确定表中惟一的一行,第4行。行。v对于一个表,可能有多个候选键对于一个表,可能有多个候选键。v候候选选键键取取决决于于应应用用范范围围,如如给给定定条条件件,没没有有重重复复的的学学生姓名,则生姓名,则Sname是是Students表的一个候选键。表的一个候选键。本讲稿第十二页,共八十页v如如果果一一个个表表有有多多个个候候选选键键,数数据据库库设设计计者者通通常常选选择择其其中中一一个个候候选选键键作作为为区区分分行行的的惟惟一一性性标标识识符符,称称为为主主键键(primary key,PK)。如如果果一一个个表表只只有有一一个个候候选选键键,那那么么这这个个候候选选键键就就作作为为主主键键。例例如如,在在Students表,把表,把Sno作为该表的主键。作为该表的主键。v因因为为主主键键是是候候选选键键之之一一,而而根根据据候候选选键键的的定定义义,候候选选键键列列上上的的各各个个值值都都惟惟一一,因因此此主主键键列列上上的的各各个个值值也都惟一。也都惟一。本讲稿第十三页,共八十页4.关系模式关系模式v关系模式是关系的形式化描述。关系模式是关系的形式化描述。v最简单的表示为:最简单的表示为:关系名(属性名关系名(属性名1,属性名属性名2,属性名属性名n)注注意意:主主键键要要用用下下划划线线表表明明。但但有有时时,关关系系模模式式中中并并没没有表明主键。有表明主键。例如:例如:Students关系的关系模式为:关系的关系模式为:Students(Sno,Sname,Ssex,Sbirthdate,Sdept)本讲稿第十四页,共八十页v关系模式即是一个表的表头描述。关系模式即是一个表的表头描述。v表头也称为关系的结构、关系的型等。表头也称为关系的结构、关系的型等。v除除表表头头一一行行以以外外的的所所有有行行的的集集合合(即即表表内内容容),称为关系的值。称为关系的值。v一一个个关关系系(表表),由由表表头头和和表表内内容容两两部部分分组组成成,表表头头是是相相对对不不变变的的,而而表表内内容容是是经经常常改改变变的的。如如Students表表中中,当当有有新新学学生生入入学学时时,就就增增加加若若干干行行,当当学学生生毕毕业业时时,就就要删除若干行,所以表是动态的。要删除若干行,所以表是动态的。本讲稿第十五页,共八十页5.关系数据库关系数据库v关系数据库是相互关联的表或者说关系的集合关系数据库是相互关联的表或者说关系的集合v因因为为一一个个表表存存放放的的是是某某一一应应用用领领域域的的一一个个实实体体或或实实体体间间的的联联系系,如如Students表表存存放放的的是是学学生生这这个个实实体体,Courses表表存存放放的的是是课课程程这这个个实实体体,Enrollment表表存存放放的的学学生生实实体体与与课课程程实实体体之之间间的的联联系系,这这里里为为选选课课联联系系。因因此此关关系系数数据据库库中中存存放放的的是是某某一一应应用用领领域域中中的的所所有有实实体体和和实实体体之之间间的联系。的联系。v一一个个关关系系用用一一个个关关系系模模式式表表示示,所所有有关关系系模模式式集集合合构构成成数数据库的模式,它是数据库整体逻辑结构的描述。据库的模式,它是数据库整体逻辑结构的描述。本讲稿第十六页,共八十页2.2 关系模型的数据完整性关系模型的数据完整性v关系模型的数据完整性指的是完整性关系模型的数据完整性指的是完整性规则。规则。v完整性规则包括实体完整性规则、参完整性规则包括实体完整性规则、参照完整性规则和用户自定义完整性规照完整性规则和用户自定义完整性规则三大类。则三大类。v实体完整性和参照完整性是关系模型实体完整性和参照完整性是关系模型必须满足的两个完整性规则。必须满足的两个完整性规则。本讲稿第十七页,共八十页1.实体完整性规则实体完整性规则v实体完整性规则实体完整性规则是表中任意一行的主键值不能为空值。是表中任意一行的主键值不能为空值。v空空值值,用用“null”表表示示,大大小小写写一一样样。空空值值是是尚尚未未确确定的值或不确定的值。如定的值或不确定的值。如Enrollment表中的表中的Grade值。值。v空空值值和和数数值值型型列列的的0值值以以及及字字符符型型列列的的空空字字符符串串的的不不同同,数值型列的数值型列的0值与字符型列的空字符串都是确定的值。值与字符型列的空字符串都是确定的值。本讲稿第十八页,共八十页v根根据据主主键键的的定定义义,主主键键值值必必须须惟惟一一。因因此此,实实体体完完整整性性也也可可定定义义为为:主主键键值值惟惟一一且且不不能能为为空空值值。表表中中任任意一行的主键值不能为空值。意一行的主键值不能为空值。v完完整整性性的的意意义义:一一个个表表对对应应存存放放一一个个实实体体,表表中中的的每每一一行行代代表表实实体体中中的的一一个个实实例例。如如学学生生表表用用来来存存放放学学生生实实体体,该该表表中中的的一一行行代代表表一一个个学学生生,一一个个学学生生有有惟惟一一的的一一个个学学号号。如如果果主主键键值值SnoSno为为空空值值,表表明明该该学学生生的的学学号号不不能能确确定定,也也就就是是说说没没有有惟惟一一确确定定的的学学号号,这这只只能能说说明明他他/她她不不是是学学生生,因因此此就就不不应应该该存存放放在在学学生生表表中。中。本讲稿第十九页,共八十页如果主键值如果主键值SnoSno为空值,出现错误为空值,出现错误本讲稿第二十页,共八十页v实实体体完完整整性性的的作作用用:一一旦旦定定义义表表的的主主键键,RDBMS将将自自动动地地对对该该表表中中的的每每一一行行的的主主键键值值进进行行检检查查,若若发发现现主主键键值值为为空空或或不不惟惟一一,RDBMS会会给给出出错错误误信信息息,这样就能确保表中的每一行是惟一的,可以区分的。这样就能确保表中的每一行是惟一的,可以区分的。本讲稿第二十一页,共八十页2.参照完整性规则参照完整性规则v参参照照完完整整性性规规则则是是一一个个表表的的外外键键值值可可以以为为空空值值。若若不不为为空空值值,则则必必须须等等于于另另一一个个表表中中主主键键的的某某个个值。值。v外外键键(Foreign Key,FK):若若一一个个表表R1中中的的一一个个列列或或列列组组对对应应另另一一个个表表R2的的主主键键,那那么么该该列列或或列列组组称为表称为表R1的外键。的外键。v外键可以由一个或多个列组成,可以有重复值。外键可以由一个或多个列组成,可以有重复值。本讲稿第二十二页,共八十页v外键与主键的关系示例:外键与主键的关系示例:图2-1 学生、课程、选课表主键、外键参照关系图本讲稿第二十三页,共八十页Sno列输入“20010108”在Students表中不存在,出现错误本讲稿第二十四页,共八十页Cno列输入“C5”在Courses表中不存在,出现错误本讲稿第二十五页,共八十页本讲稿第二十六页,共八十页v外键的取值的两种情况分析:外键的取值的两种情况分析:图2-2系表、课程表主键、外键参照关系图 本讲稿第二十七页,共八十页v参照完整性的作用:在关系数据库系统中,一旦参照完整性的作用:在关系数据库系统中,一旦定义了表的外键,也即定义了外键与另一个表的定义了表的外键,也即定义了外键与另一个表的主键的参照与被参照联系,主键的参照与被参照联系,RDBMS将根据外键将根据外键的定义,自动检查表中的每一行,若发现外键的定义,自动检查表中的每一行,若发现外键值违反外键的规则,值违反外键的规则,RDBMS会给出错误信息,要会给出错误信息,要求用户纠正,这样能确保表之间的参照与被参照联求用户纠正,这样能确保表之间的参照与被参照联系的正确性。系的正确性。本讲稿第二十八页,共八十页v说明:说明:实体完整性和参照完整性在关系实体完整性和参照完整性在关系模型中是必须实现的。遗憾的是模型中是必须实现的。遗憾的是SQL Server 2000中可以定义没有主键的表,中可以定义没有主键的表,即没有实现实体完整性。另外,即使表即没有实现实体完整性。另外,即使表有外键,也可以不定义为外键,没有实有外键,也可以不定义为外键,没有实现参照完整性。现参照完整性。本讲稿第二十九页,共八十页3.用户自定义完整性规则用户自定义完整性规则v用用户户自自定定义义完完整整性性规规则则是是表表格格设设计计者者为为了了保保证证表表中中某某些些行行、列列的的数数据据满满足足具具体体应应用用要要求求而而自自定定义义的一些规则。的一些规则。v自定义规则往往根据实际的应用背景提出来。自定义规则往往根据实际的应用背景提出来。例例如如:在在Students表表中中,Ssex列列的的取取值值范范围围只只能能是是F/M,因为实际情况是性别只能为男或女。因为实际情况是性别只能为男或女。本讲稿第三十页,共八十页Ssex列输入“B”时超出了取值范围“F”或“M”出现错误本讲稿第三十一页,共八十页v关关系系代代数数是是对对关关系系型型数数据据库库操操作作的的抽抽象象语语言言,也也称称查查询询语语言言。这这里里的的查查询询,包包括括数数据据的的插插入入、删删除除、修修改改、查找等,即数据的操纵。查找等,即数据的操纵。v关关系系代代数数只只对对数数据据操操纵纵进进行行抽抽象象表表示示,基基于于关关系系代代数数实实现现的的关关系系型型数数据据库库操操纵纵语语言言,如如SQL,才才能能对对数数据据库库中中的的数数据据进进行实际操作。行实际操作。v关关系系代代数数的的作作用用只只是是用用来来衡衡量量其其它它实实现现了了的的查查询询语语言言如如SQL等等的查询能力。的查询能力。2.3 关系模型的数据操作关系模型的数据操作关系代数关系代数本讲稿第三十二页,共八十页v关关系系代代数数中中,运运算算的的对对象象是是关关系系(表表),运运算算的的结结果果是一个新关系(表)。是一个新关系(表)。v关关系系的的运运算算包包含含两两部部分分,即即传传统统的的集集合合运运算算和和特特殊殊的关系运算。的关系运算。v传传统统的的集集合合运运算算:(并并运运算算),(差差运运算算),(交运算),(交运算),(笛卡儿积运算)。(笛卡儿积运算)。v4个个特特殊殊的的关关系系运运算算:(选选择择),(投投影影),(连接),(连接),(除)。(除)。本讲稿第三十三页,共八十页本讲稿第三十四页,共八十页1.传统的关系运算传统的关系运算v两两个个表表的的兼兼容容性性。所所谓谓兼兼容容,即即两两个个表表的的表表头头结结构构相相同,且对应列的数据类型相同。同,且对应列的数据类型相同。v并并、差差、交交运运算算都都要要求求有有两两个个表表参参加加运运算算,并并且且两两个个表是兼容的。表是兼容的。v并并运运算算:给给定定两两个个兼兼容容的的表表R和和S,R和和S并并运运算算的的结结果果是是一一个个与与R和和S兼兼容容的的新新表表。该该表表由由属属于于R的的所所有有行行加加上上属属于于S的的所所有有行行组组成成,但但必必须须删删去去重重复复的的行,记作行,记作RS。本讲稿第三十五页,共八十页v并运算举例并运算举例u u并并并并运算含义:包含一年级学生或获奖学生的信息运算含义:包含一年级学生或获奖学生的信息 R S本讲稿第三十六页,共八十页v差差运运算算:给给定定两两个个兼兼容容的的表表R和和S,R和和S差差运运算算的的结结果果是是一一个个与与R和和S兼兼容容的的新新表表。该该表表由由属属于于R而而不不属属于于S的的所所有有行行组组成成,记作记作R-S。举例(见下页)。举例(见下页)R S本讲稿第三十七页,共八十页v差运算举例差运算举例表表2-32-3Jounor_StudnetsJounor_Studnets表表u u差运算含义:一年级但没有获奖的学生信息差运算含义:一年级但没有获奖的学生信息差运算含义:一年级但没有获奖的学生信息差运算含义:一年级但没有获奖的学生信息 本讲稿第三十八页,共八十页v交运算交运算:给定两个兼容的表:给定两个兼容的表R和和S,R和和S交运交运算的结果是一个与算的结果是一个与R和和S兼容的新表,该表由兼容的新表,该表由既属于既属于R又属于又属于S的行组成,记作的行组成,记作RS。举例。举例(见下页)(见下页)R S本讲稿第三十九页,共八十页v交运算举例交运算举例表表2-32-3Jounor_StudnetsJounor_Studnets表表u交运算含义:一年级并获奖的学生信息。交运算含义:一年级并获奖的学生信息。本讲稿第四十页,共八十页v笛笛卡卡儿儿积积:简简称称积积运运算算,也也是是二二元元运运算算,即即要要求求有有两两个表参加运算,个表参加运算,但这两个表可以不兼容。但这两个表可以不兼容。v笛卡儿积运算定义:给定两个表笛卡儿积运算定义:给定两个表R和和S,R和和S的积运算的积运算的结果是一个新表,新表中的行由的结果是一个新表,新表中的行由R中的每一行和中的每一行和S中中的每一行组合而成。记作的每一行组合而成。记作RS。新表可能包含重复的。新表可能包含重复的列,因此不一定是一个关系列,因此不一定是一个关系。v若若R表有表有m个列,个列,S表有表有n个列,则个列,则RS是一个具有(是一个具有(m+n)个列的表,且)个列的表,且RS表中的任一行的前表中的任一行的前m列是列是R表的表的一个行,后一个行,后n列是列是S表的一个行。如果表的一个行。如果R有有i行,行,S有有j行,行,则则RS有(有(ij)行。可见两个表的笛卡儿积运算结果)行。可见两个表的笛卡儿积运算结果会很大。会很大。本讲稿第四十一页,共八十页笛卡儿积运算过程演示笛卡儿积运算过程演示Table:Courses本讲稿第四十二页,共八十页v笛卡儿积运算举例笛卡儿积运算举例表表2-32-3Jounor_StudnetsJounor_Studnets表表本讲稿第四十三页,共八十页2.专门的关系运算专门的关系运算v包含:选择运算、投影运算和连接运算。包含:选择运算、投影运算和连接运算。v选选择择运运算算:从从指指定定的的R表表中中选选择择某某些些满满足足条条件的件的行行构成一个新表。记作构成一个新表。记作F(R)其中,其中,是选择运算的符号;是选择运算的符号;F 是选择条件,写成是选择条件,写成的下标;的下标;R 写在括号中,是被选择的表名。写在括号中,是被选择的表名。本讲稿第四十四页,共八十页 举例:举例:从从Students表找出所有女同学的情况表找出所有女同学的情况 Ssex=F(Students)结果:结果:本讲稿第四十五页,共八十页v关键:关键:选择运算的条件表示如下选择运算的条件表示如下v单个查询条件单个查询条件 形式为:形式为:AiAj 其中,其中,Ai、Aj是表是表R中的列名或常量值;中的列名或常量值;是比较运算符,是:是比较运算符,是:=、!=、和和之一。之一。例如:学号为例如:学号为20010102的条件为:的条件为:Sno20010102v又又 如如:所所 在在 系系 为为 计计 算算 机机 系系 的的 条条 件件 为为:Sdept=Computer 本讲稿第四十六页,共八十页v多多个个查查询询条条件件 用用(逻逻辑辑与与,也也可可用用and)、(逻逻辑或辑或,or)、)、(逻辑非(逻辑非,not)构成)构成 例如:从例如:从Students表找艺术系的女同学的情况表找艺术系的女同学的情况 Sdept=Art SsexF 等价于:等价于:Sdept=Art and SsexF 表示为:表示为:Sdept=Art and Ssex=F(Students)结果:结果:本讲稿第四十七页,共八十页v投投影影运运算算:从从指指定定的的表表R中中选选择择某某些些列列构构成成一一个个新新表表。记作记作A(R)。)。v关关键键确确定定A:A是是一一个个列列名名或或多多个个列列名名,多多个个列列名名之间用逗号分隔,之间用逗号分隔,A写作写作的下标。的下标。R被投影的表名。被投影的表名。v投影结果表中的重复行要消除。投影结果表中的重复行要消除。例例如如:从从Students表表中中选选择择Sno、Sname和和Sdept三三个列组成新表的投影运算可写成:个列组成新表的投影运算可写成:vSno,Sname,Sdept(Students)本讲稿第四十八页,共八十页vSno,Sname,Sdept(Students)结果:)结果:本讲稿第四十九页,共八十页v连连接接运运算算:从从R与与S的的笛笛卡卡儿儿积积RS中中选选择择满满足足连连接条件的行。记作接条件的行。记作:v两种特殊的连接:等值连接和自然连接。两种特殊的连接:等值连接和自然连接。等值连接:等值连接:连接条件用连接条件用=,则则AB A=B 例例StudentsStudents和和EnrollmentEnrollment的等值连接:的等值连接:=ABAB(RSRS)本讲稿第五十页,共八十页本讲稿第五十一页,共八十页vStudentsStudents和和EnrollmentEnrollment的等值连接的结果的等值连接的结果本讲稿第五十二页,共八十页自自然然连连接接:若若等等值值连连接接的的连连接接条条件件中中的的列列名名相相同同,且且结结果果表表中中消消除除了了重重复复列列,则则把把此此种种等等值值连连接接称称为为自自然然连连接接,记记作作RS。自然连接中不必标注连接条件。自然连接中不必标注连接条件。例例如如:Students表表和和Enrollment表表的的自自然然连连接接表表示示为为:StudentsEnrollment。本讲稿第五十三页,共八十页v自自然然连连接接是是最最常常见见的的连连接接运运算算。除除非非有有特特别别的的声声明明,连接一般指的是自然连接。连接一般指的是自然连接。v自自然然连连接接的的执执行行:先先计计算算笛笛卡卡儿儿积积、再再进进行行选选择择运运算、最后进行投影运算,消除重复的列得到结果。算、最后进行投影运算,消除重复的列得到结果。v自然运算与等值连接的区别:自然运算与等值连接的区别:v自自然然连连接接要要求求连连接接的的两两个个表表有有相相同同的的列列(公公共共列列),等等值连接则不要求。值连接则不要求。v自自然然连连接接结结果果表表中中去去掉掉了了重重复复的的列列,等等值值连连接接却却可能包含重复的列。可能包含重复的列。本讲稿第五十四页,共八十页v在在关关系系数数据据库库中中,经经常常是是依依靠靠表表之之间间的的公公共共列列把把相相互互独独立立的的表表连连接接在在一一起起,实实现现从从多多个个表表中中提提取取所所需需的的信信息。息。v例例如如:Students、Enrollment、Courses三三表表的的自自然连接,可以实现从选课数据库中提取所需的信息。然连接,可以实现从选课数据库中提取所需的信息。v用自然连接将它们连接起来,Enrollment表中含有与Students表公共的列Sno,含有与Courses表公共的列Cno,从而这三个表可以实现自然连接。vStudentsEnrollmentCourses本讲稿第五十五页,共八十页CameProCnoCreditsStudentsEnrollmentCourses的结果为:的结果为:本讲稿第五十六页,共八十页除法运算除法运算:设关系R(X,Y)和与关系S(Y,Z)其中X,Y,Z为属性组,但必须出自相同的域。R与S的除法运算得到一个P(X),P是R中满足下列条件的元组在X属性上的投影,即元组在X上的分量值x的象集Yx包含S在Y上的投影。R(X,Y)S(Y,Z)结果属性象集属性目标数据集投影本讲稿第五十七页,共八十页例2.2求选修了全部课程的学生学号关系Enrollment除关系Courses被除关系:表T1表T2投影表T3本讲稿第五十八页,共八十页2.4 关系代数综合实例关系代数综合实例v本本节节用用到到学学生生选选课课数数据据库库,包包括括学学生生Students、课课程程Courses、选课(、选课(Enrollment)三个表。)三个表。v每个表的的关系模式如下,数据样本见图每个表的的关系模式如下,数据样本见图2-1 Students(Sno,Sname,Ssex,Sage,Sdept)Courses(Cno,Cname,PreCno,Credits)Enrollment(Sno,Cno,Grade)本讲稿第五十九页,共八十页v用关系代数表示查询。解题步骤:用关系代数表示查询。解题步骤:1.根根据据题题意意确确定定要要输输出出的的列列以以及及这这些些列列所所在在的的表表,由由此此确确定被操作的表名称,可能有多个。定被操作的表名称,可能有多个。2.根根据据题题意意,确确定定选选择择条条件件以以及及选选择择条条件件中中用用到到的的列在哪个表中,这里又确定一些被操作的表名称。列在哪个表中,这里又确定一些被操作的表名称。3.根根据据1、2两两步步确确定定的的表表名名称称形形成成所所有有要要操操作作的的表表名名集。集。本讲稿第六十页,共八十页4.若若表表名名集集中中只只有有一一个个表表,则则如如果果要要输输出出的的列列是是这这个个表表的的全全部部列列,就就只只用用选选择择运运算算;否否则则先先用用选选择择,后后用用投投影选取要输出的(属性)列。影选取要输出的(属性)列。5.如如表表名名集集中中有有两两个个或或多多个个表表,则则一一般般用用自自然然连连接接将将它它们们连连接接起起来来,如如果果发发现现不不存存在在公公共共列列,即即几几个个表表不不能能进进行行自自然然连连接接,则则要要在在表表名名集集中中加加入入一一个个或或多多个个中中间间表表,中中间间表表中中含含有有能能进进行行自自然然连连接接的的公公共共列列,从从而而使使得得表表名名集集中中全全部部表表可可以以进进行行自自然然连连接接;将将选选择择条条件件作作用用于于自自然然连连接接后后产产生生的的新新表表上上,之之后后一一般般用投影操作选取要输出的列。用投影操作选取要输出的列。本讲稿第六十一页,共八十页实例实例【例例2.1】查询计算机系学生的学号和姓名。查询计算机系学生的学号和姓名。1.根据题目确定要输出的列为:Sno,Sname,都在Students表中;2.根据题意,要选择的是计算机系的学生,确定选择条件是:Sdept=Computer,选择条件中用到的列Sdept也在Students表中;3.根据1,2两步确定的所有的表名,形成表名集为 Students;本讲稿第六十二页,共八十页4.因为表名集中只有一个Students表,并且因为要输出的列不是Students表的全部列,则先用选择,后用投影选取要输出的列Sno,Sname。综上,该查询的关系代数表达式为:综上,该查询的关系代数表达式为:Sno,Sname(Sdept=Computer(Students)结果:结果:本讲稿第六十三页,共八十页【例例2.2】查查询询选选修修了了课课程程号号为为C2的的学学生生学学号号、姓姓名名、所所在系。在系。1.根据题目确定要输出的列为:Sno,Sname,Sdept,都在Students表中;2.根据题意,课程号为C2,则选择条件是Cno=C2,因为Cno列在Enrollment表中,所以也用到Enrollment表;3.根 据1,2两 步 确 定 用 到 的 表 名 集 为Students,Enrollment;本讲稿第六十四页,共八十页4.因为表名集中有两个表,则用自然连接将它们连接起来,这两个表存在共同的列为Sno,可以进行自然连接。将选择条件Cno=C2作用于自然连接后产生的新表上,并用投影操作选取要输出的列Sno,Sname,Sdept。综上,该查询的关系代数表达式为:综上,该查询的关系代数表达式为:Sno,Sname,Sdept(Cno=C2(StudentsEnrollment)结果:结果:本讲稿第六十五页,共八十页【例例2.3】查查询询选选修修了了课课程程名名为为Database的的学学生生学学号号和和姓姓名。名。1.根据题目确定要输出的列为:Sno,Sname,都在Students表中;2.根据题意,课程名为Database,则选择的条件为Cname=Database,因为Cname列在Courses表中,所以也用到Courses表;3.根据1,2两步确定用到的表名集为Students、Courses;本讲稿第六十六页,共八十页4.因为表名集中有两个表,则要用自然连接将它们连接起来,但因为这两表不存在共同的列,不能进行自然连接。因此要加入中间表,中间表中应含有能与其它两个表进行自然连接的公共列,这个表就是Enrollment。将选择条件Cname=Database作用于自然连接后产生的新表上,并用投影操作选取要输出的列Sno,Sname。综上,该查询的关系代数表达式为,结果:综上,该查询的关系代数表达式为,结果:Students.Sno,Sname,(Cname=Database(StudentsEnrollmentCourses)本讲稿第六十七页,共八十页【例例2.4】查询选修了课程名为查询选修了课程名为Database的学生学号、姓的学生学号、姓名、成绩。名、成绩。1.根据题目确定要输出的列为:Sno,Sname,Grade,其 中 Sno,Sname在 Students表 中,Grade列 在Enrollment表中,所以用到Students表和Enrollment表;2.根据题意,课程名为Database,则选择的条件为Cname=Database,因为Cname列在Courses表中,所以也用到Courses表;本讲稿第六十八页,共八十页3.根 据1,2两 步 确 定 所 用 到 的 表 名 集 为Students,Enrollment,Courses;4.因为表名集中有三个表,则要用自然连接将它们连接起来,Enrollment表中含有与Students表公共的列Sno,含有与Courses表公共的列Cno,从而这三个表可以实现自然连接。将选择条件Cname=Database作用于自然连接后产生的新表上,并用投影操作选取要输出的列Sno,Sname,Grade。本讲稿第六十九页,共八十页综上,该查询的关系代数表达式为:综上,该查询的关系代数表达式为:Students.Sno,Sname,Grade(Cname=Database(StudentsEnrollmentCourses)结果:结果:本讲稿第七十页,共八十页【例例2.5】将将新新入入学学的的学学生生信信息息(S99205,Sala,F,20,Art)插入)插入Students表中。表中。v分析:可以将这一行数据看成由一个元组构成的表,将该表与Students表进行并运算。v因此,该插入操作可表示为:Students S99205,Sala,F,20,Art本讲稿第七十一页,共八十页【例例2.6】将将学学生生信信息息(S99205,Sala,F,20,Art)从从Students表删除。表删除。v分析:可以将这行数据看成由一个元组构成的表,将Students表与该表进行差运算。v因此,该删除操作可表示为:Students-S99205,Sala,F,20,Art 本讲稿第七十二页,共八十页【例例2.7】求没有选修课程号为求没有选修课程号为C2课程的学生学号课程的学生学号v分析:可以认为是在全部学号中去掉选修了C2课程的学生学号,就得出没有选修课程号为C2的学生学号。由由于于在在并并、交交、差差运运算算中中,参参加加运运算算的的关关系系要要求求是兼容的是兼容的,故应当先投影、再行差运算。v正确的写法是:结果见表2-18。Sno(Students)Sno(Cno=C2(Enrollemnt)本讲稿第七十三页,共八十页特别注意,本题不能写为:特别注意,本题不能写为:Sno(Cno C2(Enrollemnt)。)。v因为,选择运算为行运算,并且Enrollemnt表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在Enrollemnt中找不到。根据题意,要查没有选修课程号为C2课程的学生学号,显然包括没选任何课程的学生学号。结果见表2-19。本讲稿第七十四页,共八十页表表2-18与表与表2-19结果比较:结果比较:本讲稿第七十五页,共八十页【例例2.8】求求既既选选修修课课程程号号为为C1课课程程、又又选选修修课课程程号号为为C2课程的学生学号。课程的学生学号。v分析:可以先求出选修了C1课程的学生学号,再求出选修了C2课程的学生学号,最后使用交运算的方法求出既选修课程号为C1课程、又选修课程号为C2课程的学生学号。v正确的写法是:Sno(Cno=C1(Enrollemnt)Sno(Cno=C2(Enrollemnt)本讲稿第七十六页,共八十页特别注意,本题不能写为:特别注意,本题不能写为:Sno(Cno=C1Cno=C2(Enrollemnt)v因为选择运算为行运算,在同一行中Cno不可能既为C1,又为C2。本讲稿第七十七页,共八十页【例例2.9】求求选选修