数分学习笔记-数据库系统:模型与语言(四)

1.关系演算之关系元组演算(行)

  • 关系演算形式:举例:R∪S={r | r∈R \vee r∈S}
  • 关系演算是以数理逻辑中的谓词演算为基础的
  • 关系演算是描述关系运算的另一种思维方式
  • SQL语言是继承了关系代数和关系演算各自的优点所形成的
  • 按照谓词变量的不同,可分为关系元组演算和关系域演算
    • 关系元组演算是以元组变量作为谓词变量的基本对象
    • 关系域演算是以域变量作为谓词变量的基本对象
  • 关系元组演算公式的基本形式:{ t | P(t) }
    • 上式表示:所有谓词P为真的元组t的集合
    • t是元组变量
    • t∈r 表示元组t在关系r中
    • t[A]表示元组t的分量,即t在属性A上的值
    • P是与谓词逻辑相似的公式,P(t)表示以元组t为变量的公式
    • P(t)可以如下递归地进行定义:
      • 三种形式的原子公式:
        • s ∈ R;        s是R中的一个元组,例如:{s | s∈ student}
        • s[A] θ c;        元组分量s[A]与常量c之间满足比较关系θ,比较运算符<,≤,=,<>,>,≥
        • s[A] θ u[B];  s[A]与u[B]为元组分量,A和B分别是某些关系的属性,他们之间满足比较关系θ
      • P(t)可以由运算符∧;∨;﹁;递归地构造
      • 如果P是公式,那么﹁P也是公式
      • 如果P1,P2是公式,则P1∧P2,P1∨P2也是公式
      • 如果P(t)是公式,R是关系,则\exists(t∈R(P(t)) 和 \forall(t∈R (P(t) )也是公式
      • 需要时可加括弧
      • 上式运算符的优先次序自高至低为:括弧;θ;\exists\forall;﹁;∧;∨;
      • 公式只限于以上形式
      • 在元组演算公式构造过程中,如果需要,可以使用括号,通过括号改变运算地优先次序,即,括号内的运算优先计算
      • 构造P(t)还有两个运算符:\exists(存在);\forall(任意)
        • 如果P(t)是一个公式,则\exists(t∈R(P(t)) 也是公式
        • 如果P(t)是一个公式,则\forall(t∈R (P(t) )也是公式
      • 运算符\exists\forall,又称为量词,前者称“存在量词”,后者称“全称量词”
      • 而被 \exists 或 \forall 限定的元组变量t,或者说,元组变量t前又存在量词或全称量词,则该变量被称为“约束变量”,否则被称为“自由变量”
  • 元组演算的等价性变换:
    • P(t)公式,如谓词演算一样,也有一系列演算的等价性
    •  
  • 元组演算与关系代数对比应用的例子
  • 将关系代数转化为元组演算:
  •  

2.关系演算之关系域演算(列)

  • 基于关系域演算的QBE语言
  • QBE的操作命令:
    • Print或P.——显示输出操作
    • Delete或D.——删除操作
    • Insert或I.——插入操作
    • Update或U.——更新操作
  • QBE的查询条件——简单条件
    • QBE查询条件可以直接在查询条件区书写,形式为θ参量
    • θ可以是<,≤,=,<>,>,≥;如省略θ,则默认为=
    • θ参量中的参量可以是常量,直接书写
    • QBE不同属性上的条件可以写在同一行
    • 条件θ参量中的参量可以是域变量,用任何一个值(不必是结果中的值)被称为示例元素,示例元素下划线上面的值不起作用,被当作域变量名称来对待,只用于占位或是连接条件。不带下划线的则是构成实际条件一部分的值。
    • 用示例元素实现多个表的连接
    • 应用训练:

 

3.关系演算之安全性

  • 关系运算的安全性:不产生无限关系和无穷验证的运算被称为是安全的
    • 关系代数是一种集合运算,是安全的(集合本身是有限的,有限元素集合的有限次运算依旧是有限的)
    • 关系演算不一定是安全的
    • 需要对关系施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作,才能保证其安全性。 
  • 安全约束有限集合DOM(不太懂这一部分)
    • DOM(ψ)是一个有限集合,其中的每个符号要么是ψ中明显出现的符号,要么是出现在ψ中的某个关系R的某元组的分量。
    • DOM主要用于约束ψ中的一些谓词的计算范围,它不必是最小集合。
  • 安全演算表达式:
  •  

4.关于三种关系演算的一些观点

  • 关系运算有三种:关系代数、关系元组演算和关系域演算
  • 三种关系运算都是抽象的数学运算,体现了三种不同的思维
    • 关系代数——以集合为对象的操作思维,由集合导集合的变换
    • 元组演算——以元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环
    • 域演算——以域变量为对象的操作思维,取出域的每一个变量进行验证看其是否满足条件
  • 三种运算之间是等价的
    • 关系代数与安全的元组演算表达式与安全的域演算表达式是等价的。即一种形式的表达式可以被等价地转换为另一种形式
  • 三种关系运算都可说是非过程性的:
    • 相比之下:域演算的非过程性最好,元组演算次之,关系代数最差
  • 三种关系运算虽是抽象的,但却是衡量数据库语言完备性的基础
    • 一个数据库语言如果能够等价地实现这三种关系运算的操作,则说该语言是完备的
    • 目前多数数据库语言都能实现这三种运算的操作,在此基础上还增加了许多其他操作,如赋值操作、聚集操作等
    • 数据库语言可以基于这三种抽象运算来设计:

     

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值