文章目錄
- 1.關聯式模式的基本概念
- 2.E-R模型和關聯式模式的關係
- 3.關係代數
- 1.關聯式模式的基本概念
- 2.E-R模型和關聯式模式的關係
- 3.關係代數
- 4.資料庫的修改
- 5.視圖
- 4.資料庫的修改
- 5.視圖
關聯式模式是E-R模型之後的又一大模型,而該模型也是現在的資料庫中運用最廣泛的模型,ORACLE,DB2都是基於關聯式資料庫模型的。而且為關 系模型制定查詢語言也是非常直截了當的事情(不知道又沒有誰想想過E-R模型裡面的查詢語句應該是什麼樣子的),關聯式模式甚至還給出了一個讓E-R模型平 滑轉換到關聯式模式的方法。這樣,關聯式模式就幾乎成了E-R模型的一個完整替代品。本章討論的就是這麼三個問題-----關聯式模式的概念,關係查詢語言,E -R模型轉換為關聯式模式。
1.關聯式模式的基本概念
- 關係:一系列值之間的聯絡就叫做關係。
- 關係集合:一系列相同關係組成的集合就叫做關係集合。
- 關聯式資料庫:由一組關係集合(表)組成的集合。
- 關係查詢語言:操作關係擷取資訊的語言,例如SQL,就是其中一種實現。
而在數學的角度,關係可以被理解成一系列域上的笛卡爾子集(不知道這個是什麼的朋友還是好好看看數學吧。),當然這種理解在研究純理論的時候比較重要。
2.E-R模型和關聯式模式的關係
因為E-R模型的設計比較直觀,而可惜的是直接支援E-R模型的商務資料庫確實少只有少,更多的是支援關聯式模式的。所以提供一個比較完善的E-R模型和關聯式模式轉換方法是比較重要的。這裡強調的是E-R模型中的主碼怎麼轉換到關聯式模式中。
- 強實體集:實體集的主碼成為關係的主碼。
- 弱實體集:依賴的強實體集和弱實體集的分辨符的組合成為關係的主碼。
- 聯絡集:按照對應情況
- 1-1:參與聯絡的任意一方的主碼成為關係的主碼。
- 1-N:參與聯絡的多方主碼成為關係的主碼。
- N-N:參與聯絡的各方的主碼的組合成為關係的主碼。
- 多值屬性:多值屬性的主碼可以用採用該屬性的實體集的主碼和屬性值組成的碼作為關係的主碼。
從E-R模式中匯出的一個關係模式r1可能在他的屬性中包括另一個模式r2的主碼。那麼這個屬性叫做r1參照r2的外碼(foreign-key),注意,模式圖裡面是沒有foreign-key的。
3.關係代數
可以算作關係模式核心中的核心,都比較簡單,這裡來一個索引式的紀錄。
- 基本運算
關聯式模式是E-R模型之後的又一大模型,而該模型也是現在的資料庫中運用最廣泛的模型,ORACLE,DB2都是基於關聯式資料庫模型的。而且為關 系模型制定查詢語言也是非常直截了當的事情(不知道又沒有誰想想過E-R模型裡面的查詢語句應該是什麼樣子的),關聯式模式甚至還給出了一個讓E-R模型平 滑轉換到關聯式模式的方法。這樣,關聯式模式就幾乎成了E-R模型的一個完整替代品。本章討論的就是這麼三個問題-----關聯式模式的概念,關係查詢語言,E -R模型轉換為關聯式模式。
1.關聯式模式的基本概念
- 關係:一系列值之間的聯絡就叫做關係。
- 關係集合:一系列相同關係組成的集合就叫做關係集合。
- 關聯式資料庫:由一組關係集合(表)組成的集合。
- 關係查詢語言:操作關係擷取資訊的語言,例如SQL,就是其中一種實現。
而在數學的角度,關係可以被理解成一系列域上的笛卡爾子集(不知道這個是什麼的朋友還是好好看看數學吧。),當然這種理解在研究純理論的時候比較重要。
2.E-R模型和關聯式模式的關係
因為E-R模型的設計比較直觀,而可惜的是直接支援E-R模型的商務資料庫確實少只有少,更多的是支援關聯式模式的。所以提供一個比較完善的E-R模型和關聯式模式轉換方法是比較重要的。這裡強調的是E-R模型中的主碼怎麼轉換到關聯式模式中。
- 強實體集:實體集的主碼成為關係的主碼。
- 弱實體集:依賴的強實體集和弱實體集的分辨符的組合成為關係的主碼。
- 聯絡集:按照對應情況
- 1-1:參與聯絡的任意一方的主碼成為關係的主碼。
- 1-N:參與聯絡的多方主碼成為關係的主碼。
- N-N:參與聯絡的各方的主碼的組合成為關係的主碼。
- 多值屬性:多值屬性的主碼可以用採用該屬性的實體集的主碼和屬性值組成的碼作為關係的主碼。
從E-R模式中匯出的一個關係模式r1可能在他的屬性中包括另一個模式r2的主碼。那麼這個屬性叫做r1參照r2的外碼(foreign-key),注意,模式圖裡面是沒有foreign-key的。
3.關係代數
可以算作關係模式核心中的核心,都比較簡單,這裡來一個索引式的紀錄。
- 基本運算
- 選擇運算
- 投影運算
- 並運算
- 集合差運算
- 迪卡兒集運算
- 更名運算
- 附加運算
- 集合交
- 自然串連
- 除運算
- 擴充的關係代數運算
- 廣義投影
- 聚集合函式(avg,min,max,sun,group by ,etc)
- 外串連(左外串連,右外串連,全外串連)
4.資料庫的修改
- 刪除
- 插入
- 更新
5.視圖
目前所給的例子,都是在邏輯層(參考第一章)上進行的操作,而有的時候,我們需要做出來一個虛擬表給使用者看,除安全性考慮(視圖是唯讀)之外,更加考慮到使用者的直覺問題(讓他看到更合理的資料)。
關於視圖,其實很簡單,就是一個查詢語句而已,使用它的時候需要注意如下幾點:
- 視圖的更新通常是在顯示的時刻(這非常像寫時複製技術)
- 視圖是唯讀(因為通過視圖更新是非常混亂的事情)
- 視圖有可能被資料庫緩衝,所以對於查詢量高的查詢,盡量用試圖吧。
- 視圖是可以被展開的,也就是說,可以用視圖來定義視圖(這個功能很cool吧),但是不可以遞迴定義。
這一章作為文法的介紹來講是非常容易的,但是裡面涉及的查詢是非常靈活的,需要反覆的演練才可以。
- 選擇運算
- 投影運算
- 並運算
- 集合差運算
- 迪卡兒集運算
- 更名運算
- 附加運算
- 集合交
- 自然串連
- 除運算
- 擴充的關係代數運算
- 廣義投影
- 聚集合函式(avg,min,max,sun,group by ,etc)
- 外串連(左外串連,右外串連,全外串連)
4.資料庫的修改
- 刪除
- 插入
- 更新
5.視圖
目前所給的例子,都是在邏輯層(參考第一章)上進行的操作,而有的時候,我們需要做出來一個虛擬表給使用者看,除安全性考慮(視圖是唯讀)之外,更加考慮到使用者的直覺問題(讓他看到更合理的資料)。
關於視圖,其實很簡單,就是一個查詢語句而已,使用它的時候需要注意如下幾點:
- 視圖的更新通常是在顯示的時刻(這非常像寫時複製技術)
- 視圖是唯讀(因為通過視圖更新是非常混亂的事情)
- 視圖有可能被資料庫緩衝,所以對於查詢量高的查詢,盡量用試圖吧。
- 視圖是可以被展開的,也就是說,可以用視圖來定義視圖(這個功能很cool吧),但是不可以遞迴定義。
這一章作為文法的介紹來講是非常容易的,但是裡面涉及的查詢是非常靈活的,需要反覆的演練才可以。