当前位置:文档之家› 元组关系演算(补充)

元组关系演算(补充)

元组关系演算(补充)

元组关系演算(补充)

关系代数表达式的书写

(1)∏Sname(S∞(∏S#,C#(SC)÷∏C#(σteacher=“程军”(C)))) 说明:根据条件由课程关系得到课程号→由课程号在SC关系中得到学生号→ 由学生号在学生表中查找学生姓名。 1、先在C关系中进行选择运算,选择关系式选出给定条件的元组。这里 选出 2 关系,这里从上面得到的关系当中投影出C#的属性。得到结果如下: 3、对SC C#这两列: 4、将步骤3得到的关系B进行除运算。除运算的 定义在课本上,这里我想简单说明此处是怎么得到的: 关系A和关系B具有相同的属性名,满足除运算的条件→此处除运算的结果时关系A中S#的分量值,也就是说结果肯定是一个在1,2,5当中取值的集合→ 首先我们计算1的象集为{k1},2的象集为{k1,k5},5的象集为{k1,k5,k8} → B关系在C#上的投影为{k5,k8},因此这里只有5的象集{k1,k5,k8}B关系在C#上的投影为{k5,k8}。因此A关系除以B关系的结果为: 5、关系D与S 行比较的分量必须有相同的属性组,并且结果中把重复的属性组去掉。连接结果为: 6

(2)∏C#(C)-∏C#(σSname=“李强”(S)∞SC) 说明:首先在S关系中选出姓名为李强的元组→与SC关系进行连接运算在得到的新关系上进行投影运算得到李强学习的课程号→在课程关系中进行投影运算得到所有课程的课程号–李强学习的课程号得到的就是李强不学习的课程号,最终结果为:{k5,k8}。 (3)∏C#,Cname(C∞(∏S#,C#(SC)÷∏S#(S)) 说明:解题思路:这道题目要检索学生都选修的课程号和课程名,关键就在那个“都”字上,我们知道,除运算所满足的条件:元组X上的分量值x的象集Yx包含S在Y上的投影的集合。抽象不要紧,实例化之后就能看懂了。 1、首先在SC关系上选出S#和C#这两列属性得到一个新的关系我们称为 A,从S关系当中选出S#这列属性得到的关系我们称为B,A和B做除运算的流程: 首先计算k1的象集{1,2,5}{2,5},k8的象集{5},关系B在S#上的投影{1,2,5}。由此可看出只有k1的象集{1,2,5}包含B在S#上的投影{1,2,5}。因此除运算的结果为{k1}。关系表示为: 2、将除运算的结果关系D与题目当中的关系C进行连接运算,并选择其 中的C#和Cname

数据库原理关系运算习题答案

数据库系统原理第四章关系运算课后习题答案 4.1 名词解释 (1) 关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。 (2) 关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性 名,值域名以及模式的主键。关系模式不涉及到物理存储方面的描述,仅仅是 对数据特性的描述。 (3) 关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4) 属性:实体的一个特征。在关系模型中,字段称为属性。 (5) 域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6) 元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7) 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 (8) 候选键:不含有多余属性的超键称为候选键。 (9) 主键:用户选作元组标识的一个候选键为主键。( 单独出现,要先解释“候选键”) (10) 外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是 另一关系的外键,如有两个关系S和SC,其中S#是关系S的主键,相应的属性 S#在关系SC中也出现,此时S#就是关系SC的外键。 (11) 实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。 (12) 参照完整性规则:这条规则要求“不引用不存在的实体”。其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2 的关系中,K的取值只允许有两种可能,或者为空值,或者等于R1关系中某 个主键值。这条规则在使用时有三点应注意:1)外键和相应的主键可以不同名,只要定义在相同值域上即可。2)R1和R2也可以是同一个关系模式,表示 了属性之间的联系。3)外键值是否允许空应视具体问题而定。 (13) 过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和 “怎么干”。如Pascal和C语言等。 (14) 非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。各种关系查询语言均属于非过程性语言。 (15) 无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。如元组表达式{t| n R(t)}表示所有不在关系R中的元组的集合,这是一个无限关 系。 (16) 无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。如验证公式(fu)(P(u))的真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 4.2为什么关系中的元组没有先后顺序? 因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。 4.3 为什么关系中不允许有重复元组?

关系模型课后习题

