u 关系操作
关系模型提供一组完备的关系运算,以支持对数据库的各种操作。关系运算的理论是关系代数和关
系演算。
u 关系的完整性
在关系模型中,数据的约束条件通过三类完整性约束条件来描述。即:
I. 实体完整性
要求关系中的元组的主键值不能是空值。
II. 参照完整性
要求在关系中不允许引用不存在的实体。
III. 用户定义的完整性
这是针对某一具体数据的约束条件,由应用环境决定,例如属性的值限制。
n 关系代数
关系查询语言根据其理论基础的不同分成两大类:
u 关系代数语言:查询操作是以集合操作为基础的运算。
u 关系演算语言:查询操作是以谓词演算为基础的运算。
其中,关系代数是以集合代数为基础发展起来的,它是以关系为运算对象的一组高级运算的集合。关系代
数的运算可分为两类:
基本运算操作:并、差、笛卡尔积、投影和选择。
组合运算操作:交、联接、自然联接和除。
另外,还有几种扩充的关系代数操作:外联接(左外联接和右外联接)、外部并和半联接。
以下对几种常用的关系运算作一个简单的介绍。
u 基本运算
1. 并
设有两个关系 R 和 S 具有相同的关系模式,关系 R 和 S 的并是由属于 R 或属于 S 的元组组成的集合,记
为 R∪S。形式定义如下:R∪S≡{t│t∈R∨t∈S}
2. 差
设有两个关系 R 和 S 具有相同的关系模式,关系 R 和 S 的差是由属于 R 但不属于 S 的元组组成的集合,
记为 R-S。形式定义如下:R-S≡{t│t∈R∧t ̄∈S}
3. 笛卡儿积
设关系 R 和 S 元数分别为 r 和 s。定义 R 和 S 的笛卡儿积是一个(r+s)元的元组集合,每个元组的前 r 个
分量来自 R 的一个元组,后 s 个分量来自 S 的一个元组,记为 R×S 形式定义如下:R×S≡{t│t=<t
r
,t
s
>t
r
∈R∧t
s
∈S}
若 R 有 m 个元组,S 有 n 个元组,则 R×S 有(mn)个元组。
4. 投影
该操作是对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。
5. 选择
这个操作是根据某些条件对关系作水平分割,即选择符合条件的元组。条件可用命题公式 F 表示,F 中的
运算对象是常数(用引号括起来)或元组分量(属性名或列的序号)。运算符有算术比较运算符(≤,<,
≥,>,=,≠)和逻辑运算符(∧,∨,┐)。
δ
F
(R)≡{t│t∈R∧F(t)= true}
δ 为选择运算符,δ
F
(R)表示从 R 中挑选满足公式 F 的元组所构成的集合。常量用引号括起来,而属性号
或属性名不要用引号括起来。
u 组合运算
1. 交
设有两个关系 R 和 S 具有相同的关系模式,关系 R 和 S 的交是由属于 R 又属于 S 的元组组成的集合,记
为 R∩S。形式定义如下:R∩S≡{t│t∈R∧t∈S}
2. 联接(又称 θ 联接)
从关系 R 和 S 的笛卡尔积中选取属性值之间满足一定条件的元组,记为:
R│×│S≡δ
iθ(i+j)
(R×S) ijθ
这里 R 的元数是 r,θ 是算术比较运算符。R│×│S 操作是在 R 和 S ijθ 的笛卡尔积中挑选第 i 个分量和第
(r+j)个分量满足 θ 运算的元组组成的新的关系。
3. 自然联接
两个关系 R 和 S 的自然联接用 R│×│S 表示,具体计算过程如下:
A) 计算 R×S
B) 设 R 和 S 的公共属性是 A1,A2,A3,..Ak.,挑选 R×S 中满足 R.A1=S.A1,R.A2,...,R.Ak=S.Ak 的
那些元组
C) 去掉 S.A1,S.A2,..S.Ak
R│×│S 可用下列形式定义:
R│×│S≡π
i1i2,...,im
(δ
R.A1=S.A1∧...∧R.Ak=S.Ak
(R×S)。
4. 除法