先决条件 – DBMS 中的关系代数
这些集合论运算是集合上的标准数学运算。这些操作是二元操作,也就是说,与 PROJECT、SELECT 和 RENAME 操作不同,这些操作是对 2 个关系进行操作的。这些操作用于以各种方式合并 2 个集合。
set操作主要分为以下几类:
- 联合运营
- 路口操作
- 设置差值或减号操作
在我们对关系应用 3 个集合操作之一之前,我们正在执行操作的两个关系必须具有相同类型的元组。这也称为联合兼容性(或类型兼容性)。
类型兼容性:
两个关系 A(P1, P2, …, Pn) 和 B(Q1, Q2, …, Qn) 被称为类型兼容(或联合兼容),如果这两个关系具有相同的度 ‘k’ 和
domain(Pi) = domain(Qi) for 1<= i <= k.
1.联合操作:
符号:
A ∪ S
其中,A 和 S 是关系,
符号“∪”用于表示联合运算符。
联合运算的结果,用 A ∪ S 表示,是一种关系,它基本上包括了所有存在于 A 或 S 或两者中的元组,消除了重复的元组。
UNION 操作要点:
1. UNION 操作是可交换的,即:
A ∪ B = B ∪ A
2. UNION 是关联的,这意味着它适用于任意数量的关系。
A ∪ ( B ∪ C ) = ( A ∪ B ) ∪ C
3、在SQL中,UNION操作和这里的UNION操作是一样的。
4. 此外,在 SQL 中有多集操作 UNION ALL。
2. 交集操作:
符号:
A ∩ S
其中,A 和 S 是关系,
符号“∩”用于表示交集运算符。
交运算的结果,用A ∩ S 表示,是一个基本包含A 和S 中存在的所有元组的关系。
INTERSECTION 操作要点:
1. INTERSECTION 操作是可交换的,即:
A ∩ B = B ∩ A
2. INTERSECTION 是关联的,这意味着它适用于任意数量的关系。
A ∩ ( B ∩ C ) = ( A ∩ B ) ∩ C
3. INTERSECTION 可以使用 UNION 和 MINUS 形成,如下所示:
A ∩ B = ((A ∪ B) - (A - B)) - (B - A)
4、在SQL中,INTERSECT操作和这里的INTERSECTION操作一样。
5. 此外,在 SQL 中有多组操作 INTERSECT ALL。
3. MINUS(或SET DIFFERENCE)操作:
符号:
A - S
其中,A 和 S 是关系,
符号“-”用于表示减号运算符。
交运算的结果,用A-S表示,是一个基本包含A中存在但S中不存在的所有元组的关系。
MINUS(或SET DIFFERENCE)运算的要点:
1. SET DIFFERENCE 操作不是可交换的,这意味着:
A - B != B - A
2.在SQL中,EXCEPT操作和这里的MINUS操作一样。
3. 此外,在 SQL 中还有多集操作 EXCEPT ALL。
例子:
考虑如下关系 Student(FIRST, LAST) 和 Faculty(FIRSTN, LASTN) :
First | Last |
---|---|
Aisha | Arora |
Bikash | Dutta |
Makku | Singh |
Raju | Chopra |
FirstN | LastN |
---|---|
Raj | Kumar |
Honey | Chand |
Makku | Singh |
Karan | Rao |
1. 学生会教职工:
Student ∪ Faculty
First | Last |
---|---|
Aisha | Arora |
Bikash | Dutta |
Makku | Singh |
Raju | Chopra |
Raj | Kumar |
Honey | Chand |
Karan | Rao |
2. 学生交叉学院:
Student ∩ Faculty
First | Last |
---|---|
Makku | Singh |
3. 学生减教员:
Student - Faculty
First | Last |
---|---|
Aisha | Arora |
Bikash | Dutta |
Raju | Chopra |
Raj | Kumar |
Honey | Chand |
Karan | Rao |