目录
关系代数运算分类
- 常规集合运算:并、差、交、广义笛卡儿积(乘)。
- 特有的关系运算:选择、投影、连接、自然连接、求商。
常规集合运算
- 属于离散数学范畴。
- 均为双目运算。
- 除了广义笛卡尔积之外,要求参加运算的两个关系必须为同类关系。
- 同类关系:关系的度相同(二维表的列数相同),且对应的属性值取自同一域。
并(Union)
关系
R
R
R与关系
S
S
S的并定义为:
R
∪
S
=
{
t
∣
t
∈
R
∨
t
∈
S
}
R\cup S=\{t|t\in R\vee t\in S\}
R∪S={t∣t∈R∨t∈S}
- R ∪ S R\cup S R∪S的元素来自关系 S S S或来自关系 R R R。
- 不改变关系的度,仍为n元关系。
差(Difference)
关系
R
R
R与关系
S
S
S的差定义为:
R
−
S
=
{
t
∣
t
∈
R
∧
t
∉
S
}
R-S=\{t|t\in R\wedge t\notin S\}
R−S={t∣t∈R∧t∈/S}
- R ∪ S R\cup S R∪S的元素来自关系 S S S且不来自关系 R R R。
- 不改变关系的度,仍为n元关系。
交(Intersection)
关系
R
R
R与关系
S
S
S的交定义为:
R
∩
S
=
{
t
∣
t
∈
R
∧
t
∈
S
}
R\cap S=\{t|t\in R\wedge t\in S\}
R∩S={t∣t∈R∧t∈S}
- R ∪ S R\cup S R∪S的元素来自关系 S S S且来自关系 R R R。
- 不改变关系的度,仍为n元关系。
广义笛卡儿积(Extended cartesian product)
度为
n
n
n的关系
R
R
R与度为
m
m
m的关系
S
S
S的交定义为:
R
×
S
=
{
t
∣
t
=
<
r
,
s
>
∧
r
∈
R
∧
s
∈
S
}
R\times S=\{t|t=<r,s>\wedge r\in R\wedge s\in S\}
R×S={t∣t=<r,s>∧r∈R∧s∈S}
- 某个元组的前 n n n个分量来自于关系 R R R,后 m m m个分量来自于关系 S S S
- R × S R\times S R×S的度为 m + n m+n m+n
- R × S R\times S R×S的元组数为 k R k S k_Rk_S kRkS(设 R R R的元组数为 k R k_R kR, S S S的元组数为 k S k_S kS)
例:
关系
R
R
R:
A | B |
a1 | b1 |
a2 | b2 |
关系 S S S:
A | B |
a3 | b3 |
a4 | b4 |
则关系 R × S R\times S R×S为(最好将来自不同关系的相同属性名加以区分):
R.A | R.B | S.A | S.B |
a1 | b1 | a3 | b3 |
a1 | b1 | a4 | b4 |
a2 | b2 | a3 | b3 |
a2 | b2 | a4 | b4 |
注:以下写法是不正确的,关系不允许出现属性的嵌套。
R | S | ||
A | B | A | B |
a1 | b1 | a3 | b3 |
a1 | b1 | a4 | b4 |
a2 | b2 | a3 | b3 |
a2 | b2 | a4 | b4 |
特有的关系运算
选取或限制(Selection or Restriction)
定义:在关系
R
R
R中选择满足给定条件
F
F
F的元组:
σ
F
(
R
)
=
{
t
∣
t
∈
S
∧
F
(
t
)
=
T
r
u
e
}
\sigma_F(R)=\{t|t\in S\wedge F(t)=True\}
σF(R)={t∣t∈S∧F(t)=True}
其中,
F
(
)
F()
F()为条件表达式,由运算对象、运算符(包括逻辑运算符和算术比较符等)组成。其可能取值为
T
r
u
e
True
True或
F
a
l
s
e
False
False。
例子:选出学生信息表中所有来自某个学院的学生。
投影(Projection)
定义:选出关系
R
(
U
)
R(U)
R(U)中若干属性列
A
A
A(并删去重复行):
Π
A
(
R
)
=
{
t
[
A
]
∣
t
∈
R
,
A
⊆
U
}
\Pi_A(R)=\{t[A]|t\in R, A\subseteq U\}
ΠA(R)={t[A]∣t∈R,A⊆U}
由于关系作为一个元组的集合是具有互异性的,所以以上形式化定义也隐含了删除重复行的操作。
例子:由学生成绩记录表求学生学号表。
连接(Join)
定义:在关系
R
R
R和关系
S
S
S的广义笛卡尔积
R
×
S
R\times S
R×S中,选取
R
R
R的给定属性
X
X
X和
S
S
S的给定属性
Y
Y
Y(要求
X
X
X和
Y
Y
Y包含的属性个数相等且具有共同的域)满足给定算术比较条件
θ
\theta
θ的元组:
R
⋈
X
θ
Y
S
=
{
t
∣
t
=
<
r
,
s
>
∧
r
∈
R
∧
s
∈
S
∧
r
[
X
]
θ
s
[
Y
]
}
R\mathop{\Join} \limits_{X \theta Y}S=\{t|t=<r,s>\wedge r\in R \wedge s \in S \wedge r[X] \theta s[Y]\}
RXθY⋈S={t∣t=<r,s>∧r∈R∧s∈S∧r[X]θs[Y]}
当
θ
\theta
θ为
=
=
=,
<
<
<,
>
>
>符号时,分别称为等值连接、小于连接、大于连接。
例子:由学生信息表和学生选课记录表等值连接得到学生选课信息表(有重复列)。
自然连接(Natural Join)
定义:设关系
R
R
R和关系
S
S
S具有同名的属性组
B
B
B,其属性组的并集为
U
U
U,则它们的自然连接
R
⋈
S
R \Join S
R⋈S(也记为
R
∗
S
R*S
R∗S)定义为
R
R
R和
S
S
S的广义笛卡尔积中选取所有
B
B
B中属性值相等的元组组成的集合,再删去重复的属性列。
R
⋈
S
=
{
t
r
t
s
[
U
−
B
]
⏠
∣
t
r
∈
R
∧
t
s
∈
S
∧
t
r
[
X
]
=
t
s
[
Y
]
}
R \Join S=\{\overgroup{t_rt_s\left[ U-B \right] }|t_r\in R \wedge t_s \in S \wedge t_r[X] = t_s[Y]\}
R⋈S={trts[U−B]
∣tr∈R∧ts∈S∧tr[X]=ts[Y]}
自然连接可以看作等值连接的特例,但不同之处有如下两点:
- 无需指定待比较的属性集 X X X和 Y Y Y,默认是以两个关系的同名属性组 B B B。
- 在笛卡尔积的基础上,不仅对行进行了筛选,对列也进行了操作。
例子:由学生信息表和学生选课记录表等值连接得到学生选课信息表(删除重复列)。
除(Division)
定义:设关系
R
(
X
,
Y
)
R(X,Y)
R(X,Y)与关系
S
(
Z
)
S(Z)
S(Z),其中
Y
Y
Y和
Z
Z
Z具有相同的属性数,且对应属性出自相同域。关系
R
R
R除以关系S所得的商关系是关系
R
R
R在属性
X
X
X上投影的一个子集,该子集和
S
(
Z
)
S(Z)
S(Z)的笛卡儿积必须包含在
R
(
X
,
Y
)
R(X,Y)
R(X,Y)中:
R
÷
S
=
{
t
∣
<
t
,
s
>
∈
R
∧
s
∈
S
∧
t
∈
Π
X
(
R
)
}
R\div S=\{t| <t,s>\in R \wedge s\in S\wedge t\in \Pi_X(R)\}
R÷S={t∣<t,s>∈R∧s∈S∧t∈ΠX(R)}
例子1:
例子2:
结果为
∅
\emptyset
∅。