Last updated on
集合运算
- 参与运算的关系具有相同的目
- 相应的属性取自同一个域
并 Union ∪
R∪S={t∣t∈R∨t∈S}
差 Difference −
R−S={t∣t∈R∧t∈/S}
交 Intersection ∩
R∩SR∩S={t∣t∈R∧t∈S}=R−(R−S)
笛卡尔积 Cartesian Product ×
- R: n 目关系,k1 个元组
- S: m 目关系,k2 个元组
R×S={trts⌢∣tr∈R∧ts∈S}
结果有 m+n 列和 k1×k2 行。
关系运算
结果仍是表
记号
- R
- t∈R
- t[Ai]
设关系模式为 R(A1,A2,...,An),它的一个关系设为 R,
t∈R 表示 t 是 R 的一个元组,t[Ai] 则表示元组 t
中相应对于属性 Ai 的一个分量。
- A
- t[A]
- A
A 是属性列(属性组),t[A] 是元素 t 在 A 上各个分量的集合,
A 是去掉某一列以外其他的列组成的属性组。
- trts⌢
原组的连接。
给定一个关系 R(X,Z),X 和 Z 为属性组,
当 t[X]=x 时,x 在 R 中的象集为
Zx={t[Z]∣t∈R,t[X]=x}
表示 R 中属性组 X 上值为 x 的各个原组在 Z 上分量的集合。
选择 σ
σSdept=′IS′(Student)
投影 Π
ΠSname,Sdept(Student)
连接 ⋈
RAθB⋈S={trts⌢∣tr∈R∧ts∈S∧tr[A]θts[B]}
常用的连接运算
- 等值连接:上面 θ 定义为 =
- 自然连接:特殊的等值连接,在结果中把重复的属性列去掉
- 外连接:对于关系 R 中有而关系 S 中没有的元素,
外连接会创建对应的原组,将空缺设置为 NULL,
外连接分为左外连接、右外连接。
除 ÷
R÷S={tr[X]∣tr∈R∧ΠY(S)⊆Yx}
其中 Yx 是 x 在 R 中的象集,x=tr[X]。
例子
R:
A | B | C |
---|
a1 | b1 | c2 |
a2 | b3 | c7 |
a3 | b4 | c6 |
a1 | b2 | c3 |
a4 | b6 | c6 |
a2 | b2 | c3 |
a1 | b2 | c1 |
S:
R÷S:
步骤:
- 关系 R 中 A 可以取 4 个值
- a1 在 R 上的象集是 {(b1,c2),(b2,c3),(b2,c1)}
- a2 在 R 上的象集是 {(b3,c7),(b2,c3)}
- a3 在 R 上的象集是 {(b4,c6)}
- a4 在 R 上的象集是 {(b6,c6)}
- S 在 (B,C) 上的投影为 {(b1c2),(b2,c1),(b2,c3)}
只有 a1 的象集包含在了这之中,所以 R÷S={a1}
思想:包含