关系元组演算

  • 关系演算是以数理逻辑中的谓词演算为基础的
  • 关系演算是描述关系运算的另一种思维方式
  • SQL语言是继承了关系代数和关系演算各自的优点所形成的
  • 按照谓词变量的不同,可分为关系元组演算关系域演算
    • 关系元组演算是以元组变量作为谓词变量的基本对象
    • 关系域演算是以域变量作为谓词变量的基本对象

元组演算公式的基本形式

基本形式: {t|P(t)}

  • 上式表示所有使谓词P为真的元组t的集合
    • t是元组变量
    • t∈r 表示元组t在关系r中
    • t[A]表示元组t的分量,即t在属性A上的值
    • P是与谓词逻辑相似的公式,P(t)表示以元组t为变量的公式

关系元组演算公式的完整定义

  • 三种形式的原子公式是公式
    • s∈R : t是关系R中的一个元组,例如{t|t∈Student}
    • s[A]θc : 元组分量s[A]与常量C之间满足比较关系θ
    • s[A]θu[B] : s[A]与u[B]为元组分量,A和B分别是某些关系的属性,他们之间满足比较关系θ
  • 如果P是公式,则¬P也是公式
  • 如果P1,P2是公式,则P1⋀P2, P1⋁P2也是公式
  • 如果P(t)是公式,R是关系,则∃(t∈R)(P(t))和∀(t属于R)(P(t)) 也是公式
  • 上述运算符的优先次序自高至低为:括弧;θ ;∃ ;∀ ;¬ ;⋀ ;⋁ ;

关系元组演算公式

  • 存在∃,任意∀
  • 如果F是一个公式,则∃(t∈r)(F(t))也是公式
  • 如果F是一个公式,则∀(t∈r)(F(t))也是公式
  • 被存在或任意限定的元组变量t,则该变量被称为"约束变量",否则为自由变量

等价变换

IMAGE

关系域演算

  • 关系域演算基本形式: {1</sub>,s2,...,xn>|P(x1,s2,...,xn)}, 其中xi代表域变量或常量,P为以xi为变量的公式

元组演算与域演算的比较

  • 元组演算是以元组为变量,以元组为基本处理单位,先找到元组,然后再找到元组分量,进行谓词判断
  • 域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的元组是否存在或是否满足谓词判断。
  • 元组演算和域演算可以等价互换

基于关系域演算的QBE语言

域演算语言QBE

  • 特点:操作独特,基于屏幕表格的查询语言,不用书写复杂的公式,只需将条件填在表格中即可.
  • 是一种高度非过程化的查询语言
  • 特别适合终端用户使用

QBE的基本形式

  • 关系名区: 用于书写欲待查询的关系名
  • 属性名区: 用于显示对应关系名区关系的所有属性名
  • 操作命令区: 用于书写查询操作的命令
  • 查询条件区: 用于书写查询条件

QBE的操作命令

  • 显示输出操作: Print 或 P.
  • 删除操作: Delete或D
  • 插入操作: Insert或I
  • 更新操作: Update或U

QBE的查询条件

  • QBE查询条件可以直接在查询条件区中书写,形式为θ参量
  • 条件θ参量中的参量也可以是域变量,用任何一个值带有下划线表示,被称为示例元素.示例元素下划线上面的值不起作用,被当作域变量名称来对待,只用于占位或是连接条件。不带下划线的则是构成实际条件一部分的值。

关系演算的安全性

  • 不产生无限关系和无穷验证的运算被称为是安全的
  • 关系代数是一种集合运算,集合本身是有限的,有限元素集合的有限次运算仍旧是有限的,因此是安全的
  • 关系演算不一定是安全的

    例如"假验证",即验证所有元素是否都使ω(u)为false 例如"真验证",即验证所有元素是否都使ω(u)为true

  • 因此需要对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是有限范围内操作,才能保证其安全性.

安全约束有限集合DOM

  • DOM(φ)是一个有限集合,其中的每个符号要么是φ中明显出现的符号,要么是在φ中的某个关系R的某元组的分量
  • DOM主要用于约束φ中一些谓词的计算范围,它不必是最小集合.

安全元组演算表达式需要满足以下三个条件,{t|φ(t)}为安全表达式

  • 只要t满足φ,t的每个分量就是DOM(φ)的一个成员
  • 对于φ中形如(∃u)(ω(u))的子表达式,若u满足ω,则u的每个分量都是DOM(ω)中的成员.
  • 对于φ中形如(∀u)(ω(u))的子表达式,若u不满足ω,则u的每个分量都是DOM(ω)中的成员.

关系运算的一些观点

  • 关系运算有三种:关系代数 关系元组演算和关系域演算
  • 关系代数是以集合为对象的操作思维,由集合到集合的变换
  • 元组演算是以元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环
  • 域演算是以域变量为对象的操作思维,取出域的每一个变量进行验证看其是否满足条件
  • 三种运算之间是等价的
  • 三种关系都是非过程性的,相比之下域演算的非过程性最好,元组演算次之,关系代数最差.

results matching ""

    No results matching ""