數據庫自學筆記(1)---廣義笛卡爾積,投影,鏈接

最近在自學看 數據庫系統概論 這本書,總結一下遇到的問題。數據庫

1.廣義笛卡爾積(Extende cartesian product):

屬於 關係代數 裏面的 傳統的集合運算。其餘的爲union,except,intersection. spa

詳情不提了,舉個例子就是:.net

create table R
(
A char(2),
B char(2),
C char(2)
)

create table S
(
A char(2),
B char(2),
C char(2)
)

insert into R values('a1', 'b1', 'c1')
insert into R values('a1', 'b2', 'c2')
insert into R values('a2', 'b2', 'c1')

insert into S values('a1', 'b2', 'c2')
insert into S values('a1', 'b3', 'c2')
insert into S values('a2', 'b2', 'c1')

select * from R cross join S

結果:
A    B    C    A    B    C    
---- ---- ---- ---- ---- ---- 
a1   b1   c1   a1   b2   c2
a1   b2   c2   a1   b2   c2
a2   b2   c1   a1   b2   c2
a1   b1   c1   a1   b3   c2
a1   b2   c2   a1   b3   c2
a2   b2   c1   a1   b3   c2
a1   b1   c1   a2   b2   c1
a1   b2   c2   a2   b2   c1
a2   b2   c1   a2   b2   c1
blog

 

 

行數爲 3*3 ,由於k1*k2。get

列數爲3+3, = 6.io

2.投影(projection):

關係R的投影是從關係R中選擇出若干屬性列組成新的關係。
分爲兩步:
(1)選擇出指定的屬性,造成一個可能含有重複行的表。
(2)刪除重複行,造成新的關係。
 

 

咱們關注這個重複行:一開始咱們同時選取名字和班級的時候,儘管班級有重複,可是整個行來講不重複就行。table

當咱們轉到了只取班級,這就有重複行了,就會被消滅(新版書上體現出來了,這裏還保留了重複行)class

 3.鏈接(join):

大致上分:select

1. 等值鏈接(內鏈接)【inner join】:

等值鏈接是條件鏈接在鏈接運算符爲「=」號時的特例。  nio

它是從關係R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組。

天然鏈接 :是一種特殊的等值鏈接,它要求兩個關係中進行比較的份量必須是相同的屬性組,而且在結果中把重複的屬性列去掉 等值鏈接表示爲RA=BS,天然鏈接表示爲RS;天然鏈接是除去重複屬性的等值鏈接。

二者之間的區別和聯繫以下:

一、天然鏈接必定是等值鏈接,但等值鏈接不必定是天然鏈接。等值鏈接不把重複的屬性除去;而天然鏈接要把重複的屬性除去。

二、等值鏈接要求相等的份量,不必定是公共屬性;而天然鏈接要求相等的份量必須是公共屬性。

三、等值鏈接不把重複的屬性除去;而天然鏈接要把重複的屬性除去。

2. 外鏈接(outer join):

外鏈接就是天然鏈接的結果加上被捨棄的懸浮元祖,沒有的屬性便設定爲NULL。

若是隻保留左邊R的懸浮元素就是左鏈接(left join),反之就是右鏈接(right join)

ps:正式名稱應該是左/右外鏈接(left/right outer join)不過通常外面的資料都是簡稱。

 

 

參考:

https://blog.csdn.net/weixin_42194151/article/details/81135212

還有 數據庫系統概論第五版

相關文章
相關標籤/搜索