學習筆記——DB關係數據庫

關係模型的三個組成部分:關係數據結構、關係操作集合和關係完整性約束。

關係數據庫系統與非關係數據庫系統的區別是,關係系統只有“表”這一種數據結構; 而非關係數據庫系統還有其他數據結構,以及對這些數據結構的操作。

一、關係數據結構及形式化定義

        關係模型的數據結構非常簡單,只包含單一的數據結構關係。

        在用戶看來,關係模型中數據的邏輯結構是一張扁平的二維表。

1.關係

        若關係中的某一屬性組的值能唯一地標識一個元組,而其子集不能,則稱該屬性組爲候選碼(candidate key )。 若一個關係有多個候選碼,則選定其中一個爲主碼(primary key)。候選碼的諸屬性稱爲主屬性(prime attribute)。不包含在任何候選碼中的屬性稱爲非主屬性(non-prime attribute)或非碼屬性(non-key attribute)。

        關係可以有三種類型:基本關係(通常又稱爲基本表或基表)、查詢表和視圖表。其中,基本表是實際存在的表,它是實際存儲數據的邏輯表示;查詢表是查詢結果對應的表; 視圖表是由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據。

        關係模型要求關係必須是規範化(normalization)的, 即要求關係必須滿足一定的規範條件。 這些規範條件中最基本的一條就是, 關係的每一個分量必須是一個不可分的數據項。規範化的關係簡稱爲範式(Normal Form, NF)。

        關係表中不允許還有表,簡言之不允許“表中有表”。

2.關係模式

       關係的描述稱爲關係模式。關係數據庫中,關係模式是型,關係是值。

       關係是關係模式在某一時刻的狀態或內容。關係模式是靜態的、穩定的,而關係是動態的、隨時間不斷變化的,因爲關係操作在不斷地更新着數據庫中的數據。例如,學生關係模式在不同的學年,學生關係是不同的。

3.關係數據庫

       所有關係的集合構成一個關係數據庫。
       關係數據庫的值是這些關係模式在某一時刻對應的關係的集合, 通常就稱爲關係數據庫。

4.關係模型的存儲結構

      有的管理系統中,一個表對應一個文件。

二、關係操作

1.關係操作

       增刪改查。關係的查詢表達能力很強,是關係操作中最主要的部分。

       查詢操作又可以分爲選擇(select)、投影(project)、連接(join)、除(divide)、並(union)、差(except),交(intersection)、笛卡兒積等。 其中選擇、 投影、 並、 差、 笛卡兒積是5種基本操作, 其他操作可以用基本操作來定義和導出。

      關係操作的特點是集合操作方式, 即操作的對象和結果都是集合。 這種操作方式也稱爲一次一集合(set-at-a-time)的方式。 相應地, 非關係數據模型的數據操作方式則爲一次一記錄(record-at-a-time)的方式。

2.關係數據語言的分類

       (Structured Query Language, SQL),是一種介於關係代數和關係演算之間的結構化查詢語言。SQL不僅具有豐富的查詢功能, 而且具有數據定義和數據控制功能, 是集查詢、 數據定義語言、 數據操縱語言和數據控制語言(Data Control Language, DCL)於
一體的關係數據語言。

三、關係的完整性

        關係模型中有三類完整性約束:實體完整性(entity integrity)、參照完整性(referential integrity)和用戶定義的完整性(user-defined integrity)。

1)實體完整性:若屬性(指一個或一組屬性)A是基本關係R的主屬性, 則A不能取空值(null value)。所謂空值就是“不知道”或“不存在”或“無意義”的值。

2)參照完整性:關係與關係之間存在着相互引用、相互約束的情況。參照完整性規則就是定義外碼與主碼之間的引用規則。

       設F是基本關係R的一個或一組屬性,但不是關係R的碼,Ks是基本關係S的主碼。如果F與Ks相對應,則稱F是R的外碼(foreign key),並稱基本關係R爲參照關係(referencing relation)。顯然,目標關係S的主碼Ks和參照關係R的外碼F必須定義在同一個(或同一組) 域上。如下圖。

       參照完整性:若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須:

                             或者取空值(F的每個屬性值均爲空值);    #外碼屬性本身不是主屬性

                             或者等於S中某個元組的主碼值。

    

      如上圖,R中的F必須滿足上述條件。

3)用戶定義完整性針對某一具體關係數據庫的約束條件, 它反映某一具體應用所涉及的數據必須滿足的語義要求。例如某個屬性必須取唯一值等條件。

四、關係代數

關係代數是一種抽象的查詢語言,它用對關係的運算來表達查詢。

關係代數的運算對象是關係,運算結果亦爲關係。

運算符:

 

並(union):由屬於R或屬於S的元組組成。

差(except):由屬於R而不屬於S的所有元組組成。

交(intersection):由既屬於R又屬於S的元組組成。

選擇(selection):從關係R中選取使邏輯表達式F爲真的元組。這是從行的角度進行的運算。

投影(projection):從R中選擇出若干屬性列組成新的關係。

連接(join):從兩個關係的笛卡兒積中選取屬性間滿足一定條件的元組。一般從行的角度進行運算,但自然連接還需要取消重複列,所以是同時從行和列的角度進行運算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章