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


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

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

屬於 關系代數 里面的 傳統的集合運算。其他的為union,except,intersection. 

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

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

 

 

行數為 3*3 ,因為k1*k2。

列數為3+3, = 6.

2.投影(projection):

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

 

我們關注這個重復行:一開始我們同時選取名字和班級的時候,盡管班級有重復,但是整個行來說不重復就行。

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

 3.連接(join):

大體上分:

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

等值連接是條件連接在連接運算符為“=”號時的特例。  

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

自然連接 :是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,並且在結果中把重復的屬性列去掉 等值連接表示為RA=BS,自然連接表示為RS;自然連接是除去重復屬性的等值連接。

兩者之間的區別和聯系如下:

1、自然連接一定是等值連接,但等值連接不一定是自然連接。等值連接不把重復的屬性除去;而自然連接要把重復的屬性除去。

2、等值連接要求相等的分量,不一定是公共屬性;而自然連接要求相等的分量必須是公共屬性。

3、等值連接不把重復的屬性除去;而自然連接要把重復的屬性除去。

2. 外連接(outer join):

外連接就是自然連接的結果加上被舍棄的懸浮元祖,沒有的屬性便設定為NULL。

如果只保留左邊R的懸浮元素就是左連接(left join),反之就是右連接(right join)

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

 

4.外碼(Foreign key):

 

需要注意的是外碼不一定要與相對的主碼同名。比如說學生關系里面的主碼為學號,外碼是班長。當然我們都知道班長也是指向一個學號,只是為了區分我們才使用了不同名。

 

參考:

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM