轉自數據庫-關系代數(類型、完整性約束、基本運算、擴展運算)
(1)基本概念
① 屬性和域:
每個事物有很多屬性,每個屬性對應的取值范圍叫做域,所有對域都是原子數據(第一范式)
② 相關名詞
n元關系:R(D1,D2,D3...Dn)是n元關系,其中關系屬性的個數稱為“元數”,元組的個數稱為“基 數”,也就是記錄值。
候選碼:若關系中某一個屬性或者屬性組的值可以唯一的標識一個元組,則稱為候選碼
主碼:可以選擇任意一個候選碼作為主碼
主屬性:包含在任何候選碼中的屬性叫作主屬性
全碼:關系模型中所有屬性都是這個關系模型的候選碼,稱為全碼
外碼:關系模式中的屬性非該關系的碼,則稱為外碼
③ 三種類型:
基本表:實際存在的表
查詢表:查詢結果對應的表
視圖表:由基本表和其他視圖表導出的表,不是實際存在數據庫中
④ 完整性約束:
實體完整性:主屬性A不能為空值
參照完整性:用實體之間的關系來描述,若F是關系R的外碼,則F或者是空值,或者是某個元組的 主碼值
用戶定義完整性:根據具體關系數據的約束條件,比如數據范圍等
(2)關系五種基本運算
① 並:
R,S具有相同的關系模式(元素相同,結構相同),記為R U S,返回由R或者S元組構成的集合組成
② 差:
R,S具有相同的關系模式(元素相同,結構相同),記為R-S,右屬於R但不屬於S的元組組成
③ 廣義笛卡爾積:
R×S由n目和m目的關系R,S組成一個(n+m)列的元組集合,若R有K1個元組,S有K2個元組,則R×S有K1*K2個元 組
④ 投影(π) :
從關系的垂直方向開始運算,選擇關系中的若干列組成新的列。
⑤ 選擇(σ):
選擇從關系的水平方向進行元算,選擇滿足給定條件的元組組成新的關系。
(3)擴展的關系代數運算
① 交:
R∩S=R-(R-S),R,S具有相同的關系模式
② 鏈接:
鏈接分為θ鏈接,等值鏈接和自然鏈接
θ鏈接:從R,S的笛卡爾積中選擇滿足一定條件的元組
等值鏈接:當θ為“=”時為等值鏈接
自然鏈接:是一種特殊的等值鏈接,比較的分量必須是相同的屬性組,並在結果集中去掉重復列,如果沒有重復列,自然鏈接就轉換為笛卡爾積
③ 除:
同時從水平方向和垂直方向進行運算,給定關系R(X,Y)和S(Y,Z),X,Y,Z為屬性組,R÷S應當滿足在X上的分量值x的像集Yx包含關系S在屬性組Y上的投影集合:
例如:
R是:
A | B | C | D |
a | b | c | d |
a | b | e | f |
a | b | h | k |
b | d | e | f |
b | d | d | l |
c | k | c | d |
c | k | e | f |
S是:
C | D |
c | d |
e | f |
則R÷S:
A | B |
a | b |
c | k |
④ 廣義投影:
廣義投影運算容許在投影列表中使用算法運算,實現對投影運算的擴充,投影出的列不一定是原來的列,可以是通過計算出來的列。
⑤ 外連接:
由於自然鏈接會丟失一些信息,而外鏈接可以處理由於鏈接運算而缺失的信息,外鏈接分為左外鏈接、右外鏈接、全外鏈接。
左外鏈接:取出左側關系中所有與右側關系中任一元素都不匹配的元組,用null來填充右側的關系 屬性。
右外鏈接:取出右側關系中所有與右側關系中任一元素都不匹配的元組,用null來填充左側的關系屬性。
全外鏈接:完成左外鏈接和右外鏈接的操作。