数据库-关系代数自然连接 2 个表包含 2 个相同的列名

Database- Relational Algebra natural joins 2 tables consist 2 same column names

我已经通读了一个 Natural Join 的示例,其中涉及具有 2 个相同列名称的 2 个关系。我了解那些在 2 个表中具有 1 个相同列名的列,但对于这种情况我真的不知道。 谁能向我解释如何获得该输出(不在 Sql 命令中)?

谢谢!

公共列是 B 和 D,因此如果两边的行具有相同的 B 和 D 值,则它们匹配。
此示例中的常见 (B,D) 值是 (1,a) 和 (2,b)。
来自 r' 的 2 行与 (1,a) 匹配来自 s' 的 2 行,创建 4 种组合。
来自 r' 的 1 行与 (2,b) 匹配来自 s' 的 1 行,创建一个组合。
因此,结果集中有 5 行。

每个元组都是一个集合,每个属性都有一个值。当两个元组就它们共同属性的所有值达成一致时,就会有一个元组是它们的集合并集。例如 r 的 {A α B 1 C α D a} U s 的 {B 1 D a E α} = {A α B 1 C α D a E α}。否则没有元组是它们的集合并集。例如,对于 r 的 {A α B 1 C α D a} 和 s 的 {B 3 D a E β}。

两个关系的自然连接是元组的集合,这些元组是每个元组的集合并集。我们通过查看每个元组中的每一对元组来计算它,如果有一个元组是它们的集合并集,那么它就在结果中。

所以 r ⋈ s 是元组的集合,它是来自 r 的元组和来自 s 的元组的集合并集。我们通过查看来自 r 的每一对元组和来自 s 的元组来计算它,如果有一个元组是它们的集合并集,那么它就在结果中。

首先,r的{A α B 1 C α D a}和s的{B 1 D a E α}在共同属性的值上达成一致。所以他们的集合并集 {A α B 1 C α D a E α} 在 r ⋈ s.

接下来,r的{A α B 1 C α D a}和s的{B 3 D a E β}的共同属性具有不同的值。所以没有元组是它们的集合并集。所以那对元组在 r ⋈ s.

中没有集合并集

对来自 r & s 的每对元组继续。