一、关系元组演算
1.1 概述
- 关系演算是以数理逻辑中的谓词演算为基础
- 关系演算是描述关系元算的另一种思维方式
- SQL语言是继承了关系代数和关系演算各自的优点所形成的
- 按照谓词变量的不同,可分为关系元组演算和关系域演算
- 关系元组演算是以元组变量作为谓词变量的基本对象
- 关系域演算是以域变量作为谓词变量的基本对象
1.2 关系元组元组演算公式的形式
- 关系元组演算公式的基本形式:
- 上式表达:所有使谓词P为真的元组t的集合
- t是元组变量
- 表示元组t在关系r中
- 表示元组t的分量,即t在属性A上的值
- P是与谓词逻辑相似的公式,表示以元组t为变量的公式
- 可以如下递归地进行定义
- 三种形式的原子公式是公式
- 如果P是公式,那么┐P也是公式
- 如果P1,P2是公式,则也是公式
- 如果是公式,R是关系,则和也是公式
- 需要时可以加括弧
- 上述运算符的优先次序一次自高至低为:括弧,,,,┐,,
- 公式只限以上形式
- 三种形式的原子公式是公式
1.3 关系元组演算公式之原子公式及与、或、非之理解与运用
1.3.1 元组演算公式之原子公式
- 关系元组演算公式的基本形式:
- 可以是如下三种形式之一的原子公式
- :t是关系R中的一个元组,例如:
- :元组分量与常量c之间满足比较关系,例如:
- :与为元组分量,A和B分别是某些关系的属性,他们之间满足比较关系,例如:
- 可以由公式加运算符与、或、非递归的构造
- 如果F是一个公式,则┐F也是一个公式
- 如果F1、F2是公式,则,也是公式
- 例1:检索出年龄小于20岁并且是男同学的所有学生
- 例2:检索出年龄小于20岁或者03系的所有男学生
-
- 在元组演算公式构造过程中,如果需要,可以使用括号,通过括号改变运算的优先次序,即:括号内的运算优先计算
1.3.2 关系元组演算公式 之 存在量词与全称量词之理解与运用
- 构造还有两个运算符:、
- 如果F是一个公式,则也是公式
- 如果F是一个公式则,也是公式
- 运算符和,又称为量词,前者称为“存在量词”,后者称为“全称量词”
- 而被和限定的元组变量t,或者说,元组变量t前有存在量词或全称量词,则该变量被称为“约束变量”,否则被称为“自由变量”
- 例如:检索出年龄不是最小的所有同学
- 再例如:检索出课程都及格的所有同学
1.3.3 关系元组演算之应用训练 语义正确性与等价性变换训练
- 公式,如谓词演算一样,也有一系列演算的等价性
1.3.4 关系元组演算之应用训练 将关系代数转换为元组演算
- 关系代数有五种基本操作:并、差、广义积、选择、投影操作,还有:交,-连接操作
- 并运算:
- 差运算:
-
交运算:
-
广义笛卡尔积:
-
选择运算:
-
投影运算:
-
元组演算公式总结
-
用递归定义公式,组合、递归地构造公式
-
一种用逻辑表达查询的思维
-
以元组为基本单位进行循环,先找到元组,再找到元组分量,进行谓词判断
-
元组演算与关系代数可以相互转换(有前提)
-
二、关系域演算
2.1 关系域演算公式
- 关系域演算公式的基本形式:其中,代表域变量或常量,P为以为变量的公式
- 公式P可以递归地进行构造
- 三种形式的原子公式是公式
- 。其中代表域变量或常量,表示由域变量构成的是属于关系R的
- 。其中,域变量x域常量c之间满足比较关系。
- 。其中,域变量x和域变量y之间满足比较关系。
- 如果P是公式,那么┐P也是公式
- 如果P1,P2是公式,则也是公式
- 如果是公式,t是域变量,则和也是公式
- 需要时可以加括弧
- 上述运算符的优先次序一次自高至低为:括弧,,,,┐,,
- 公式只限以上形式
- 三种形式的原子公式是公式
2.2 关系域演算公式构造示例
2.3 关系域演算与关系元组演算的比较
- 元组演算的基本形式:
- 域演算的基本形式:
- 元组演算是以元组为变量,以元组为基本处理单位,先找到元组,然后找到元组分量,进行谓词判断。
- 域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的元组是否存在或是否满足谓词判断
- 公式运算符都是相同的,只是其中的变量不同
- 元组演算和域演算可以等价交换
三、关系演算的安全性
3.1 什么是关系演算的安全性
- 不产生无限关系和无穷验证的运算被称为是安全的
- 关系代数是一种集合运算,是安全的
- 集合本身是有限的,有限元素集合的有限次数运算仍旧是有限的
- 关系演算不一定是安全的
3.2 关系演算的约束
- 需要对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作,才能保证其安全性
- 安全约束有限集合DOM
- 是一个有限集合,其中的每个符号要么 是中明显出现的符号,要么是出现在中的某个关系R的某元组的分量
- DOM主要用于约束中一些谓词的计算范围,它不必是最小集合
3.3 安全元组演算表达式
- 满足下面三个条件的元组演算表达式称为安全表达式
- 只要t满足,t的每一个分量就是的一个成员
- 对于中形如的子表达式,若u满足,则u的每一个分量都是中的成员
- 对于中形如的子表达式,若u不满足,则u的每个分量都是中的成员