1
数据库原理与应用技术
1.3.3.1 2.3.1 元组关系演算
2.3.1 元组关系演算

元组关系演算表达式的一般形式为:

R={ t | P (t) }

上式表示R是满足公式 P 的所有元组 t 的集合。其中:t是元组变量,表示一个定长的元组;P是公式,即程序设计语言中的条件表达式,由原子公式组成。该式以元组为变量,称为元组关系演算。我们把{ t | P (t) }称为一个演算表达式,把P(t)称为一个公式,t为P中唯一的自由元组变量。可递归地定义元组演算公式如下。

(1) 原子命题函数是公式,称为公式,它有以下三种形式。

①R(s):R是关系名,s是元组变量。它表示“s是关系R的一个元组”。

②s[i]θu[j]:s和u是元组变量,θ是算术比较运算符。它表示“元组s的第i个分量与元组u的第j个分量之间满足θ关系”。

③s[i]θa或aθu[j]:s和u是元组变量,a是常量。它表示“元组s的第i个分量值与常量a之间满足θ关系”或“常量a与元组u的第j个分量值之间满足θ关系”。

(2) 设P1和P2是公式,则┐P1、P1∧P2、P1∨P2、P1→P2(→表示蕴涵)也都是公式。

(3) 设P是公式,t是P中的某个元组变量,那么(∀t)(P)、()(P)也都是公式。其中,∀是全称量词,表示“所有的…”;是存在量词,表示“至少有一个…”。在公式中未用∀和量词约束的变量,称为自由元组变量,该变量类似于程序设计语言中的外部变量或全局变量。用到∀和量词约束的变量称为约束元组变量,该变量类似于内部变量。

(4) 在元组演算公式中,各种运算符的优先次序为:算术比较运算符最高;量词次之,且按、∀的先后次序进行;逻辑运算符优先级最低,且按┐、∧、∨、→的先后次序进行;括号内的运算优先。

(5) 元组演算所有公式按上述条款所确定的规则经有限次的复合求得,不再存在其他形式。

关系代数的运算均可以用关系演算表达式来表示。所有的关系代数表达式都可由5种基本操作组合而成,因此,只需把5种基本操作用元组演算表达即可。下面用关系演算表达式来表示5种基本运算。设R和S是两个关系。

①并为:

R∪S={ t| R(t) ∨ S(t) }

②差为:

R-S={ t| R(t) ∧ ¬ S(t) }

③笛卡儿积为:

R×S ={ t| (u)( v) ( R(u)∧S(v)∧t[1]=u[1] ∧…∧t[k1]=u[k1] ∧t[k1+1]=v[1] ∧…∧t[k1+k2]=v[k2] ) }

④投影为:

πi1,i2,…,ik,(R)={ t| (u)(R(u) ∧t[1]=u[i1]∧…∧t[k]=u[ik] )}

⑤选择为:

σF(R)={ t|R(t)∧F' }

F'是公式F用t[i]代替运算对象i得到的等价公式。

【例2-11】设有表S、C、SC,分别如表2-24至表2-26所示,用元组关系演算表示下列查询语句。

(1) 查询所有男生的信息。

(2) 查询学生年龄大于18岁的学生的姓名。

(3) 查询家在北京的学生的姓名和年龄。

解:(1) R1={t|S(t)∧t[4]='男'}

(2) R2={t(1)|(u)(S(u)∧t[1]=u[2]∧u[3]>18)}

(3) R3={t(2)|(u)(S(u)∧t[1]=u[2]∧t[2]=u[3]∧u[5]='北京')}

元组关系演算以元组变量作为谓词变元的基本对象。一种典型的元组关系演算语言是E. F. Codd提出的ALPHA语言。ALPHA语言并没有具体实现,但是关系数据库管理系统Ingres所用的操作语言QUEL是参照ALPHA语言编写的,它与ALPHA语言非常类似。