DBMS 中的关系代数: Opera举例说明
关系代数
关系代数 是一种广泛使用的程序查询语言。它收集关系实例作为输入,并将关系的出现作为输出。它使用各种操作来执行此操作。SQL 关系代数查询操作在关系上递归执行。这些操作的输出是一个新的关系,它可能由一个或多个输入关系形成。
基本 SQL 关系代数 Opera系统蒸发散
关系代数分为不同的组
一元关系 Opera系统蒸发散
- 选择(符号:σ)
- 项目(符号:π)
- 重命名(符号:ρ)
关系代数 Opera集合论
- 聯合 (υ)
- 交点 ( ),
- 不同之处 (-)
- 笛卡尔积 ( x )
二元关系 Opera系统蒸发散
- 注册
- 师
让我们详细研究它们并给出解决方案:
选择(σ)
SELECT 操作用于根据给定的选择条件选择元组的子集。符号为 Sigma(σ)。它用作表达式来选择满足选择条件的元组。Select 运算符选择满足给定谓词的元组。
σp(r)
σ
是谓词
r
代表关系,即表的名称
p
是介词逻辑
例子1
σ topic = "Database" (Tutorials)
输出 – 从教程中选择主题 =‘数据库’的元组。
例子2
σ topic = "Database" and author = "guru99"( Tutorials)
输出 – 从教程中选择主题为“数据库”且“作者”为 guru99 的元组。
例子3
σ sales > 50000 (Customers)
输出 – 从客户中选择销售额大于 50000 的元组
投影(π)
投影会消除输入关系的所有属性,但投影列表中提到的属性除外。投影方法定义了一个包含关系垂直子集的关系。
这有助于提取指定属性的值以消除重复值。(pi)符号用于从关系中选择属性。此运算符可帮助您保留关系中的特定列并丢弃其他列。
投影示例:
考虑下表
顾客ID | 顾客姓名 | 状态 |
---|---|---|
1 | 活跃 | |
2 | Amazon | 活跃 |
3 | Apple | 过去的 |
4 | 如阿里巴巴 | 活跃 |
这里,CustomerName 和 status 的投影将给出
Π CustomerName, Status (Customers)
顾客姓名 | 状态 |
---|---|
活跃 | |
Amazon | 活跃 |
Apple | 过去的 |
如阿里巴巴 | 活跃 |
重命名 (ρ)
重命名是用于重命名关系属性的一元操作。
ρ(a/b)R 将关系的属性“b”重命名为“a”。
并集运算 (υ)
UNION 用 ∪ 符号表示。它包括表 A 或 B 中的所有元组。它还会消除重复的元组。因此,集合 A UNION 集合 B 可以表示为:
结果 <- A ∪ B
为了使联合操作有效,必须满足以下条件 -
- R 和 S 必须是相同数量的属性。
- 属性域需要兼容。
- 重复的元组应该被自动删除。
例如:
请考虑下表。
列1 | 列2 | 列1 | 列2 | |
---|---|---|---|---|
1 | 1 | 1 | 1 | |
1 | 2 | 1 | 3 |
A ∪ B 得出
列1 | 列2 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
设置差值 (-)
– 符号表示。A – B 的结果是一个包含 A 中但不在 B 中的所有元组的关系。
- A 的属性名称必须与 B 中的属性名称匹配。
- 双操作数关系 A 和 B 应该是兼容的,或者联合兼容的。
- 它应该被定义为由关系 A 中但不在关系 B 中的元组组成的关系。
例如:
A-B
列1 | 列2 |
---|---|
1 | 2 |
路口
交点由符号 ∩ 定义
A∩B
定义由 A 和 B 中所有元组组成的关系。但是,A 和 B 必须是联合兼容的。
示例:
A ∩ B
列1 | 列2 |
---|---|
1 | 1 |
DBMS 中的笛卡尔积(X)
DBMS 中的笛卡尔积 是用于合并两个关系中的列的运算。通常,笛卡尔积单独执行时永远不会是有意义的运算。但是,当它后面跟着其他运算时,它就变得有意义了。它也被称为交叉积或交叉连接。
示例 – 笛卡尔积
σ 列2 = “1” (AXB)
输出 - 上面的示例显示关系 A 和 B 中第 2 列的值为 1 的所有行
列1 | 列2 |
---|---|
1 | 1 |
1 | 1 |
加入 Opera系统蒸发散
连接操作本质上是笛卡尔积加上选择标准。
连接操作用⋈表示。
JOIN 操作还允许连接来自不同关系的各种相关元组。
连接类型:
连接操作有多种形式:
内连接:
- Theta 加入
- 加入EQUI
- 自然连接
外连接:
- 左外连接
- 右外连接
- 完全外部加入
内部联接
在内连接中,仅包含满足匹配条件的元组,而排除其余元组。让我们研究各种类型的内连接:
Theta 加入
JOIN 操作的一般情况称为 Theta 连接。它用符号表示 θ
例如:
A ⋈θ B
Theta join 可以使用选择标准中的任意条件。
例如:
A ⋈ A.column 2 > B.column 2 (B)
列1 | 列2 |
---|---|
1 | 2 |
加入EQUI
当 theta 连接仅使用等价条件时,它就变成等值连接。
例如:
A ⋈ A.column 2 = B.column 2 (B)
列1 | 列2 |
---|---|
1 | 1 |
EQUI 连接是使用 RDBMS 中的 SQL 高效实现的最困难的操作,也是 RDBMS 存在本质的性能问题。
自然连接 (⋈)
只有当关系之间存在共同属性(列)时,才能执行自然连接。属性的名称和类型必须相同。
例如:
考虑以下两个表
民 | 广场 |
---|---|
2 | 4 |
3 | 9 |
民 | 鱼块 |
---|---|
2 | 8 |
3 | 27 |
C ⋈ D
民 | 广场 | 鱼块 |
---|---|---|
2 | 4 | 8 |
3 | 9 | 27 |
外连接
在外连接中,除了满足匹配条件的元组外,我们还包括一些或所有不符合条件的元组。
左外连接(A⟕B)
在左外连接中,操作允许保留左关系中的所有元组。但是,如果在右关系中找不到匹配的元组,则连接结果中右关系的属性将填充为空值。
考虑以下两个表格
民 | 广场 |
---|---|
2 | 4 |
3 | 9 |
4 | 16 |
民 | 鱼块 |
---|---|
2 | 8 |
3 | 18 |
5 | 75 |
AB
民 | 广场 | 鱼块 |
---|---|---|
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
右外连接(A⟖B)
在右外连接中,操作允许保留右关系中的所有元组。但是,如果在左关系中找不到匹配的元组,则连接结果中左关系的属性将填充为空值。
AB
民 | 鱼块 | 广场 |
---|---|---|
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | – |
完全外连接 ( A ⟗ B )
在完全外连接中,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。
AB
民 | 鱼块 | 广场 |
---|---|---|
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
5 | – | 75 |
总结
Opera符号 | 目的 |
---|---|
选择(σ) | SELECT 操作用于根据给定的选择条件选择元组的子集 |
投影(π) | 投影消除了输入关系的所有属性,但投影列表中提到的属性除外。 |
工会 Opera重(∪) | UNION 用符号表示。它包括表 A 或表 B 中的所有元组。 |
设定差值(-) | – 符号表示。A – B 的结果是一个包含 A 中但不在 B 中的所有元组的关系。 |
交点(∩) | 交集定义了由 A 和 B 中的所有元组组成的关系。 |
笛卡尔积(X) | 笛卡尔运算有助于合并来自两个关系的列。 |
内部联接 | 内连接,仅包含满足匹配条件的元组。 |
Theta 连接(θ) | JOIN 操作的一般情况称为 Theta 连接。用符号 θ 表示。 |
加入EQUI | 当 theta 连接仅使用等价条件时,它就变成等值连接。 |
自然连接(⋈) | 只有当关系之间存在共同属性(列)时才能执行自然连接。 |
外连接 | 在外连接中,以及满足匹配条件的元组。 |
左外连接( |
在左外连接中,操作允许保留左关系中的所有元组。 |
右外连接( |
在右外连接中,操作允许将所有元组保持在正确的关系中。 |
完全外连接( |
在完全外连接中,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。 |