# 关系模型课后习题 名词解释 (1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。 (2)关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。关系模式不涉及到物理存储方面的描述,仅仅是对数据特性的描述。 (3)关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4)属性:实体的一个特征。在关系模型中,字段称为属性。 (5)域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6)元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7)超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 (8)候选键:不含有多余属性的超键称为候选键。 (9)主键:用户选作元组标识的一个候选键为主键。(单独出现,要先解释“候选键”) (10)外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。 (11)实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。 (12)参照完整性规则:这条规则要求“不引用不存在的实体”。其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2的关系中, K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则在使用时有三点应注意: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可。 2)R1和R2也可以是同一个关系模式,表示了属性之间的联系。 3)外键值是否允许空应视具体问题而定。 (13)过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和“怎么干”。如Pascal和C语言等。 (14)非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。各种关系查询语言均属于非过程性语言。 (15)无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。如元组表达式{t|┐R(t)}表示所有不在关系R中的元组的集合,这是一个无限关系。 (16)无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。如验证公式(u)(P(u))的真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 为什么关系中的元组没有先后顺序 因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。 为什么关系中不允许有重复元组 因为关系是一个元组的集合,而集合中的元素不允许重复出现,因此在关系模型中对关系作了限制,关系中的元组不能重复,可以用键来标识唯一的元组。 关系与普通的表格、文件有什么区别 关系是一种规范化了的二维表格,在关系模型中,对关系作了下列规范性限制: 1)关系中每一个属性值都是不可分解的。 2)关系中不允许出现相同的元组(没有重复元组)。 3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序。 4)元组中,属性在理论上也是无序的,但在使用时按习惯考虑列的顺序。 笛卡尔积、等值联接、自然联接三者之间有什么区别 笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。 等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组; 自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。当两个关系没有公共属性时,自然连接就转化我笛卡尔积。 设有关系R和S(如下:) 计算: 设有关系R和S(如下:) 计算: 如果R是二元关系,那么下列元组表达式的结果是什么 {t|(u)(R(t)∧R(u)∧(t[1]≠u[1]∨t[2]≠u[2]))}

关系模型课后习题范文

关系模型课后习题 2.1 名词解释 (1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。 (2)关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。关系模式不涉及到物理存储方面的描述,仅仅是对数据特性的描述。 (3)关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4)属性:实体的一个特征。在关系模型中,字段称为属性。 (5)域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6)元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7)超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 (8)候选键:不含有多余属性的超键称为候选键。 (9)主键:用户选作元组标识的一个候选键为主键。(单独出现,要先解释“候选键”) (10)外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。 (11)实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。 (12)参照完整性规则:这条规则要求“不引用不存在的实体”。其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2的关系中, K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则在使用时有三点应注意: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可。 2)R1和R2也可以是同一个关系模式,表示了属性之间的联系。 3)外键值是否允许空应视具体问题而定。 (13)过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和“怎么干”。如Pascal和C语言等。 (14)非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。各种关系查询语言均属于非过程性语言。 (15)无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。如元组表达式{t|┐R(t)}表示所有不在关系R中的元组的集合,这是一个无限关系。 (16)无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。如验证公式(u)(P(u))的 真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 2.2 为什么关系中的元组没有先后顺序? 因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。 2.3 为什么关系中不允许有重复元组? 因为关系是一个元组的集合,而集合中的元素不允许重复出现,因此在关系模型中对关系作了限制,关系中的元组不能重复,可以用键来标识唯一的元组。 2.4 关系与普通的表格、文件有什么区别? 关系是一种规范化了的二维表格,在关系模型中,对关系作了下列规范性限制: 1)关系中每一个属性值都是不可分解的。 2)关系中不允许出现相同的元组(没有重复元组)。 3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序。 4)元组中,属性在理论上也是无序的,但在使用时按习惯考虑列的顺序。 2.5 笛卡尔积、等值联接、自然联接三者之间有什么区别? 笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。 等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组; 自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。当两个关系没有公共属性时,自然连接就转化我笛卡尔积。 2.6 设有关系R和S(如下:) 计算: 2.7 设有关系R和S(如下:) 计算: 2.8 如果R是二元关系,那么下列元组表达式的结果是什么? {t|(u)(R(t)∧R(u)∧(t[1]≠u[1]∨t[2]≠u[2]))} 这个表达式的意思是:从关系R中选择元组,该元组满足:第1分量值或第2分量值至少有一个不等于其他某元组。由于R是二元关系,只有两个分量,由于没有重复元组,上述条件显然满足。所以,这个表达式结果就是关系R。 2.9 假设R和S分别是三元和二元关系,试把表达式π 1,5(σ 2=4∨3=4 (R×S))转换成等价的:(1)汉语查 询句子;(2)元组表达式;(3)域表达式。 (1)汉语表达式:

