关系演算

关系演算是以数理逻辑中的谓词演算为基础的。按谓词变元的不同,关系演算可分为元组关系演算和域关系演算。

一、元组关系演算语言ALPHA

元组关系演算以元组变量作为谓词变元的基本对象。元组变量是在某一关系范围内变化的,所以也称为范围变量,一个关系可以设多个元组变量。
ALPHA语言主要有GET/PUT/HOLD/UPDATE/DELETE/DROP 6 条语句,语句的基本格式为

操作语句 工作空间名(表达式):操作条件

其中,表达式用于指定语句的操作对象,它可以是关系名或(和)属性名,一条语句可以同时操作多个关系或多个属性。操作条件是一个逻辑表达式,用于将操作结果限定在满足条件的元组中,操作条件可以为空。除此之外,还可以在基本格式的基础上加上排序要求以及指定返回元组的条数等。

1、检索操作

检索操作用GET语句实现

简单检索(不带条件的检索)、限定的检索(带条件的检索)、带排序的检索、指定返回元组的条数的检索、用元组变量的检索、用存在量词的检索、带有多个关系的表达式的检索、用全称量词的检索、用两种量词的检索、用蕴涵的检索、聚集函数:
一些运算的标准函数库,如COUNT/TOTAL/MAX/MIN/AVG等函数

元组变量主要有两个方面的用途:
1、简化关系名:如果关系的名字很长,使用起来就会感到不方便,这时可以设一个较短名字的元组变量来代替关系名。这个类似于sql语句中的as功能,可以简化表名。
2、操作条件中使用量词时必须用元组变量。

2、更改操作

(1)修改操作:使用UPDATE语句实现,具体步骤为:

  1. 首先用HOLD语句将要修改的元组从数据库中读到工作空间中;
  2. 然后用宿主语言修改工作控件中元组的属性值;
  3. 最后用UPDATE语句将修改后的元组送回数据库中。

    单纯检索数据使用GET语句即可,但为修改数据而读元组时必须使用


HOLD语句,HOLD语句是带上并发控制的GET语句。
如果修改操作设计两个关系的话,就要执行两次HOLD-MOVE-UPDATE操作序列。
在ALPHA语言中,修改关系主码的操作是不允许的,如果需要修改主码值,只能先用删除操作删除该元组,然后再把具有新主码值的元素插入到关系中。
(2)插入操作:用PUT语句实现,步骤如下:
  1. 首先用宿主语言在工作空间中建立新元组;
  2. 然后用PUT语句把该元组存入指定的关系中。

(3)删除操作:用DELETE语句实现,步骤如下:

  1. 用HOLD语句把要删除的元组从数据库中读到工作空间中;
  2. 用DELETE语句删除该元组。

二、元组关系演算

先允许关系(的基数)是无限的,然后再对这种情况下定义的演算做适当的修改,保证关系演算中各个公式表示的是有限关系。
在元组关系演算系统中,称{t|Ø(t)}为元组演算表达式。(t为元组变量,t|∮(t)为元组关系演算公式,简称公式,它由原子公式和元算符组成。)
1、原子公式的分类
(1)R(t)
R是关系名,t是元组变量。R(t)表示t是R中的元组。于是,关系R可表示为{t|R(t)}。
(2)t[i]θμ[j]
t和u是元组变量,θ是算术比较运算符。该表达式表示断言“元组t的第i个分量与元组u的第j个分量满足比较关系θ”。
(3)t[j]θc 或 cθt[i]
该公式表示“t的第i个分量与常量c满足比较关系θ”。

若公式中的一个元组变量前有“全称量词”或“存在量词”,则称该变量为约束元组变量,否则称自由元组变量。
公式可以递归定义如下
1.每个原子公式是公式
2.如果Ø1和Ø2是公式,则Ø1∧Ø2,Ø1∨Ø2,┓Ø1也是公式。
3.若∮是公式,则∃ t(Ø)也是公式,∃ 是存在量词符号,∃ t(Ø) 表示:若有一个t使∮为真,则∃ t(Ø)为真,否则为假。
4.若∮是公式,则∀t(Ø)也是公式,∀是全称量词符号,则∀t(Ø)表示:如果对所有t都使Ø为真,则∀t(Ø)为真,否则为假。

(5)在元组演算公式中,各种运算符的优先级次序为:括号>算术比较运算符>量词(∃ >∀)>逻辑运算符(┓>∧>∨)
(6)有限次地使用上述5条规则得到的公式是元组关系演算公式,其他公式不是。一个元组演算表达式表示了使Ø(t)为真的元组集合。关系代数的运算均可以用关系演算表达式来表示(反之亦然)。
关系演算表达式来表示5种基本运算:
关系演算_第1张图片

三、域关系演算语言QBE

域关系演算以元组变量的分量(即域变量)作为谓词变元的基本对象。QEB语言于1978年在IBM370上得以实现。
QEB(通过例子进行查询)最突出的特点是操作方式,它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序,以填写表格的方式构造查询要求,而查询的结果也是以表格形式显示。
QEB中用示例元素来表示查询结构可能的情况,示例元素实际上就是域变量。以下就是QEB的操作框架:
关系演算_第2张图片
QBE中的聚集函数
关系演算_第3张图片

你可能感兴趣的:(数据库,关系演算,数据库)