MOOC 数据库笔记(五):关系演算

关系演算

概述

(这部分的内容大多与离散数学有关,我没有相关基础,所以现在只是简单看一下)
关系演算是以数理逻辑中的谓词演算为基础的。
关系演算是描述关系运算的另一种思维方式。
SQL语言是继承了关系代数和关系演算各自的优点所形成的。
按照谓词变量的不同,可分为关系元组演算和关系域演算:
关系元组演算是以元组变量作为谓词变量的基本对象。
关系域演算是以域变量作为谓词变量的基本对象。

关系元组演算

基本形式

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

定义

P(t)递归定义:
关系元组演算的基本形式:{t|P(t)}
其中公式P(t)可以递归地进行构造:
三种形式的原子公式是公式:
s∈R、s[A]θc、s[A]θu[B]
如果P是公式,那么┐P也是公式
如果P1,P2是公式,则P1∨P2,P1∧P2也是公式。
如果P(t)是公式,R是关系,则∃(t∈R)(P(t))和∀(t∈R)(P(t))也是公式。
需要时可加括弧
上述运算符的优先次序自高至底为:括弧;θ;∀;∃;┐;∧;∨
公式只限于以上形式

存在量词和全称量词∃∀

运算符∃∀,又称为量词,前者称“存在量词”,后者称“全称量词”
而被∃或∀限定的元组变量t,或者说,元组变量t前有存在量词或全称量词,则该变量被称为“约束变量”,否则被称为“自由变量”。
例如:“检索出年龄不是最小的所有同学”
{t|t∈Student∧∃(u∈Student)(t[Sage]>u[Sage])}

等价变换

P(t)公式,如谓词演算一样,也有一系列演算的等价性

关系域演算

基本形式

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

递归定义

公式P可以递归地进行构造:
·<x1, x2, …, xn>∈r,其中r为n个属性上的关系,x1, x2, …, xn为域变量或域常量;
·x𝚯y,其中x和y为域变量,𝚯为比较运算符(要求属性x和y所属域可用𝚯比较);
·x𝚯c,其中x为域变量,c是x作为域变量的那个属性域中的常量。
根据如下规则用原子构造公式:
·原子是公式;
·如果P1是公式,则¬P1和(P1)也都是公式;
·如果P1和P2是公式,则P1∨P2、P1∧P2和P1⇒P2也都是公式;
·如果P1(x)是包含自由域变量x的公式,则∃x(P1(x))和∀x(P1(x))也都是公式。

关系运算之安全性

"不产生无限关系和无穷验证的运算被称为是安全的"
1.关系代数是一种集合运算,是安全的
集合本身是有限的,有限元素集合的有限次运算仍旧是有限的。
2.关系演算不一定是安全的
例如:{t|┐(R(t))},{t|R(t)∨t[2]>3}可能表示无限关系
再例如:(∃u)(P(u)),(∀u)(P(u))
前者称为“假验证”,因为其要验证所有元素是否为假,后者称为“真验证”,因为其要验证所有元素是否为真。这样可能就存在了无穷验证。

安全约束有限集合

需要对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作,才能保证其安全性。
DOM(ρ)是一个有限集合,其中每个符号要么是ρ明显出现的符号,要么是出现在ρ中的某个关系R的某元组的分量。
DOM主要用于约束ρ中一些谓词的计算范围,它不必是最小集合。

关于三种关系运算的一些观点

关系运算有三种:关系代数、关系元组演算和关系域演算

三种关系运算都是抽象的数学运算,体现了三种不同的思维
关系代数--以集合为对象的操作思维,由集合到集合的变换。
元组演算--以元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环。
域演算--以域变量为对象的操作思维,取出域的每一个变量进行验证看其是否满足条件。

三种运算之间是等价的

关系代数与安全的元组演算表达式与安全的域演算表达式是等价的。即一种形式的表达式可以被等价地转换为另一种形式。

三种关系运算都可说是非过程性的

相比之下:域演算的非过程性最好,元组演算次之,关系代数最差。

三种关系运算虽然是抽象的,但却是衡量数据库语言完备性的基础:

一个数据库语言如果能够等价地实现这三种运算的操作,则说该语言是完备的。
目前多数数据库语言都能够实现这三种运算的操作,在此基础上还增加了许多其他的操作,如赋值操作、聚集操作等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章