关系运算习题答案及作业要求

数据库系统原理关系运算习题答案 1、笛卡尔积、等值联接、自然联接三者之间有什么区别? 笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。 等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组; 自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。当两个关系没有公共属性时,自然连接就转化我笛卡尔积。 2、设有关系R和S(如下:) 计算:

3、设有关系R和S(如下:) 计算:

4、如果R是二元关系,那么下列元组表达式的结果是什么? {t|(u)(R(t)∧R(u)∧(t[1]≠u[1]∨t[2]≠u[2]))} 这个表达式的意思是:从关系R中选择元组,该元组满足:第1分量值或第2分量值至少有一个不等于其他某元组。由于R是二元关系,只有两个分量,由于没有重复元组,上述条件显然满足。所以,这个表达式结果就是关系R。 5、假设R和S分别是三元和二元关系,试把表达式π 1,5(σ 2=4∨3=4 (R×S))转换成 等价的:(1)汉语查询句子;(2)元组表达式;(3)域表达式。 (1)汉语表达式: 从R×S关系中选择满足下列条件的元组: 第2分量(R中第2分量)与第4分量(S中第1分量)值相等,或第3分量(R 中第3分量)与第4分量(S中第1分量)值相等;并取第1列与第5列组成的新关系。 (2)元组表达式:{t|(u)( v)(R(u)∧S(v)∧(u[2]=v[1]∨u[3]=v[1])∧t[1]=u[1]∧t[2]=v[2])} (3)域表达式:{xv|(y)(z)(u)(R(xyz)∧S(uv)∧(y=u∨z=u))} 6、假设R和S都是二元关系,试把元组表达式{t|R(t)∧( u)(S(u)∧u[1]≠t[2])}转换成等价的: (1)汉语查询句子;(2)域表达式:(3)关系代数表达式。 (1)汉语表达式:选择R关系中元组第2分量值不等于S关系中某元组第1分量值的元组。

关系运算关系演算

