零碎知識補充

一、自然連接

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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章