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 Google 活跃
2 Amazon 活跃
3 Apple 过去的
4 如阿里巴巴 活跃

这里,CustomerName 和 status 的投影将给出

Π CustomerName, Status (Customers)
顾客姓名 状态
Google 活跃
Amazon 活跃
Apple 过去的
如阿里巴巴 活跃

重命名 (ρ)

重命名是用于重命名关系属性的一元操作。

ρ(a/b)R 将关系的属性“b”重命名为“a”。

并集运算 (υ)

UNION 用 ∪ 符号表示。它包括表 A 或 B 中的所有元组。它还会消除重复的元组。因此,集合 A UNION 集合 B 可以表示为:

结果 <- A ∪ B

为了使联合操作有效,必须满足以下条件 -

  • R 和 S 必须是相同数量的属性。
  • 属性域需要兼容。
  • 重复的元组应该被自动删除。

例如:

请考虑下表。

表A
表B.
列1 列2 列1 列2
1 1 1 1
1 2 1 3

A ∪ B 得出

表 A∪B
列1 列2
1 1
1 2
1 3

设置差值 (-)

– 符号表示。A – B 的结果是一个包含 A 中但不在 B 中的所有元组的关系。

  • A 的属性名称必须与 B 中的属性名称匹配。
  • 双操作数关系 A 和 B 应该是兼容的,或者联合兼容的。
  • 它应该被定义为由关系 A 中但不在关系 B 中的元组组成的关系。

例如:

A-B
表 A – B
列1 列2
1 2

路口

交点由符号 ∩ 定义

A∩B

定义由 A 和 B 中所有元组组成的关系。但是,A 和 B 必须是联合兼容的。

路口
交叉口的视觉定义

示例:

A ∩ B
表 A∩B
列1 列2
1 1

DBMS 中的笛卡尔积(X)

DBMS 中的笛卡尔积 是用于合并两个关系中的列的运算。通常,笛卡尔积单独执行时永远不会是有意义的运算。但是,当它后面跟着其他运算时,它就变得有意义了。它也被称为交叉积或交叉连接。

示例 – 笛卡尔积

σ 列2 = “1” (AXB)

输出 - 上面的示例显示关系 A 和 B 中第 2 列的值为 1 的所有行

σ 第 2 列 = '1' (AXB)
列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)
A ⋈ A.列 2 > B.列 2 (B)
列1 列2
1 2

加入EQUI

当 theta 连接仅使用等价条件时,它就变成等值连接。

例如:

A ⋈ A.column 2 =  B.column 2 (B)
A ⋈ A.第 2 列 = B.第 2 列 (B)
列1 列2
1 1

EQUI 连接是使用 RDBMS 中的 SQL 高效实现的最困难的操作,也是 RDBMS 存在本质的性能问题。

自然连接 (⋈)

只有当关系之间存在共同属性(列)时,才能执行自然连接。属性的名称和类型必须相同。

例如:

考虑以下两个表

C
广场
2 4
3 9
D
鱼块
2 8
3 27
C ⋈ D
C⋈D
广场 鱼块
2 4 8
3 9 27

外连接

在外连接中,除了满足匹配条件的元组外,我们还包括一些或所有不符合条件的元组。

左外连接(A⟕B)

在左外连接中,操作允许保留左关系中的所有元组。但是,如果在右关系中找不到匹配的元组,则连接结果中右关系的属性将填充为空值。

左外连接

考虑以下两个表格

A
广场
2 4
3 9
4 16
B
鱼块
2 8
3 18
5 75
A Left Outer Join B
A⋈B
广场 鱼块
2 4 8
3 9 18
4 16

右外连接(A⟖B)

在右外连接中,操作允许保留右关系中的所有元组。但是,如果在左关系中找不到匹配的元组,则连接结果中左关系的属性将填充为空值。

右外连接

A Right Outer Join B
A⋈B
鱼块 广场
2 8 4
3 18 9
5 75

完全外连接 ( A ⟗ B )

在完全外连接中,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。

A Full Outer Join B
A⋈B
鱼块 广场
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 连接仅使用等价条件时,它就变成等值连接。
自然连接(⋈) 只有当关系之间存在共同属性(列)时才能执行自然连接。
外连接 在外连接中,以及满足匹配条件的元组。
左外连接(左外连接) 在左外连接中,操作允许保留左关系中的所有元组。
右外连接(右外连接) 在右外连接中,操作允许将所有元组保持在正确的关系中。
完全外连接(完全外部加入) 在完全外连接中,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。

阅读更多 readmore