2.4 关系运算(二)——关系演算 关系代数是将整个关系看作变元,并以其作为基本运算单位,同时以集合方法为关系运算的理论基础。如果将组成关系的基本成分例如元组或者属性域看作变量,以其作为基本运算单位,同时以数理逻辑中谓词演算为相应关系演算的理论基础,就得到了另外一种形式的关系数据语言——关系演算。 关系演算基于谓词演算。在谓词演算中,如果谓词中的变元是关系中的元组,则得到所谓元组关系演算;如果谓词中的变元是关系中的属性域,则得到所谓域关系演算。这样,关系演算就分为元组关系演算和域关系演算两类。 在 2.4节和2.5节,均以本章 2.3.4节中的关系数据库{S,C,SC}为背景举例。这里S (S#,Sn,Sex,Sa,Sd);C (C#,Cn,P#,Tn);SC (S#,C#,G),其中各个属性的含义见2.3.4节。 2.4.1 元组关系演算 如果在一阶谓词演算表达式中,变量是以元组为演算单位,就称其为元组关系演算(Tuple Relation Calculus),其中元组变量表示关系中的元组,变量取值范围是整个关系。 1. 关系的元组演算表示 (1) 关系与谓词的对应 为了得到关系操作的元组关系演算表达式,需要考虑关系与谓词的联系。 z由关系R确定的谓词P 在数理逻辑中我们知道,关系可用谓词表示,n元关系可以由n元谓词表示。 设有关系R,它有元组(r1,r2,…,r m),定义关系R对应如下一个谓词 P (x1,x2, …,x n)。 当t =(r1,r2, …,r m)属于R时,t为P的成真的真值指派,而其他不在R中的任意元组t则是P 的成假指派。即是说,由关系R定义一个谓词P具有如下性质: P(t) = T (当t在R中); P(t) = F (当t不在R中)。 z由谓词P表示关系R 由于关系代数中R是元组集合,一般而言,集合是可以用满足它的某种特殊性质来刻画与表示。如果谓词P表述了关系R中元组的本质特性,就可以将关系R写为: R={t | P(t)} 这个公式就建立了关系(元组集合)的谓词表示,称之为关系演算表达式。 (2) 元组关系演算表达式 元组关系演算表达式的严格数学描述是由“归纳定义”方式完成的。按照通常的思路,元组演算表达式是由“关系演算公式”组成;“关系演算公式”是由“原子公式”组成。 ①原子公式 下述三类称为元组演算原子公式,简称原子公式: z谓词R(t)是原子公式。 z u(i)θv(j)是原子公式。 z u(i)θa是原子公式。 其中,t =(r1,r2,…,r m)是P的成真指派;u(i)表示元组u的第i个分量,v(j)表示元组v的第j 个分量;a是常量,u(i)θa表示u的第i个分量与常量a有关系θ。

第三章-关系代数与关系运算

第三章关系代数与关系运算 关系数据语言有三类: 1.关系代数语言 2.关系演算语言(元组关系演算语言、域关系演算语言) 3.具有关系代数和关系演算双重特点的语言如SQL 一.关系代数 关系代数:一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。用对关系的运算来表达查询。 运算:将一定的运算符作用于一定的运算对象上,得到预期的运算结果 运算三要素:运算符、运算对象、运算结果 关系代数的运算对象和结果都是:关系 关系代数运算符(四类):集合运算符、专门的关系运算符、算术比较符和逻辑运算符 集合运算符:并(U)、差(—)、交(∩) 传统的集合运算符——从关系的“水平“方向即行的角度来进行 专门的关系运算符:广义笛卡尔积(ⅹ)、选择(σ)、投影(π)、连接、除 专门关系运算符不仅涉及行而且涉及列 比较运算符:>、<、=、≥、≤、≠ 逻辑运算符:¬∧∨ 用来辅助专门的关系运算符

二.传统的集合运算符 传统集合运算符是二目运算符 设关系R和S具有相同的目n(即n个属性),且相应的属性取自同一个域 1.并(Union) 记作:RUS={t|t∈R∨t∈S}结果仍是n目关系,由属于R或S的元组组成。 例: (a)(b) 2.差

关系R与S的差记作:R-S={t|t∈R∧t∈S} 结果仍是n目,由属于R而不属于S的所有元组组成。如图E 3.交 关系R与S的交记作:R∩S = { t | t∈R∧t∈S }结果仍是n目,由即属于R又属于S的所有元组组成。如图D 可以用差来表示R∩S=R-(R-S) 4.广义笛卡尔积 两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(m+n)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,那么关系R与S的广义笛卡尔积有k1 x k2个元组,记作R×S = { t r t s | t r∈R∧t s∈S } 结果是m+n目 如图例 总结:集合运算符主要研究的是元组,即对表中的行进行研究、操作。 三.专门的关系运算符 包括选择、投影、连接、除等,为叙述上方便引入几个记号 1)设关系模式为R(A1,A2,…,An)。它的一个关系为R。t∈R表示t是R的一个元组。

元组关系演算的语义研究

