v
在元组演算中,元组关系演算系演算表达式
(
简称为元
组表达式
)
是以元组变量为单位。记作:
{t
|
Φ
(t)}
v
其中
t
是元组变量,
Φ
(t)
是由原子公式和运算符组成的
公式。
v
如果元组变量前有
“
全称量词
”
(
"
)或
“
存在量词
”
(
$
),则称其为
约束变量
,否则称为
自由变量
v
原子公式有三种形式:
v
1.
R(t)
v
R
是关系名,
t
是关系元组变量。
R(t)
表示
t
是关系
R
中的元组。
关系可表示:
{t
|R(t)}
v
2.
t[i]
θ
u[j]
v
其中
t
和
u
都是元组变量,
θ
是算术比较运算符。表示元组
t
的第
i
的分量与元组
u
的第
j
个分量之间满足
θ
关系。
v
例如:
t[1]<u[2]
v
3. t[i]
θ
a
或
a
θ
t[i]
其中:
a
是一个常量。表示元组
s
的第
i
个分量与常量
a
之间满足
θ
关系。
下面用关系演算表达式表示关系代数的五种基本运算:
v
(
1
)并
R
È
S={ t |R(t)
Ú
S(
t)}
v
(
2
)差
R
-
S={ t | R(t)
Ù
┑
S(
t)}
v
(
3
)广义笛卡儿积
R
´
S= { t
(n+m)
|(
$
u
(n)
)(
$
v
(m)
)(R(u)
Ù
S(v)
Ù
t[1]=u[1]
Ù
…
Ù
t[n]=u[n]
Ù
t[n+1]=v[1]
Ù
…
Ù
t[n+m]=v[m])}
v
t
(n+m)
表示
t
有目数
(n+m)
,
u
(n)
表示
u
的
n
元组,
v
(m)
表示
v
的
m
元
组。
v
(
4
)投影
v
∏
i1,i2,
…
ik
(R)={t
(k)
| (
$
u)(
R(u)
Ù
t[1]=u[i
1
]
Ù
…
Ù
t[k]=u[i
k
]
) }
v
(
5
)选择
v
s
F
(R) =
{ t |R(t)
Ù
‘
F’ }
v
其中:
F
’
是
F
的等价公式。
v
设有如下
3
个关系模式:
v
学生(学号,姓名,年龄)
v
课程(课程号,课程名,学分)
v
成绩(学号,课程号,成绩)
v
(1)
查询年龄大于或等于
20
岁的学生学号与姓名
v
П
学号,姓名
(
σ
年龄
>=20
(
学生
))
}
v
{
t|(
$
(u)(
学生
(u)
∧
u[3]>=20
∧
t[1]=u[1]
∧
t[2]=u[2])}
v
(2)
查询课程号为
C2
的学号与姓名
v
П
学号,姓名
(
学生
)
П
学号
(
σ
课程号
=’C2’
(
课程
))
v
{t|(
$
uu[2 )(
$
v)((
学生
(u)
∧课程
(v)
∧
v[1]=
’
C2
’
v
∧
u[1]=v[1
]
∧
t[1]=u[1]
∧
t[2]=])}
v
域关系演算
(Domain Relational Calculus)类似于元组关系演算,不同的是用域变量代替元组变量的每一分量,域变量的变化范围是某个值而不是一个关系。
v
域关系演算
表达式的一般形式为:
v
{ < t
1
,
t
2
, … , t
k
> | P
(
t
1
,
t2
, … , t
k
)
}
v
t
i
代表域变量,
P
为由原子构成的公式
v
原子公式有两种形式:
v
(
1
)
R
(
x
1
,
x
2
, … , x
n
)是原子公式,表示元组(
x
1
,
x
2
, … , x
n
)是关系
R
中的一个元组。
v
(
2
)
x
q
y
,
其中
x
,
y
是常量或
域变量,
q
是
比较运算
符。
v
域关系演算公式中也可使用
┑
、
∧
、
Ú
等逻辑运
算符
,
存在量词
$
和全称量词
"
。
v
设有如下
3
个关系模式:
v
学生(学号,姓名,年龄)
v
课程(课程号,课程名,学分)
v
成绩(学号,课程号,成绩)
v
(2)
查询课程号为
C2
的学号与姓名
v
П
学号,姓名
(
学生
)
П
学号
(
σ
课程号
=’C2’
(
课程
))
v
{wx|(
$
w
)(
$
t
)((
学生
(wxz)
∧
成绩
(tuv)
∧
(u=
’
C2
’
v
∧
w
=t)
)}
v
{t|(
$
u)(
$
v)((
学生
(u)
∧
成绩
(v)
∧
v[2]=
’
C2
’
v
∧
u[1]=v[1
]
∧
t[1]=u[1]
∧
t[2]=u[2])}