2.1 關系數據結構及形式化定義
- 關系數據庫系統是支持關系模型的數據庫系統。(關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成)
2.1.1 關系
1-域
- 域是一組具有相同數據類型的值的集合。
eg.{0, 1}; {man, woman}
2-笛卡爾積
- 笛卡爾積是域上的一種集合運算
eg.給定一組域D1,D2,D3,,,,則其笛卡爾積為:D1*D2*D3...={(d1,d2,d3,....) | di∈Di}
- 沒一個元素(d1,d2,d3...,dn)叫做一個n元組(簡稱元組),元組的每一個值di叫做一個分量。
- 一個域允許的不同取值個數稱為這個域的基數。
3-關系
-
D1*D2*D3...*Dn的子集叫做域在D1,D2,...,Dn上的關系,表示為:R(D1,D2,...,Dn)
-
R表示關系的名字,n表示關系的目或度
-
若關系中的某一屬性組能唯一標識一個元組,而其子集不可以,則稱該屬性組為候選碼。
-
候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性或非碼屬性。
-
若一個關系有多個候選碼,則選定其中一個為主碼(primary key)
-
關系可以有三種類型:基本關系(基本表或基表),查詢表和試圖表。
- 基本表:實際存在的表,實際存儲數據的邏輯表示
- 查詢表:查詢結果對應的表
- 試圖表:由基本表或其他試圖表導出的表,虛表,不對應實際存儲數據。
基本關系的六條性質:
- 列是同質的:每個列中的分量是同一類型的數據,來自同一個域。
- 不同的列可出自同一個域,此時每一個列為一個屬性
- 列的順序無所謂:列的次序可以任意調換
- 任意兩個元組的候選碼不能取相同的值
- 行的順序無所謂
- 分量必須取原子值,每一個分量都必須是不可分的數據項。
2.1.2 關系模式
關系模式是型,關系是值。關系模式是對關系的描述。
-
關系的描述稱為關系模式,表示為:R(U,D,DOM,F)
- R:關系名
- U:組成該關系的屬性名集合
- D:U中屬性所來自的域
- DOM: 屬性向域的影響集合
- F:屬性間數據的依賴關系集合
-
關系是關系模式在某一時刻的狀態和內容。關系模式是靜態穩定的,關系是動態隨時間變化的(關系操作不斷更新着數據庫中數據)。
2.1.3 關系數據庫
- 關系數據庫的型也成為關系數據庫模式,是對關系數據庫的描述
- 關系數據庫的值是這些關系模式在某一時刻對應的關系的集合 - 關系數據庫。
2.2 關系操作
2.2.1 基本關系操作
- 查詢:集合操作方式,即操作的對象和結果都是集合
- 查詢的五種基本操作:選擇、投影、並、差、笛卡爾積
- 插入
- 刪除
2.2.2 關系數據語言的分類
- 關系代數語言(ISBL)
- 關系演算語言
- 元組關系演算語言(ALPHA,QUEL)
- 域關系鹽酸語言(QBE)
- 關系代數和關系演算雙重特性:SQL
- SQL是一種結構查詢語言,集查詢、數據定義、數據操縱和數據控制於譯題的關系數據語言。(高度非過成化)
- 修改
2.3 關系完整性
- 關系模型由三類完整性約束:實體完整性、參照完整性(關系的兩個不變性)和用戶定義的完整性。
2.3.1 實體完整性
- 實體完整性規則:若屬性A是基本關系R的主屬性,則A不能取空置(null)
2.3.2 參照完整性
若F為基本關系R的一個或一組屬性但不是R的碼,Ks是基本關系S的主碼。若F與Ks相對應,則F是R的外碼,R為參照關系,S是被參照關系或目標關系。(RS可為同一關系)
- 參照完整性規則:若屬性F是基本關系R的外碼,它與基本關系S的主碼Ks相對應,則對於R中每個元組在F上的值必須:
- 取空值(F中每個屬性值均為空值):尚未給F分配Ks
- 等於S中某個元組的主碼值:被參照關系中的一個具體值
2.3.3 用戶定義完整性
用戶定義完整性即為針對某一具體關系數據庫的約束條件,其反映某一具體應用所涉及的數據必須滿足的語義要求。
2.4 關系代數
關系代數是一種抽象的查詢語言,用對關系的運算來表達查詢。
- 關系代數表達式:關系代數中運算經有限次復合后形成的表達式。
2.4.1 傳統集合運算(二目運算)
- 並:R∪S={t|t∈R V t∈S}
- 差:R-S={t|t∈R ⋀ t ∉ S}
- 交:R∩S={t|t∈R ⋀ t∈S}
- 笛卡爾積:R*S={tr⌒ts|tr∈R⋀ts∈S}
2.4.2 專門的關系運算
1-符號引入
- 設關系模式為R(A1,A2...An),其一關系設為R,t∈R標識t是R的一個元組。t[Ai]表示元組t中相應於屬性Ai的一個分量
- 若R為n目關系,S為m目關系。tr∈R,ts∈S,tr⌒ts稱為元組的鏈接或元組的串接,其是一個n+m列的元組
- 若A={Ai1,Ai2,Ai3,...,Aik},Ain為Ai中的一部分,則A稱為屬性列或屬性組。t[A]=(t[Ai1],t[Ai2],t[Ai3]...)表示元組t在屬性列A上諸分量的集合,A平均表示{A1,A2,...}去除{Ai1,Ai2,...}后剩余的屬性組。
- 給定關系R(X,Z),XZ為屬性組。當t[X]=x時,x在R中的象集定義為:Zx={t[Z]|t∈R,t[X]=x},表示R中屬性組X上值x的諸元組在Z上分量的集合。
2-關系運算定義
- 選擇(限制)
- 投影:關系R上的投影是從R中選擇若干屬性列組成新得關系
- 連接(join):兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組
- 除運算:設關系R除關系S結果為關系T,則T包含所有在R但不在S中的屬性和值,且T的元組與S的元組的所有組合都在R中。