元组关系演算的语义研究 王小兵 西安电子科技大学计算机学院,陕西西安 (710071) E-mail:xbwang@mail.xidian.edu.cn 摘要:针对一些文献存在的问题,规范了特性谓词在元组关系演算中的表达形式,研究了完整性约束及空值对元组关系演算语义的影响,并通过实例加以说明。 关键词:元组关系演算,特性谓词,完整性约束,空值 中图分类号: TP311 文献标识码: A 1. 引言 20世纪60年代诞生的数据库技术,经过近半个世纪的发展,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域。E.F Codd 提出的关系数据模型为当今主流的数据库管理系统提供了坚实的数学基础。关系数据模型有三种等价的操作语言:关系代数、SQL、关系演算,它们的非过程化程度依次递增,主要应用领域也不同。对于用户提出的查询要求,需要由专业人员书写SQL语句并执行得到结果。有一些复杂的查询,不易直接写出SQL语句,此时可求助于元组关系演算,大致过程为:先写出查询的元组关系演算表达式;再根据等价转化规则得到不含全称量词?的元组关系演算表达式;最后将元组关系演算表达式转化为SQL语句。不过,元组关系演算的抽象性和非过程性,产生了一些问题[1] [2] [3] 。对于这些问题,笔者进行了深入细致的分析,希望有助于人们对元组关系演算的学习和使用。 2. 元组关系演算 元组关系演算是关系演算的一种,是以数理逻辑中的谓词演算为基础的。文献[2] 分析元组关系演算的运行机制,介绍了一种易于正确理解和设计元组关系演算表达式的方法,并通过实例揭示了它与SQL之间的密切联系。经过仔细分析,笔者发现有一些问题值得商榷。 下面以[2] 中“学生选修课程”这一数据库模式为例。该数据库模式包含三个基本表:S表示学生基本情况,结构为S(s# , sn , age, sex),各属性分别表示学号、学生姓名、年龄、性别;C表示课程基本情况,结构为C(c#, cn, tn),各属性分别表示课程编号、课程名称、任课教师姓名;SC表示学生选课情况,结构为SC(s#, c#, g),各属性分别表示学号、课程编号和成绩。 [2] 提出查询,要求检索Wang同学不学的课程的编号。在分析该查询的语义后,给出了三种不同的方案,分别用元组关系演算表达式(1)、(2)、(3)来表示。由于SQL只有与存在量词?对应的EXISTS谓词,因而使用谓词逻辑中全称量词?和存在量词?之间的等价转化公式,分别得到不包含?的元组演算表达式(4)、(5)、(6),最后以此为依据写出三种不同形式的SQL语句。 {t[c#]|C(t)∧w(SC(w)∧t[c#]≠w[c#]∨v(S(v)∧w[s#]=v[s#]∧v[sn]≠'Wang'))} (1) {t[c#]|C(t)∧w(SC(w)∧t[c#]≠w[c#]∨v(S(v)∧(v[sn]≠'Wang'∨w[s#]≠v[s#])))} (2) {t[c#]|C(t)∧v(S(v)∧(v[sn]≠'Wang'∨w(SC(w)∧(w[s#]≠v[s#]∨t[c#]≠w[c#]))))} (3) {t[c#]|C(t)∧?w(SC(w)∧t[c#]=w[c#]∧?v(S(v)∧w[s#]=v[s#]∧v[sn]≠'Wang'))} (4)

关系演算

关系演算 教学目标:让学生掌握元组关系演算和域关系演算; 教学重难点:ALPHA语言、QBE语言 教学工具:多媒体教室 课时安排:2课时 教学方法:讲授法、练习法 教学过程: 导入语:上节课我们已经学习了关系运算,那么今天我们继续学习关系演算。 2.7 关系演算 关系演算是以数理逻辑中的谓词演算为基础的,通过谓词形式来表示查询表达式。 根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。 2.7.1 元组关系演算语言 元组关系演算是以元组变量作为谓词变元的基本对象。 元组关系演算语言的典型代表是E.F.Codd提出的ALPHA语言. 2.7.1.1 ALPHA语言 ALPHA语言是以谓词公式来定义查询要求的。在谓词公式中存在客体变元,这里称为元组变量。 元组变量是一个变量,其变化范围为某一个命名的关系。 ALPHA语言的基本格式是: <操作符> <工作空间名> (<目标表>)[:<操作条件>] 操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等到种。 1. 数据查询 (1)简单查询 例查询所有学生的数据。 GET W (S) 例2.13 查询所有被选修的课程号码。 GET W (SC.CNO) (2)条件查询 例2.14 查询计算机系工资高于1000元的教师的姓名和工资。 GET W (T.TN,T.SAL):T.DEPT=’计算机’∧T.SAL>1000 (3)排序查询 例2.15 查询S3同学所选课程号及成绩,并按成绩降序排列。 GET W (SC.CNO,SC.SCORE):SC.SNO=’S3’DOWN SC.SCORE DOWN表示降序,后面紧跟排序的属性名。 升序排列时使用UP。 (4)定额查询 例2.15 查询一名男教师的教师号和姓名。 GET W (1) (T.TNO,T.TN):T.SEX=’男’ 例2.16 查询一名男教师的教师号和姓名,并使他的年龄最小。 GET W (1) (T.TNO,T.TN):T.SEX=’男’ UP T.AGE (5)带元组变量的查询 例2.17 查询S3同学所选课程号。 RANGE SC X GET W (X.CNO):X.SNO=’S3’

相关主题
文本预览
相关文档 最新文档