数据库模型与语言-5-关系模型之关系演算

基本内容:

  1. 关系演算之关系元组演算
  2. 关系演算之关系域演算
  3. 关系演算之安全性
  4. 关于三种关系运算的一些观点

重点与难点:

  • 关系元组演算公式的递归定义;关系域演算公式的递归定义
  • 关系元组演算公式:与 ∧、或 ∨、非 ﹁、存在量词 ∃、全称量词 ∀
  • 用关系元组演算公式表达查询的思维训练
  • 用QBE语言表达查询的思维训练
  • 关系元组演算、域演算和关系代数在表达查询方面的思维差异

一、关系元组演算

(1)概述

前面出现过关系演算形式

如,并运算定义中: R ∪ S= {r|r∈R ∨ r∈S}

再如,差运算定义中:R-S= {r|r∈R ∧ r∉S}

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

(2)关系元组演算公式的形式

关系元组演算公式的基本形式: { t | P(t) }

上式表示:所有使谓词 P 为真的元组 t 的集合

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

P(t)可以如下递归地进行定义

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

关系元组演算公式的基本形式:{ t | P(t) }

其中公式P(t)可以递归地进行构造:

  • 三种形式的原子公式是公式
  • s ∈ R
  • s[A] θ c (θ代表比较运算;c代表常量)
  • s[A] θ u[B]
  • 如果P是公式,那么﹁P也是公式
  • 如果P1 , P2是公式,则P1 ∧ P2 , P1 ∨ P2 也是公式
  • 如果P(t)是公式,R是关系,则 ∃(t∈R)(P(t))和 ∀(t∈R)(P(t)) 也是公式
  • 需要时可加括弧
  • 上述运算符的优先次序自高至低为:括弧;θ ;∃ ;∀ ;﹁ ;∧ ;∨ ;
  • 公式只限于以上形式

二、关系元组演算公式 之 原子公式及与、或、非之理解与运用

(1)元组演算公式之原子公式

关系元组演算公式的基本形式:{ t | P(t) }

P(t)可以是如下三种形式之一的原子公式

  • t∈ R t是关系R中的一个元组,例如:{ t | t ∈ Student }
  • s[A] θ c 元组分量s[A]与常量 c 之间满足比较关系θ.

θ:比较运算符<, <=, =, <>, >, >=

例如:{t| t∈R ∧ t[Sage]<=19 ∧ t[Sname]=‘张三’}

s[A] θ u[B]

s[A] 与 u[B] 为元组分量,A和B分别是某些关系的属性,他们之间满足

比较关系θ.

例如:{ t | t∈Student ∧ ∃ (u ∈Student) ( t [Sage] > u [Sage] ) }

“检索出年龄不是最小的所有同学”

(2)元组演算公式之与、或、非运算符

P(t)可以由公式加运算符 ∧ (与)、 ∨ (或)、 ﹁(非)递归地构造

  • 如果F是一个公式,则 ﹁F 也是公式
  • 如果F1、F2是公式,则F1 ∧ F2, F1 ∨ F2也是公式

例如:检索出年龄小于20岁并且是男同学的所有学生。 { t | tStudent t[Sage] < 20 t[Ssex] = ‘男’ }  再例如:检索出年龄小于20岁或者03系的所有男学生。 { t | tStudent ( t[Sage] < 20  t[D#] = ‘03’ ) t[Ssex] = ‘男’ }  在元组演算公式构造过程中,如果需要,可以使用括号,通过括号改变运 算的优先次序,即:括号内的运算优先计算

参考资料:

哈尔滨工业大学 战德臣 课件

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn