目錄
一、關係數據結構定義及其形式化定義
關係數據庫是支持關係模型的數據庫系統。
而對於關係模型的數據結構有以下重要定義:
二、關係操作
分爲關係代數和關係演算:
- 關係代數
- 關係演算
SQL具有關係代數和關係演算雙重特點。
三、關係的完整性
關係模型有三種完整性約束:
- 實體完整性:主屬性不能取空值
- 參照完整性:例如好幾個表都有一個同樣的屬性,這個屬性要參照不同的表,不能有衝突。
- 用戶定義的完整性:數據庫的值是否符合現實。
四、關係代數
關係代數用關係的運算表示查詢:
運算對象、運算符和運算結果是關係運算的三個要素。
都有以下這些運算:
運算符 | 含義 | |
集合運算符 | ∪ | 並 |
- | 差 | |
∩ | 交 | |
× | 笛卡爾積 | |
專門的關係運算符 | σ | 選擇 |
∏ | 投影 | |
∞ | 連接 | |
÷ | 除 |
- 1.傳統的集合運算:並、差、交、笛卡爾積,具體實現略
- 2.專門的關係運算:選擇、投影、連接、除運算
關係運算:下面開始逐個瞭解選擇、投影、連接和除運算:
1.選擇 / 限制:
在關係 R 中選擇邏輯表達式 F 爲真的諸元組(F是個bool型值,表示 true 或 false)
例如: 查詢Sdept='IS'的全體學生。
從行的角度進行的運算。
2.投影:
關係R的投影是從R中選擇若干列組成新的關係
例如: 查詢學生的姓名,所在系。從列的角度進行的運算。
3.連接 / θ連接:
從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組
- 等值連接:θ爲等於的連接運算稱爲等值連接。
- 自然連接:它要求兩個關係中進行比較的分量必須是同名的屬性組,並且在結果中把重複的屬性列去掉。
例如:
同時從行和列的角度進行運算。
- 懸浮元組:在自然連接的時候,有些R或者S的元組壯烈犧牲了(比如說有的R關係的元組的B屬性值(R.B)在對面S.B匹配失敗了(沒有對應相等的),它就被拋棄了,這些被拋棄的元組就叫懸浮元組。)
- 外連接:把這些可憐的懸浮元組收容進來,在其他屬性填NULL,就是外連接(左外連接和右外連接就是隻收容左邊的 / 右邊的)
例如:
上圖中自然連接的部分,關係R的第4個元組和關係S的第5個元組都被拋棄了,現在它們得外連接就是原來的自然連接的關係再加上這兩個元組唄,就是這樣的↓↓↓
4.除運算:
若R÷S = T,則T屬於R,不屬於S,且S×T = R
例如:求下圖的R÷S
- 如圖關係R(A, B,C),關係S(B,C,D),都有B、C屬性,我們不妨把BC屬性看作一個整體。
- A屬性對應着BC屬性,BC屬性又對應着D屬性(對應即存在某種關係)
- 因爲是除運算,所以只要找出A與BC的對應關係,就可以拿過來和關係S進行比較。
這種關係要通過象集來表示:
- 如果要知道A與BC的對應關係,可以從a1到a4逐個列出b、c對應的集合:
- 比如a1在表格R中對應着{(b1,c2),(b2,c3),(b2,c1)}這就稱作象集!!!
則:
a1象集{(b1,c2),(b2,c3),(b2,c1)}
a2象集{(b3,c7),(b2,c3)}
a3象集{(b4,c6)}
a4象集{(b6,c6)}
顯然只有a1的象集包含了S在(B,C)上的投影!!!所以R÷S = {a1}
五、關係演算:略
這部分就完成到這裏,小夥伴們加油,歡迎一起探討~