程序员数据结构和算法分析iOS Developer

数据结构中的自然连接

2017-07-11  本文已影响91人  KenZhangCn

数据结构中有自然连接的概念. 自然连接是指关系R和S在所有公共属性(common attribute)上的等接(Equijoin). 但在得到的结果中公共属性只保留一次, 其余删除.
简单的说, 就是把两张表连接成另一张表, 条件是表中有数据类型和数值都相同的元素, 并已此元素为基准, 合并其他元素为一张表, 基准元素之保留一个.


比如表R为:

| A | B | C | 
| 1 | 2 | 3 |
| 2 | 3 | 3 |
| 1 | 1 | 6 |

比如表S为:

| C | D | E |
| 3 | 1 | 1 |
| 2 | 2 | 2 |
| 6 | 3 | 3 |

R和S自然连接可记作:R⋈S
结果为:

| A | B | C | D | E |
| 1 | 2 | 3 | 1 | 1 |
| 2 | 3 | 3 | 1 | 1 |
| 1 | 1 | 6 | 3 | 3 |

在这个例子中公共属性是 C ,即 R 表的第三列和 S 表的第一列. 如果这两列值相同就把他们连接成一个新表.


具体的计算过程如下.

  1. 把 R 表中的每一行乘 S 表中的每一行. 得到一个 9 X 6 的表.
| A | B | C | C | D | E | 
| 1 | 2 | 3 | 3 | 1 | 1 |
| 1 | 2 | 3 | 2 | 2 | 2 |
| 1 | 2 | 3 | 6 | 3 | 3 |
| 2 | 3 | 3 | 3 | 1 | 1 |
| 2 | 3 | 3 | 2 | 2 | 2 |
| 2 | 3 | 3 | 6 | 3 | 3 |
| 1 | 1 | 6 | 3 | 1 | 1 |
| 1 | 1 | 6 | 2 | 2 | 2 |
| 1 | 1 | 6 | 6 | 3 | 3 |
  1. 观察上表的两个 C 列, 值相同保留那一行, 值不同删除那一行. 结果为:
| A | B | C | C | D | E | 
| 1 | 2 | 3 | 3 | 1 | 1 |
| 2 | 3 | 3 | 3 | 1 | 1 |
| 1 | 1 | 6 | 6 | 3 | 3 |
  1. 因为只保留一次公共属性, 所有去除多余的数据, 得到结果.
| A | B | C | D | E |
| 1 | 2 | 3 | 1 | 1 |
| 2 | 3 | 3 | 1 | 1 |
| 1 | 1 | 6 | 3 | 3 |
上一篇 下一篇

猜你喜欢

热点阅读