《第3章 关系数据模型精选文档.ppt》由会员分享,可在线阅读,更多相关《第3章 关系数据模型精选文档.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 关系数据模型本讲稿第一页,共五十二页3.1 3.1 关系模型的基本概念关系模型的基本概念3.1.1 3.1.1 关系的通俗解释关系的通俗解释 在关系模型中,信息被组织成若干张二维表的结在关系模型中,信息被组织成若干张二维表的结构,每一张二维表称为一个关系构,每一张二维表称为一个关系(relation)(relation)或表或表(table)(table),每个表中的信息只用来描述客观世界中的一,每个表中的信息只用来描述客观世界中的一件事情。例如,在学校中,为了表达学生与专业的件事情。例如,在学校中,为了表达学生与专业的“所所属属”关系,学生与课程的关系,学生与课程的“选修选修”关系,
2、教师与课程的关系,教师与课程的“任教任教”关系,可以制成如下表格:关系,可以制成如下表格:表表3.1 3.1 学生选课登记表学生选课登记表本讲稿第二页,共五十二页 下面结合该表介绍关系模型中的基本概念。下面结合该表介绍关系模型中的基本概念。1 1表表(Table)(Table),也称关系,由表名、列名及若干,也称关系,由表名、列名及若干行组成。表的结构或框架有时也称关系模式,如表行组成。表的结构或框架有时也称关系模式,如表3.l3.l的关系模式为:学生选课登记表的关系模式为:学生选课登记表(学号,姓名,专业,学号,姓名,专业,选修课程,任课教师选修课程,任课教师)。2 2列列(Field)(F
3、ield),也称字段或属性。表中的每个列都,也称字段或属性。表中的每个列都包含同一类的信息。表中列的顺序与要表达的信息无必包含同一类的信息。表中列的顺序与要表达的信息无必要的联系,因此列是无序的。要的联系,因此列是无序的。3 3行行(Row)(Row),也称元组,也称元组(Tuple)(Tuple)。表中每个行由若。表中每个行由若干个字段值组成,用来描述一个对象的信息。每个字段干个字段值组成,用来描述一个对象的信息。每个字段值描述该对象的某种性质或属性。值描述该对象的某种性质或属性。行的次序也是不重要行的次序也是不重要的,一般可以互换,但在一张表中,一般不能出现完全的,一般可以互换,但在一张表
4、中,一般不能出现完全相同的两个行。相同的两个行。本讲稿第三页,共五十二页 4 4键码键码(Key)(Key),也称关键字。对表中的某个属性或属性组,也称关键字。对表中的某个属性或属性组,若它们的值唯一地标识一个元组,则它就是键码。如表若它们的值唯一地标识一个元组,则它就是键码。如表3.l3.l中,属中,属性组性组(学号,选修课程学号,选修课程)就是键码,它可决定整个元组的性质。换就是键码,它可决定整个元组的性质。换言之,如果有两个元组它们的学号和选修课程字段的值完全相同,言之,如果有两个元组它们的学号和选修课程字段的值完全相同,那么,它们的姓名、专业和任课教师字段的值肯定相同,即它们那么,它们
5、的姓名、专业和任课教师字段的值肯定相同,即它们只能是一个元组。只能是一个元组。5 5值域值域(Domain)(Domain),属性的取值范围。在表中每个列都以某个值,属性的取值范围。在表中每个列都以某个值域为基础从某个域中取得数据。例如,学号的值域是六位整数等,域为基础从某个域中取得数据。例如,学号的值域是六位整数等,在关系模型中允许多个列从同一值域中取值。在关系模型中允许多个列从同一值域中取值。6 6表名和列名的命名规定:表名在整个数据库中必须唯一;表名和列名的命名规定:表名在整个数据库中必须唯一;列名在一个表中必须唯一,但在不同的表中可以出现相同的名字;列名在一个表中必须唯一,但在不同的表
6、中可以出现相同的名字;表名和列名应尽可能带有一定的意义并尽量简单。表名和列名应尽可能带有一定的意义并尽量简单。本讲稿第四页,共五十二页 3.1.2 3.1.2 关系的数学定义关系的数学定义定义定义3.1 3.1 域域(Domain)(Domain)是值的集合。是值的集合。定义定义3.2 3.2 给定一组域给定一组域 D1 D1,D2D2,.,DnDn,这些域中可以,这些域中可以有相同的域,有相同的域,D1D1,D2,.D2,.,DnDn的笛卡儿积为:的笛卡儿积为:D1D2.DnD1D2.Dn(d1(d1,d2d2,dn)|diDi,i=1dn)|diDi,i=1,2 2,nn,其中每一个元素,
7、其中每一个元素(d1(d1,d2,.d2,.,dn)dn)叫作一个叫作一个n n元组元组(n-tuple)(n-tuple),或简称为元组;元素中每一个值,或简称为元组;元素中每一个值didi叫叫做一个分量做一个分量(Component)(Component)。若。若 Di(i=1 Di(i=1,2 2,n)n)为有限为有限集,其基数为集,其基数为 mi(i mi(i1,.1,.,n)n),则,则 D1D2Dn D1D2Dn的的基数为基数为:本讲稿第五页,共五十二页定义定义3.3 3.3 若若D1D2DnD1D2Dn为笛卡儿积,则它的子集叫为笛卡儿积,则它的子集叫做在域做在域D1D2DnD1D
8、2Dn上的关系上的关系(Relation)(Relation),可以用,可以用R(D1R(D1,D2D2,Dn)Dn)表示。这里表示。这里R R表示关系的名字,表示关系的名字,n n是关是关系的目或度。系的目或度。关系是一个二维表,表的每行对应一个元组,表的关系是一个二维表,表的每行对应一个元组,表的每列对应一个域由于域可以相同,所以为了加以区每列对应一个域由于域可以相同,所以为了加以区分。对每列起一个名字,称为属性。分。对每列起一个名字,称为属性。n n目关系必有目关系必有n n个属个属性。总之,数据库中的关系有以下性质:性。总之,数据库中的关系有以下性质:1 1每列中的分量是同类型的数据,
9、来自同一个域;每列中的分量是同类型的数据,来自同一个域;2 2不同列可出自同一个域,每一列称为属性,要给不同列可出自同一个域,每一列称为属性,要给予不同的属性名;予不同的属性名;3 3列的顺序可任意交换,行的顺序也可任意交换;列的顺序可任意交换,行的顺序也可任意交换;4 4关系中的任意两个元组不能完全相同;关系中的任意两个元组不能完全相同;5 5每一分量必须是不可分的数据项。每一分量必须是不可分的数据项。本讲稿第六页,共五十二页3.1.3 3.1.3 关系模型关系模型1 1数据结构数据结构 在关系模型中,无论是实体还是实体之间的联系均在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型
10、即关系来表示。也就是说,任何一个由单一的结构类型即关系来表示。也就是说,任何一个关系数据库都是由若干张互相关联的表组成。关系数据库都是由若干张互相关联的表组成。关系模式与关系是彼此密切相关但又有所区别的两关系模式与关系是彼此密切相关但又有所区别的两个概念,它们之间的关系是一种个概念,它们之间的关系是一种“型与值型与值”的关联关的关联关系。关系模式是静态的,而关系则是动态的系。关系模式是静态的,而关系则是动态的。2 2关系操作关系操作 关系操作方式的特点是集合操作,即操作的对象和结关系操作方式的特点是集合操作,即操作的对象和结果是集合,也称为一次一集合的方式。非关系型的数据果是集合,也称为一次一
11、集合的方式。非关系型的数据操作方式则为一次一记录的方式。操作方式则为一次一记录的方式。3.3.关系模型的三类完整性关系模型的三类完整性 关系模型的三类完整性包括实体完整性、参照完整关系模型的三类完整性包括实体完整性、参照完整性和用户定义的完整性。性和用户定义的完整性。本讲稿第七页,共五十二页 实体完整性和参照完整性是关系模型必须满足的实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。完整性约束条件,应该由关系系统自动支持。(l)(l)实体完整性:在任何关系的任何一个元组中,主实体完整性:在任何关系的任何一个元组中,主键码值的任一分量都不允许为空值。键码值的任一分
12、量都不允许为空值。(2)(2)参照完整性(引用完整性):若某个属性或属性参照完整性(引用完整性):若某个属性或属性组不是组不是A A表的主键码,但它是另一张表的主键码,但它是另一张B B表的主键码,则表的主键码,则该属性或属性组称为该属性或属性组称为 A A表的外键码。在关系模型中,表的外键码。在关系模型中,外键码或者取空值或者等于外键码或者取空值或者等于B B中某个元组的主键码中某个元组的主键码值。值。(3)(3)用户定义完整性:由用户针对某一具体数据库的用户定义完整性:由用户针对某一具体数据库的约束条件来定义完整性。它由应用环境决定,反映了约束条件来定义完整性。它由应用环境决定,反映了某一
13、具体应用所涉及的数据必须满足的语义要求。某一具体应用所涉及的数据必须满足的语义要求。关系模型的优点和缺点。关系模型的优点和缺点。本讲稿第八页,共五十二页3.1.4 3.1.4 关系数据库管理系统关系数据库管理系统按照按照 RDBMS RDBMS产品对关系模型的支持程度的不同,产品对关系模型的支持程度的不同,DBMSDBMS大致可分成三种等级:大致可分成三种等级:1 1半关系型半关系型DBMS(DBMS(最小关系型最小关系型)采用关系作为基本数据结构类型,但不能提供具有采用关系作为基本数据结构类型,但不能提供具有关系完备性的数据子语言,或不支持数据独立性,因而关系完备性的数据子语言,或不支持数据
14、独立性,因而功能有相当的局限性。功能有相当的局限性。2 2基本关系型基本关系型DBMS(DBMS(关系完备型关系完备型)采用关系作为唯一基本数据结构类型,具有关系完采用关系作为唯一基本数据结构类型,具有关系完备的数据子语言,在一定程度上实现了数据的独立性,备的数据子语言,在一定程度上实现了数据的独立性,确保用户能够依靠关系名、关键字值和属性名的结合用确保用户能够依靠关系名、关键字值和属性名的结合用逻辑方式访问数据库中的每一个数据。目前大多数关系逻辑方式访问数据库中的每一个数据。目前大多数关系型型DBMSDBMS都属于这种类型。都属于这种类型。3 3完全关系型完全关系型(全关系型全关系型)这类系
15、统支持关系模型的所有特征,特别是数据结这类系统支持关系模型的所有特征,特别是数据结构中域的概念、实体完整性和参照完整性。构中域的概念、实体完整性和参照完整性。本讲稿第九页,共五十二页3.2 3.2 关系代数关系代数 关系的数据操纵语言按照表达查询的方式可分为两关系的数据操纵语言按照表达查询的方式可分为两大类:大类:1 1用对关系的运算来表达查询的方式,称为关系用对关系的运算来表达查询的方式,称为关系代数;代数;2 2用谓词来表达查询要求的方式,称为关系演用谓词来表达查询要求的方式,称为关系演算。关系演算又可按谓词变元的基本对象是元组变量还算。关系演算又可按谓词变元的基本对象是元组变量还是域变量
16、而分为元组关系演算和城关系演算两种。是域变量而分为元组关系演算和城关系演算两种。这三种语言在表达能力上是彼此等价的,它们可以这三种语言在表达能力上是彼此等价的,它们可以作为评估实际系统中操纵语言能力的标准或基础。作为评估实际系统中操纵语言能力的标准或基础。关系代数是以关系为运算对象的一组高级运算的集关系代数是以关系为运算对象的一组高级运算的集合,它的运算可分为以下两类。合,它的运算可分为以下两类。本讲稿第十页,共五十二页 3.2.1 3.2.1 传统的集合运算传统的集合运算 传统的集合运算是二目运算。设关系传统的集合运算是二目运算。设关系R R和关系和关系S S具有具有相同的度,且相应的属性值
17、取自同一个域,则称它们是相同的度,且相应的属性值取自同一个域,则称它们是并相容的。对于并相容的两个关系可以定义如下三种运并相容的。对于并相容的两个关系可以定义如下三种运算:算:1 1并运算并运算(Union)(Union)两个关系两个关系R R和和S S的并记为的并记为 RS RS,它是一个新的关,它是一个新的关系,由属于系,由属于R R或属于或属于S S的元组组成,可形式地定义成:的元组组成,可形式地定义成:RS RSttRtS ttRtS 其中其中t t是元组变量,表示关系中的元组。是元组变量,表示关系中的元组。2 2交运算交运算(Intersection)(Intersection)两个
18、并相容的关系两个并相容的关系R R和和S S,它们的交记为,它们的交记为RSRS,由属,由属于于R R且属于且属于S S的元组组成,可形式地定义为:的元组组成,可形式地定义为:RS=ttRtS RS=ttRtS其中其中t t是元组变量,表示关系中的元组。是元组变量,表示关系中的元组。本讲稿第十一页,共五十二页3 3差运算差运算(Difference)(Difference)两个并相容关系两个并相容关系 R R和和S S的差是由属于的差是由属于R R但不属于但不属于S S的的元组组成,它可形式地定义为:元组组成,它可形式地定义为:R-S=ttRt R-S=ttRt SS其中其中t t是元组变量,
19、表示关系中的元组。是元组变量,表示关系中的元组。4 4笛卡儿积笛卡儿积(Cartesian Product)(Cartesian Product)设设R R为为m m元关系,元关系,S S为为n n元关系,它们的笛卡儿积表示元关系,它们的笛卡儿积表示为为 RS RS,这个新关系具有,这个新关系具有m+nm+n元,元组的前元,元组的前m m个分量是个分量是R R中的一个元组,后中的一个元组,后n n个分量是个分量是S S中的一个元组,它可以中的一个元组,它可以用下列形式表示:用下列形式表示:RS=(a1,a2,am,b1,b2,bn)|(a1,a2,am)RRS=(a1,a2,am,b1,b2,
20、bn)|(a1,a2,am)R (b1,b2,bn)S (b1,b2,bn)S 具体参见书上图具体参见书上图3.l3.l中并、交、差运算的一个实例和中并、交、差运算的一个实例和图图3.23.2中笛卡儿积的一个实例。中笛卡儿积的一个实例。本讲稿第十二页,共五十二页3.2.2 3.2.2 专门的关系运算专门的关系运算1 1选择运算选择运算(Selection)(Selection)选择运算是从某个给定的关系中筛选出满足限定条选择运算是从某个给定的关系中筛选出满足限定条件的元组子集,它是一元关系运算。定义为:件的元组子集,它是一元关系运算。定义为:F F(R)(R)t|tR F(t)t|tR F(t
21、)”真真”其中其中F F是筛选关系是筛选关系R R中元组的限定条件的布尔表达式,它中元组的限定条件的布尔表达式,它由逻辑运算符由逻辑运算符(或)、(或)、(与)、(非)连接各算(与)、(非)连接各算术表达式组成。术表达式组成。2 2投影运算投影运算(Projection)(Projection)投影运算是从给定的关系中保留指定的属性子集而投影运算是从给定的关系中保留指定的属性子集而删去其余属性的操作。设定某关系删去其余属性的操作。设定某关系 R(X)R(X),X X是是R R的属性的属性集,集,A A是是X X的一个子集,则的一个子集,则R R在在A A上的投影可表示成:上的投影可表示成:A
22、A(R)R)tA|tRtA|tR其中其中tAtA表示只取元组表示只取元组t t中相应中相应A A属性中的分量。属性中的分量。本讲稿第十三页,共五十二页3 3联接运算联接运算(Join)(Join)联接运算是从两个关系的笛卡儿积中选取属性间满足一定联接运算是从两个关系的笛卡儿积中选取属性间满足一定条件的元组,可记作:条件的元组,可记作:其中其中A A是关系是关系R R中的属性组,中的属性组,B B是关系是关系S S中的属性组,它们的度数相同中的属性组,它们的度数相同且可比较,且可比较,为算术比较运算符为算术比较运算符(即,即,=,)。4 4自然联接运算自然联接运算(Natural join)(N
23、atural join)联接运算中最有实用价值的一类运算称为自然联接运算。它只联接运算中最有实用价值的一类运算称为自然联接运算。它只要求参与运算的两个关系在同名属性上具有相同的值,由于同名属要求参与运算的两个关系在同名属性上具有相同的值,由于同名属性上的值相同,所以在产生的结果关系中同名属性也只出现一次,性上的值相同,所以在产生的结果关系中同名属性也只出现一次,它可定义为:它可定义为:本讲稿第十四页,共五十二页5.5.除法运算除法运算(Division)(Division)一个一个 m m元关系元关系R R除以一个除以一个n n元关系元关系S(S(其中其中 m mn n,S S非非空关系并且空
24、关系并且R R中存在中存在n n个属性与个属性与S S的的n n个属性定义在相同的个属性定义在相同的域域)所得到的结果是一个所得到的结果是一个(m-n)(m-n)元的新关系,它表示满足元的新关系,它表示满足以下条件的元组集合:以下条件的元组集合:RS=t RS=t(m-n(m-n对任一对任一t tnnSS都有都有t t(mn).(mn).t t(n)(n)RR其中其中t t(mn).(mn).t t(n)(n)表示将一个表示将一个(mn)(mn)元的元组和一个元的元组和一个 n n元元的元组拼合成为一个的元组拼合成为一个m m元的新元组。元的新元组。具体参见书上图具体参见书上图3.33.3中选
25、择、投影、联接和自然联接中选择、投影、联接和自然联接的一个实例和图的一个实例和图3.43.4中三个除法运算的实例。中三个除法运算的实例。本讲稿第十五页,共五十二页 3.2.3 3.2.3 关系代数表达式关系代数表达式 在关系代数中在关系代数中,把由上述关系代数运算经过有限次复把由上述关系代数运算经过有限次复合而成的式子称作关系代数表达式合而成的式子称作关系代数表达式,它的运算结果仍是一它的运算结果仍是一个关系。设有学生个关系。设有学生-课程关系数据库实例,其中课程关系数据库实例,其中S S、C C和和SCSC分别代表学生关系、课程关系和学生选课关系。分别代表学生关系、课程关系和学生选课关系。本
26、讲稿第十六页,共五十二页 例例1 1 求计算机科学系求计算机科学系CSCS的学生:的学生:SD=SD=cscs(S)(S)或或3=3=cscs(S)(S)其中其中的下角的下角3 3是是SDSD属性的序号。属性的序号。例例2 2 检索学习课程检索学习课程C2C2的同学的学号与成绩:的同学的学号与成绩:S S,G,G(C C=C2C2(SC)(SC)例例3 3 给出学习全部课程的同学的名单:给出学习全部课程的同学的名单:例例4 4 将新开课程记录将新开课程记录(C6C6,Q Q,R R)插入到关系插入到关系C C中:中:C(C(C6C6,Q Q,R R)例例5 5 将学号为将学号为S3S3同学的同
27、学的C4C4课程的成绩修改为课程的成绩修改为A:A:(SC-(SC-(S3S3,C4C4,?)(?)(S3S3,C4C4,A A)修改操作用关系代数分两步实现,先删去原元组,再插入新元修改操作用关系代数分两步实现,先删去原元组,再插入新元组。在本例中,组。在本例中,SCSC的键码为(的键码为(S#S#,C#C#),故成绩用?代替,不影响),故成绩用?代替,不影响系统检索,不会产生二义性。系统检索,不会产生二义性。在上面介绍的在上面介绍的9 9种关系代数运算中,并、差、笛卡儿积、种关系代数运算中,并、差、笛卡儿积、选择和投影是选择和投影是5 5种基本的关系代数运算。种基本的关系代数运算。本讲稿第
28、十七页,共五十二页 在以关系为基本数据结构的数据库中,以上述在以关系为基本数据结构的数据库中,以上述5 5种基种基本关系代数运算为基础构造的数据子语言,可以实现人本关系代数运算为基础构造的数据子语言,可以实现人们所需要的对数据的所有查询和更新操作。们所需要的对数据的所有查询和更新操作。E.F.CoddE.F.Codd把把关系代数的这种处理能力称为关系的完备性。关系代数的这种处理能力称为关系的完备性。这一概念后来进一步发展为关系数据库管理系统的这一概念后来进一步发展为关系数据库管理系统的一个重要的评价标准,即在一个实际系统中,如果它的一个重要的评价标准,即在一个实际系统中,如果它的关系操作语言与
29、关系代数等价,即关系操作语言与关系代数等价,即5 5种基本关系代数运算种基本关系代数运算均可用其操作语言实现,则说明该系统的关系操作是完均可用其操作语言实现,则说明该系统的关系操作是完备的,可以实现人们对数据库的任何查询和更新操作。备的,可以实现人们对数据库的任何查询和更新操作。实际的查询语言除了提供关系代数的功能外,还提实际的查询语言除了提供关系代数的功能外,还提供了许多附加的功能,如库函数、关系赋值、算术运算供了许多附加的功能,如库函数、关系赋值、算术运算等功能。下一章将介绍关系数据库领域中广泛流行的实等功能。下一章将介绍关系数据库领域中广泛流行的实际语言际语言SQLSQL。本讲稿第十八页
30、,共五十二页 3.3 3.3 关系演算关系演算 关系演算的表达能力与关系代数等价,它是以数理关系演算的表达能力与关系代数等价,它是以数理逻辑中的谓词演算为基础的。逻辑中的谓词演算为基础的。根据关系演算中变量的不同,可将关系演算分为根据关系演算中变量的不同,可将关系演算分为:l基于元组变量的关系演算(简称基于元组变量的关系演算(简称元组关系演算)元组关系演算)l基于域变量的关系演算(简称域关系演算)基于域变量的关系演算(简称域关系演算)3.3.1 3.3.1 元组关系演算元组关系演算 元组关系演算表达式的一般形式是元组关系演算表达式的一般形式是tt(t)(t),其中,其中t t为元组变量,为元组
31、变量,(t)(t)是以元组变量是以元组变量t t为基础的公式。为基础的公式。本讲稿第十九页,共五十二页 1 1原子公式有如下三种原子公式有如下三种(1)R(t)(1)R(t),其中,其中R R是关系名,是关系名,t t是元组变量,是元组变量,R(t)R(t)表示表示t t是关是关系系R R的一个元组;的一个元组;(2)ti(2)ti sjsj,其中,其中t t和和s s是元组变量,是元组变量,是关系运算符,是关系运算符,titi sjsj表示元组表示元组t t的第的第i i个分量与元组个分量与元组s s的第的第j j个分量满足个分量满足 关系,例如关系,例如t1)s3t1)s3表示表示t t的
32、第的第1 1个分量大于个分量大于s s的第的第3 3个分个分量;量;(3)ti(3)ti C C或或C C titi,其中,其中C C表示一个常量,其他含义同上。表示一个常量,其他含义同上。titi C C表示表示t t的第的第i i个分量与常量个分量与常量C C满足满足 关系,例如关系,例如t32t32表示表示t t的第的第3 3个分量大于个分量大于2 2。2 2公式是递归定义的公式是递归定义的(1)(1)原子公式是公式原子公式是公式;本讲稿第二十页,共五十二页 (2)(2)假如假如 1(t)1(t)和和 2(t)2(t)是公式,那么是公式,那么1 1,1 12 2,1 12 2也都是也都是
33、公式,它们为真的条件分别是:公式,它们为真的条件分别是:“1 1非真非真”,“1 1和和 2 2均均为真为真”,“1 1和和 2 2中至少有一个为真中至少有一个为真”。(3)(3)假如假如 是公式,那么是公式,那么(t)(t)()和和(t)(t)()也都是公式,它们也都是公式,它们为真的条件分别是:为真的条件分别是:“至少有至少有1 1个元组个元组t t使得使得 为真为真”,“所有的元组所有的元组t t都使都使 为真为真”。其中。其中 为存在量词,为存在量词,为全称量词。为全称量词。若在变量前加上量词,则变量为约束变量。因此,我们称若在变量前加上量词,则变量为约束变量。因此,我们称(t)(t)
34、()和和(t)(t)()中的中的t t为约束变量。为约束变量。(4)(4)只有按上述三个规则的有限次组合形成的才是公式。只有按上述三个规则的有限次组合形成的才是公式。综上所述,元组关系演算表达式综上所述,元组关系演算表达式 t t(t)(t)的含义就的含义就是:使是:使 为真的元组为真的元组t t的集合。的集合。本讲稿第二十一页,共五十二页 3 3、关系演算公式中各种运算符的优先级、关系演算公式中各种运算符的优先级(1)(1)算术比较运算符优先级最高;算术比较运算符优先级最高;(2)(2)量词优先级次之,且量词优先级次之,且 的优先级高于的优先级高于;(3)(3)逻辑运算符优先级最低,且逻辑运
35、算符优先级最低,且 的优先级高于的优先级高于,的优先级的优先级高于高于;(4)(4)若加括号,则括号内优先。若加括号,则括号内优先。4 4、例子、例子 图图3.6 3.6 关系关系R R和关系和关系S S本讲稿第二十二页,共五十二页 几个元组关系演算表达式的例子。几个元组关系演算表达式的例子。(1)t(1)t R(t)R(t)S(t)S(t)结果:结果:(2)t(2)t(s)(R(t)s)(R(t)S(s)S(s)t1t1s1)s1)结果:结果:(3)t (3)t(s)(R(t)s)(R(t)S(s)S(s)t2sl)t2sl)结果:结果:本讲稿第二十三页,共五十二页 5 5、元组关系演算与关
36、系代数的等价性、元组关系演算与关系代数的等价性(1 1)并运算)并运算 RS RS可以用可以用tt R(t)R(t)S(t)S(t)来表示。来表示。(2 2)交运算)交运算 RS RS可以用可以用tt R(t)R(t)S(t)S(t)来表示。来表示。(3 3)差运算)差运算 R-S R-S可以用可以用tt R(t)R(t)S(t)S(t)来表示。来表示。(4 4)笛卡儿积)笛卡儿积R R S=tS=t(m+n)(m+n)(r r(m)(m)()(s s(n)(n)(R(r)(R(r)S(s)S(s)tl=rltl=rltm=rmtm=rm tm+1=s1tm+1=s1tm+n=sn)tm+n=
37、sn)其中其中R R的属性个数为的属性个数为m m,S S的属性个数为的属性个数为n n。本讲稿第二十四页,共五十二页 (5 5)选择)选择 F F(R)(R)可以用可以用tt R(t)R(t)FF来表示。来表示。其中,其中,FF是是F F的等价条件,只是把的等价条件,只是把F F中的属性名在中的属性名在FF中换成中换成titi的形式,的形式,i i代表属性对应的是元组的第几代表属性对应的是元组的第几个分量。个分量。(6 6)投影)投影 i1,i2,ini1,i2,in(R)=t(R)=t(n)(n)(r)(R(r)r)(R(r)tl=ritl=ril l t2=ri t2=ri2 2 tn=
38、ritn=rin n)其中其中n n为投影后得到的元组为投影后得到的元组t t的分量数,的分量数,ririk k(k(k1,2,1,2,n),n)代表元组代表元组t t的属性的属性k k所对应的元组所对应的元组r r的相应分的相应分量。量。本讲稿第二十五页,共五十二页 (7 7)连接)连接 假如进行假如进行R(AR(A,B)B)与与S(BS(B,C C,D)D)的关系代数连接的关系代数连接:则可以用元组关系演算表达式表示如下:则可以用元组关系演算表达式表示如下:tt(2+3)(2+3)(r r(2)(2)()(s s(3)(3)(R(r)(R(r)S(s)S(s)tl=rltl=rl t2=r
39、2t2=r2 t3=s1t3=s1 t4=s2t4=s2 t5=s3t5=s3 r2r2 s1)s1)(8 8)自然连接)自然连接 自然连接的表示基本上与笛卡儿积相似,假设关系自然连接的表示基本上与笛卡儿积相似,假设关系R R为为R R(A(A,B)B),关系,关系S S为为S(BS(B,C C,D)D),那么,那么R R与与S S的自然连接可以用的自然连接可以用关系演算表达式表示如下:关系演算表达式表示如下:tt(2+3-1)(2+3-1)(r r(2)(2)()(s s(3)(3)(R(r)(R(r)S(s)S(s)tl=rltl=rl t2=r2t2=r2 t2=s1t2=s1 t3=s
40、2t3=s2 t4=s3)t4=s3)(9 9)复杂的关系代数表达式)复杂的关系代数表达式本讲稿第二十六页,共五十二页 假设关系数据库模式为假设关系数据库模式为:Student(StudentNo Student(StudentNo,StudentNameStudentName,AgeAge,Dept)Dept)StudentCourse(StudentCourse(StudentNo,CourseNOStudentNo,CourseNO,Score),Score)Course(Course(CourseNOCourseNO,CourseName,Credit),CourseName,Cred
41、it)a)a)若要查询有一门课成绩超过若要查询有一门课成绩超过8080分的学生姓名分的学生姓名,则其则其关系代数表达式为关系代数表达式为:StudentNameStudentName(Score80Score80(Student(StudentSC)SC)可转换成下面的元组关系演算表达式来表示:可转换成下面的元组关系演算表达式来表示:tt(1)(1)(u)(u)(v)(Student(u)v)(Student(u)SC(v)SC(v)t1=u2t1=u2 u1u1vlvl v380)v380)b)b)若要查询同时选修了课程号为若要查询同时选修了课程号为12341234和和56785678的课程
42、的的课程的学生学号,则用关系代数来查询表达式比较复杂:学生学号,则用关系代数来查询表达式比较复杂:本讲稿第二十七页,共五十二页 StudentNo StudentNo(CourseNo=1234 AND CNo=5678CourseNo=1234 AND CNo=5678 (SC (SC SC1(StudentNo,CNo,Scorel)SC1(StudentNo,CNo,Scorel)(SC)(SC)上式首先用上式首先用操作把关系改名为操作把关系改名为SC1(StudentNo,CNo,Scorel)SC1(StudentNo,CNo,Scorel),然后进行自然连接,于是,然后进行自然连接
43、,于是就把原来一个属性上的两个值变成一个新元组中不同属性就把原来一个属性上的两个值变成一个新元组中不同属性上的两个值,随后在此基础上进行选择,找出满足条件的上的两个值,随后在此基础上进行选择,找出满足条件的新元组,最后通过投影取出学号,即得结果。新元组,最后通过投影取出学号,即得结果。但若根据语义直接写元组关系演算表达式,其实相当但若根据语义直接写元组关系演算表达式,其实相当简单:简单:t t(1)(1)(u)(u)(v)(SC(u)v)(SC(u)SC(v)SC(v)u2=1234u2=1234 v2v256785678 t1=u1t1=u1 t1=v1)t1=v1)本讲稿第二十八页,共五十
44、二页 3.3.2 3.3.2 域关系演算域关系演算1 1、域关系演算的原子公式有两种、域关系演算的原子公式有两种(1)R(xl,x2,(1)R(xl,x2,xk),xk),其中,其中R R是一个关系,它具有是一个关系,它具有k k个属性,个属性,xi(ixi(il,2,l,2,k),k)是一个常量或域变量。如果是一个常量或域变量。如果(x1,x2,(x1,x2,xk),xk)是是R R的的一个元组,那么一个元组,那么R(xl,x2,R(xl,x2,xk),xk)为真。为真。(2)x(2)x y y,其中,其中x x和和y y是常量或域变量,是常量或域变量,是算术比较运算符是算术比较运算符(如如
45、、等、等)。如果。如果x x和和y y满足关系满足关系,则,则x x y y为真。为真。2 2、域关系演算表达式的一般形式、域关系演算表达式的一般形式 x1,x2,x1,x2,xk,xk(x1,x2,(x1,x2,xk),xk)其中其中x1,x2,x1,x2,xk,xk都是域变量,都是域变量,是公式。该表达式的含是公式。该表达式的含义是:使义是:使 为真的域变量为真的域变量x1,x2,x1,x2,xk,xk组成的元组的集组成的元组的集合。合。本讲稿第二十九页,共五十二页 3 3、例子、例子 仍然假设关系仍然假设关系R R、S S如图如图3.63.6所示,那么如下几个域关所示,那么如下几个域关系
46、演算表达式都是合法的:系演算表达式都是合法的:(1)xy(1)xy R(xy)R(xy)S(xy)S(xy)(2)xy(2)xy(u)(u)(v)(R(xy)v)(R(xy)S(uv)S(uv)x xu)u)(3)xy(3)xy(u)(u)(v)(R(xy)v)(R(xy)S(uv)S(uv)yu)yu)4 4、域关系演算表达式与元组关系演算表达式的转换、域关系演算表达式与元组关系演算表达式的转换 一个元组关系演算表达式可以很容易地转换成等价一个元组关系演算表达式可以很容易地转换成等价的域关系演算表达式。假设元组关系演算表达式为的域关系演算表达式。假设元组关系演算表达式为tt F(t)F(t)
47、,那么其转换方法如下:,那么其转换方法如下:本讲稿第三十页,共五十二页 (1)(1)如果如果t t是有是有n n个分量的元组变量,则为个分量的元组变量,则为t t的每个分量的每个分量titi引进一个域变量引进一个域变量titi,用,用titi来替换公式中所有的来替换公式中所有的titi。相应的域关系演算表达式就有了。相应的域关系演算表达式就有了n n个域变量,形个域变量,形式为式为 t1,t2,t1,t2,tk,tk(t1,t2,(t1,t2,tk),tk)。(2)(2)出现存在量词出现存在量词(u)u)或者全称量词或者全称量词(u)u)的时候,如果的时候,如果u u是有是有m m个分量的元组
48、变量,则为个分量的元组变量,则为u u的每个变量的每个变量uiui引进一引进一个域变量个域变量uiui,将量词辖域内所有的,将量词辖域内所有的u u用用u1,u2,u1,u2,um,um替替换,所有的换,所有的uiui用用uiui来替换。来替换。经过上述两步,就可以把一个元组关系演算表达式经过上述两步,就可以把一个元组关系演算表达式转换为等价的域关系演算表达式。下面举二个例子加以转换为等价的域关系演算表达式。下面举二个例子加以说明。说明。本讲稿第三十一页,共五十二页 a)a)例如查询计算机系年龄为例如查询计算机系年龄为1818岁的学生的元组关系演算岁的学生的元组关系演算表达式为:表达式为:t
49、t Student(t)t3=18 Student(t)t3=18 t4t4“计算机系计算机系”转换为域关系演算表达式如下:转换为域关系演算表达式如下:t1t2t3t4 t1t2t3t4 Student(t1t2t3t4)Student(t1t2t3t4)t3=18t3=18 t4=“t4=“计算机系计算机系”b)b)例如,查询有一门课成绩超过例如,查询有一门课成绩超过8080分的学生姓名,其元分的学生姓名,其元组关系演算表达式为:组关系演算表达式为:tt(1)(1)(u)(u)(v)(Student(u)v)(Student(u)SC(v)SC(v)t1=u2t1=u2 u1u1vlvl v
50、380)v380)转换为域关系演算表达式如下:转换为域关系演算表达式如下:t1t1(u1)(u1)(u2)(u2)(u3)(u3)(u4)(u4)(v1)(v1)(v2)(v2)(v3)(Student(u1u2u3u4)v3)(Student(u1u2u3u4)SC(v1v2v3)SC(v1v2v3)t1=u2t1=u2 ul=vlul=vl v380)v380)由于有几个域变量可以省略,于是可将表达式简化成:由于有几个域变量可以省略,于是可将表达式简化成:t1t1(u1)(u1)(u3)(u3)(u4)(u4)(v2)(v2)(v3)(Student(u1t1u3u4)v3)(Studen