数据库系统——第五讲 关系模型之关系演算
关系演算之关系元组演算
重点与难点:关系元组演算公式的递归定义;关系域演算公式的递归定义
关系演算是以数理逻辑中的谓词演算为基础的
关系演算是描述关系运算的另一种思维方式
按照谓词变量的不同,可分为关系元组演算和关系域演算
-
关系元组演算是以元组变量作为谓词变量的基本对象
-
关系域演算是以域变量作为谓词变量的基本对象
下面举四个例子来更直观地阐述:
关系演算之关系域演算
重点与难点:关系元组演算公式:与 、或 、非 、存在量词 、全称量词
基于关系域演算的QBE语言
(1)关系域演算语言QBE
- QBE: Query By Example
- 1975年由M. M. Zloof提出,1978年在IBM370上实现
- 特点:操作独特,基于屏幕表格的查询语言,不用书写复杂的公式,只需将条件填在表格中即可
- 是一种高度非过程化的查询语言
- 特别适合于终端用户的使用
(2)QBE的基本形式
QBE操作框架由四个部分构成:
关系名区:用于书写欲待查询的关系名
属性名区:用于显示对应关系名区关系的所有属性名
操作命令区:用于书写查询操作的命令
查询条件区:用于书写查询条件
(3)QBE的操作命令
Print 或 P. ---- 显示输出操作
Delete或D. ---- 删除操作
Insert或I. ---- 插入操作
Update或U. ---- 更新操作
- 示例,如下图表示, 向Student表中插入两个元组
<98030105, 刘二, Male, 35, 03, 980301>
<98030106, 刘三, Male, 32, 03, 980301>
关系演算之安全性
(1)什么是关系运算的安全性?
“不产生无限关系和无穷验证的运算被称为是安全的”
- 关系代数是一种集合运算,是安全的
- 关系演算不一定是安全的
关于三种关系运算的一些观点
关系运算有三种:关系代数、关系元组演算和关系域演算.
三种关系运算都是抽象的数学运算,体现了三种不同的思维.
关系代数—以集合为对象的操作思维,由集合到集合的变换.
元组演算—以元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环.
域演算—以域变量为对象的操作思维,取出域的每一个变量进行验证看其是否满足条件.
三种运算之间是等价的.
关系代数 与 安全的元组演算表达式 与 安全的域演算表达式 是等价的。即一种形式的表达式可以被等价地转换为另一种形式.
三种关系运算都可说是非过程性的
相比之下:域演算的非过程性最好,元组演算次之,关系代数最差.
三种关系运算虽是抽象的,但却是衡量数据库语言完备性的基础
一个数据库语言如果能够等价地实现这三种关系运算的操作,则说该语言是完备的.
目前多数数据库语言都能够实现这三种运算的操作,在此基础上还增加了许多其他的操作,如赋值操作、聚集操作等.