零碎知识补充

一、自然连接

1.笛卡尔乘积

两个集合XY的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。(其实就是两个集合元素的所有可能的组合)

例1. A={a,b}, B={0,1,2},则

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

例2. 又例如下面两个表的笛卡尔积

a1 a2 a3
a4 a5 a6

表R

  

b1 b2 b3
b4 b5 b6
b7 b8 b9

表S

   

R×S的结果为

a1 a2 a3 b1 b2 b3
a1 a2 a3 b4 b5 b6
a1 a2 a3 b7 b8 b9
a4 a5 a6 b1 b2 b3
a4 a5 a6 b4 b5 b6
a4 a5 a6 b7 b8 b9

可能会问,为什么例1是集合元素的组合,而这两个表是行的组合呢?因为在数据表中,行一般就是基本元素。比如学生成绩表。

数据项就是所谓的数据属性,所有的数据属性组成的最小数据(即一行数据)就是一个数据元素。

2.自然连接

如果关系R与S具有相同的属性组B,且该属性组的值相等时的连接称为自然连接,结果关系的属性集合为R的属性并上S减去属性

B的属性集合。

举个栗子,将上边两个表稍微改造一下,如下。

a1 a2 a3
a4 a5

a6

                                                                                                     表R

a3 b2 b3
a3 b5 b6
a6 b8 b9

                                                                                                    表S

假设表R的第三列和表S第一列是相同属性的数据,现在将这两个表自然连接。

(分步来)

先进性笛卡尔乘积,得到

a1 a2 a3 a3 b2 b3
a1 a2 a3 a3 b5 b6
a1 a2 a3 a6 b8 b9
a4 a5 a6 a3 b2 b3
a4 a5 a6 a3 b5 b6
a4 a5 a6 a6 b8 b9

然后将相同的合并,不同的删除所在行,得到自然连接结果

a1 a2 a3 b2 b3
a1 a2 a3 b5 b6
a4 a5 a6 b8 b9

猜你喜欢

转载自blog.csdn.net/wei348144881/article/details/106850883