1. 程式人生 > >資料庫概論學習筆記 其二(關係資料庫)

資料庫概論學習筆記 其二(關係資料庫)

第二章 關係資料庫

2.1  關係資料結構及形式化定義

關係

 1. 域(Domain)

 2. 笛卡爾積(Cartesian Product)

 3. 關係(Relation)

1. 域(Domain)

    域是一組具有相同資料型別的值的集合。

2. 笛卡爾積(Cartesian Product)

    所有域的所有取值的一個組合

    元組:笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組。如:(張清玫,計算機專業,李勇)、     (張清玫,計算機專業,劉晨)  等 都是元組。

    分量:笛卡爾積元素(d1,d2,…,dn)中的每一個值di 叫作一個分量。如:張清玫、計算機專業、李勇、劉晨等都是分量 。

例子:

給出3個域:

D1=導師集合SUPERVISOR={張清玫,劉逸}

D2=專業集合SPECIALITY={計算機專業,資訊專業}

D3=研究生集合POSTGRADUATE={李勇,劉晨,王敏}

D1,D2,D3的笛卡爾積為

D1×D2×D3={ (張清玫,計算機專業,李勇),(張清玫,計算機專業,劉晨),(張清玫,計算機專業,王敏),(張清玫,資訊專業,李勇),(張清玫,資訊專業,劉晨),(張清玫,資訊專業,王敏), (劉逸,計算機專業,李勇),(劉逸,計算機專業,劉晨),(劉逸,計算機專業,王敏),(劉逸,資訊專業,李勇), (劉逸,資訊專業,劉晨),(劉逸,資訊專業,王敏) }

基數為2×2×3=12

3. 關係(Relation)

    D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的 關係,表示為R(D1,D2,…,Dn)

    碼:

        候選碼(Candidate key):若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼。

        全碼(All-key):關係模式的所有屬性組是這個關係模式的候選碼,稱為全碼。

        主碼(Primary key): 若一個關係有多個候選碼,則選定其中一個為主碼。

        主屬性(Prime attribute):候選碼的諸屬性稱為主屬性不包含在任何侯選碼中的屬性稱為非主屬性或非碼屬性。

關係模式

關係模式

    對關係的描述 靜態的、穩定的。

2.2  關係操作

常用的關係操作

    查詢操作:選擇、投影、連線、除、並、差、交、笛卡爾積

        選擇、投影、並、差、笛卡爾基是5種基本操作

    資料更新:插入、刪除、修改

關係操作的特點

     集合操作方式:操作的物件和結果都是集合,一次一集合的方式

2.3  關係的完整性

實體完整性

若屬性A是基本關係R的主屬性,則屬性A不能取空值

    例:

    選修(學號,課程號,成績)

    “學號、課程號”為主碼

    “學號”和“課程號”兩個屬性都不能取空值

參照完整性

1. 外碼

2. 參照完整性規則

1. 外碼

     學生(學號,姓名,性別,專業號,年齡)

    課程(課程號,課程名,學分)

    選修(學號,課程號,成績)

    選修中的學號是外碼,課程號是外碼,學號+課程號是主碼。

    外碼簡單的說:在一個關係中不是主碼,而在另一個關係中是主碼。

2. 參照完整性規則

    選修(學號,課程號,成績)

    “學號”和“課程號”可能的取值 :

     (1)選修關係中的主屬性,不能取空值

    (2)只能取相應被參照關係中已經存在的主碼值

    簡單的說:外碼的取值非空,且只能取被參照關係中存在的值

使用者定義的完整性

    簡單的說:就是使用者根據實際情況自己定義的取值規則。

2.4  關係代數

傳統的集合運算

(1) 並(Union)

(2)差(Difference)

(3) 交(Intersection)

(4) 笛卡爾積(Cartesian Product)

專門的關係運算

1. 選擇

2. 投影

3. 連線

4. 除運算

1.選擇

    查詢資訊系(IS系)全體學生。

    σSdept = 'IS' (Student)

     選擇出邏輯表示式為真的元組

2. 投影

    查詢學生的姓名和所在系。

    即求Student關係上學生姓名和所在系兩個屬性上的投影   

    πSname,Sdept(Student)

    

3. 連線

    從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組

    自然連線:1.兩個關係中進行比較的分量必須是相同的屬性組

                      2.在結果中把重複的屬性列去掉

    等值連線:從關係R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組。(不去重)

4. 除運算

例如:

在關係R中,A可以取四個值{a1,a2,a3,a4}

a1的象集為 {(b1,c2),(b2,c3),(b2,c1)}

a2的象集為 {(b3,c7),(b2,c3)}

a3的象集為 {(b4,c6)}

a4的象集為 {(b6,c6)}

S在(B,C)上的投影為{(b1,c2),(b2,c1),(b2,c3) }

只有a1的象集包含了S在(B,C)屬性組上的投影

所以     R÷S ={a1}