数据结构中有自然连接的概念. 自然连接是指关系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 表的第一列. 如果这两列值相同就把他们连接成一个新表.
具体的计算过程如下.
- 把 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 |
- 观察上表的两个 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 |
- 因为只保留一次公共属性, 所有去除多余的数据, 得到结果.
| A | B | C | D | E |
| 1 | 2 | 3 | 1 | 1 |
| 2 | 3 | 3 | 1 | 1 |
| 1 | 1 | 6 | 3 | 3 |
网友评论