【資料庫系統】資料庫系統概論====第二章 關系資料庫
關系資料庫簡介
1970年IBM公司的E.F.Codd提出關系資料模型
1972年提出了關系的第一、第二、第三范式
1974年提出了關系的BC范式
80年代后,關系資料庫系統成為最重要、最流行的資料庫系統
典型實驗系統:System R、University INGRES
典型商用系統:ORACLE、DB2、SYBASE、INGRES、INFORMIX
2.1關系資料結構及形式化定義
2.1.1關系
單一的資料結構–關系
現實世界的物體以及物體間的各種聯系均用關系來表示
邏輯結構–二維表
從用戶角度,關系模型中資料的邏輯結構是一張二維表,關系模型是建立在集合代數的基礎上,
- 域
定義:域是一組具有相同資料型別的值的集合, - 笛卡爾積
定義:給定一組域D1,D2,…,Dn,這些域可以是相同的,D1,D2,…,Dn的笛卡爾積為:
D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},所有域的所有取值的一個組合,
元組:笛卡爾積中的每一個元素(d1,d2,…,dn)稱作一個n元組或簡稱元組,
分量:笛卡爾積元素(d1,d2,…,dn)中的每一個值di稱作一個分量,
基數:若Di(i=1,2,…,n)為有限集,其基數為mi(i=1,2,…,n),則D1×D2×…×Dn的基數M為:

笛卡爾積的表示方法:笛卡爾積可表示為一個二維表,表中的每行對應一個元組,表中的每列對應一個域,
D1,D2,…,Dn的笛卡爾積的子集不是都有實際含義,只有某個子集才有實際含義, - 關系
1)關系
D1×D2×…×Dn的子集稱作在域D1,D2,…,Dn上的關系,表示為R(D1,D2,…,Dn),
R表示關系名,n表示關系的目或度,
2)元組
關系中的每個元素是關系中的元組,通常用t表示,
3)單元關系與二元關系
當n=1時,稱該關系為單元關系或一元關系,
當n=2時,稱 該關系為二元關系,
4)關系的表示
關系也是一個二維表,表的每行對應一個元組,表的每列對應一個域,一個屬性,
5)屬性
關系中不同列可以對應相同的域,為了加以區分,必須對每列起一個名字,稱為屬性,
n目關系必有n個屬性,
6)碼
候選碼:若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼,
簡單的情況:候選碼只包含一個屬性,
全碼:最極端的情況:關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼,
主碼:若一個關系有多個候選碼,則選定其中一個為主碼,
主屬性:候選碼的諸屬性稱為主屬性,
非主屬性:不包含在任何候選碼中的屬性或非碼屬性,
7)三類關系
①基本關系(基本表或基表):實際存在的表,是實際存盤資料的邏輯表示,
②查詢表:查詢結果對應的表,
③視圖表:由基本表或其他視圖表匯出的表,是虛表,不對應實際存盤的資料,
8)基本關系的性質
①列是同質的,
②不同的列可出自同一個域,其中的每一列稱為一個屬性,不同的屬性要給予不同的屬性名,
③列的順序無所謂,列的次序可以任意交換,
④任意兩個元組的候選碼不能相同,
⑤行的順序無所謂,行的次序可以任意交換,
⑥分量必須取原子值,這是規范條件中最基本的一條,
2.1.2關系模式
- 什么是關系模式
關系模式是對關系的描述,關系模式是型,關系是值,
1)元組集合的結構
屬性構成、屬性來自的域、屬性與域之間的映像關系,
2)一個關系通常由賦予它的元組語意確定,
3)現實的世界中還存在著完整性約束, - 定義關系模式
關系模式可以形式化地表示為:R(U,D,DOM,F)
R:關系名
U:組成該關系的屬性名集合
D:屬性組U中屬性所來自的域
DOM:屬性向域的映像集合
F:屬性間的資料依賴關系集合 - 關系模式與關系
關系模式是靜態的、穩定的,
關系是動態的、隨時間不斷變化的,
關系是關系模式在某一時刻的狀態或內容,在實際作業中關系模式和關系往往統稱為關系,需要通過背景關系加以區別,
2.1.3關系資料庫
- 關系資料庫
在一個給定的應用領域中,所有關系的集合構成一個關系資料庫, - 關系資料庫的型與值
1)關系資料庫的型:關系資料庫模式,對關系資料庫的描述,
2)關系資料庫模式:若干域的定義,在這些域上定義的若干關系模式,
3)關系資料庫的值:厝模式在某一時刻對應的關系的集合,簡稱為關系資料庫,
2.1.4關系模型的存盤結構
- 有的關系資料庫管理系統中一個表對應一個作業系統檔案,將物理資料組織交給作業系統完成,
- 有的關系資料庫管理系統從作業系統那里申請若干個大的檔案,自己劃分檔案空間組織表、索引表等存盤結構,并進行存盤管理,
2.2關系資料結構
2.2.1基本關系操作
- 常用的關系操作
查詢:選擇、投影、連接、除、并、交、差等,其中:選擇、投影、并、差、笛卡爾積是5種基本操作,
資料更新:插入、洗掉、修改,
查詢的表達能力是其中最主要的部分, - 關系操作的特點
集合操作方式:操作的物件和結果都是集合,一次一集合的方式,
2.2.2關系資料庫語言的分類
- 關系代數語言
用對關系的運算來表達查詢要求,代表:ISBL - 關系演算語言
用謂詞來表達查詢要求,
①元組關系演算語言:謂詞變元的基本物件是元組變數,代表:APLHA,QUEL
②域關系演算語言:謂詞變元的基本物件是域變數,代表:QBE - 具有關系代數和關系演算雙重特點的語言
代表:SQL
2.3關系的完整性
關系模型中有三類完整性約束:物體完整性、參照完整性和用戶定義完整性,
其中物體完整性、參照完整性是關系模型必須滿足的完整性約束條件,成為關系的兩個不變性,應該由關系系統自動支持,
用戶定義的完整性是應用領域需要遵循的約束條件,體現了具體領域中的語意約束,
2.3.1物體完整性
物體完整性規則是指若屬性A是基本關系R的主屬性,則屬性A不能取空值,
空值就是“不知道”或“不存在”或“無意義”的值,
物體完整性規則的說明:
1)物體完整性規則是針對基本關系而言的,一個基本表通常對應現實世界的一個物體集,
2)現實世界中的物體是可區分的,即它們具有某種唯一性標識,
3)關系模型中以主碼作為唯一性標識,
4)主碼中的屬性即主屬性不能取空值,
主屬性取空值,就說明存在某個不可標識的物體,即存在不可區分的物體,這與第2)點相矛盾,因此這個規則稱為物體完整性,
物體完整性規則規定基本關系的所有主屬性都不能取空值,
2.3.2參照完整性
- 關系間的參考
在關系模型中物體及物體間的聯系都是用關系來描述的,存在著關系與關系間的參考, - 外碼
定義:設F是基本關系R的一個或一組屬性,但不是關系R的碼,如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外碼,
基本關系R稱為參照關系
基本關系S稱為被參照關系
關系R和S不一定是不同的關系,
目標關系S的主碼Ks和參照關系的外碼F必須定義在同一個(或一組)域上,
外碼并不一定要與相應的主碼同名,當外碼與相應的主碼屬于不同關系時,往往取相同的名字,以便于識別, - 參照完整性規則
參照完整性規則:若屬性(或屬性組)F是基本關系R的外碼,它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:
或者取空值(F的每個屬性值均為空值);
或者等于S中某個元組的主碼值,
2.3.3用戶定義的完整性
針對某一具體關系資料庫的約束條件,反映某一具體應用所涉及的資料必須滿足的語意要求,
關系模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不要由應用程式承擔這一功能,
2.4關系代數
關系代數是一種抽象的查詢語言,是對關系的運算來表達查詢,
關系代數的運算物件是關系,運算結果也是關系,
關系代數按運算子的不同可分為傳統的集合運算和專門的關系運算兩類,
集合運算是從關系的水平方向進行的角度進行,
專門的關系運算不僅涉及行而且涉及列,

2.4.1傳統的集合運算
- 并
關系R和S具有相同的目n(即兩個關系都有n個屬性),相應的屬性取自同一個域,
R與S的并運算表示為R∪S:R∪S={t|t∈RVt∈S},
運算結果為:n目關系,由屬于R或屬于S的元組組成, - 差
關系R和S具有相同的目n(即兩個關系都有n個屬性),相應的屬性取自同一個域,
R與S的差運算表示為R-S:R-S={t|t∈R∧t?S},
運算的結果為:n目關系,由屬于R而不屬于S的所有元組組成, - 交
關系R和S具有相同的目n(即兩個關系都有n個屬性),相應的屬性取自同一個域,
R與S的交運算表示為R∩S:R∩S={t|t∈R∧t∈S},R∩S=R-(R-S),
運算結果為:n目關系,由既屬于R又屬于S的元組組成, - 笛卡爾積
嚴格地講應該是廣義的笛卡爾積,
R:n目關系,k1個元組,S:m目關系,k2個元組
R與S的笛卡爾積運算表示為R×S:

運算結果為:行:k1×k2個元組,列:(n+m)列元組的集合,其中元組的前n列是關系R的一個元組,后m列是關系S的一個元組,
2.4.2專門的關系運算
關系運算包括:選擇、投影、連接、除運算,
相關記號說明:
①關系模式為R(A1,A2,…,An),它的一個關系為R,t∈R表示t是R的一個元組,t[Ai]則表示元組t中相應于屬性Ai的一個分量,
②若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,則A稱為屬性列或屬性組,
t[A]=(t[Ai1,],t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合,?A 則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的屬性組,
③R為n目關系,S為m目關系,Tr∈R,Ts∈S,Tr ⌒Ts 稱為元組的連接,Tr⌒Ts 是一個n+m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組,
④給定一個關系R(X,Z),X和Z為屬性組,當t[X]=x時,x在R中的象集Zx={t[Z]|t∈R,t[X]=x},它表示R中屬性組X上值為x的諸元組在Z上分量的集合,
- 選擇
選擇又稱為限制,在關系R中選擇滿足給定條件的諸元組,記作:

其中:F為選擇條件,基本形式為:

其中 θ表示比較運算子,它可以是>,≥,<,≤, =或<>,X1,Y1等是屬性名,或為常量,或為簡單函式;屬性名也可以用它的序號來代替,
條件運算式中的運算子如下表:

- 投影
從R中選擇出若干屬性列組成新的關系,

其中:A:R中的屬性列,投影操作主要是從列的角度進行運算,投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行), - 連接
又稱為θ連接,表示從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組,

A和B:分別為R和S上度數相等且可比的屬性組,
θ:比較運算子,
運算結果:從R和S的廣義笛卡爾積R×S中選取(R關系)在A屬性組上的值與(S關系)在B屬性組上滿足比較關系θ的元組,
兩類常用連接運算:
①等值連接
θ為“=”的連接運算稱為等值連接,
等值連接的含義:從關系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,

②自然連接
自然連接是一種特殊的等值連接,兩個關系中進行比較的分量必須是相同屬性組,在結果中把重復的屬性列去掉,
自然連接的含義:R和S具有相同的屬性組B,

注意:自然連接還需要取消重復列,所以是同時從行和列的角度進行運算,
懸浮元組:兩個關系R和S在自然連接時,關系R和S中被舍棄的元組稱為懸浮元組,
外連接:如果把懸浮元組舍棄的元組也保存在結果關系中,而在其他屬性上填空值(Null),這種連接就叫做外連接,
左外連接:如果只保留左邊關系R中的懸浮元組叫做左外連接,
右外連接:如果只保留右邊關系S中的懸浮元組叫做右外連接, - 除
給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組,R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集,
R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:
元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作:

Yx:x在R中的象集,x=tr[X]
注意:除操作是同時從行和列角度進行計算,
2.5*關系演算
關系演算是以數理邏輯中的謂詞演算為基礎的,按謂詞變元的不同,關系演算可分為元組關系演算和域關系演算,
2.5.1元組關系演算語言ALPHA
元組關系演算以元組變數作為謂詞變元的基本物件,一直典型的元組關系演算語言是ALPHA語言,
ALPHA語言主要有GET,PUT,UPDATE,DELETE,DROP6條陳述句,
陳述句的基本格式是:
操作陳述句 作業空間名(運算式): 操作條件
運算式用于說明要查詢的結果,它可以是關系名或(和)屬性名,
操作條件是一個邏輯運算式,說明查詢結果要滿足的條件,用于將操作結果限定在滿足條件的元組中,操作條件可以為空,
除此之外,還可以在基本格式的基礎上加上排序要求、定額要求等,
- 檢索操作
檢索操作用GET陳述句實作
1)簡單檢索(即不帶條件的檢索)
2)限定的檢索(即帶條件的檢索)
3)帶排序的檢索
4)指定回傳元組的個數
5)用元組變數的檢索
元組變數是在某一關系范圍內變化(所以也稱范圍變數),一個關系可以設定多個元組變數,元組變數主要有兩方面的用途:
①簡化關系名,如果關系的名字很長,使用起來就會感到不方便,這時可以設定一個較短的名字的元組變數來代替關系名,
②操作條件中使用量詞時必須用元組變數,
ALPHA語言用RANGE來說明元組變數,
6)用存在量詞的檢索條件中使用量詞時必須用元組變數
7)帶有多個關系的運算式的檢索
8)用全稱量詞的檢索
9)用兩種量詞的檢索
10)用蘊含的檢索
11)聚集函式
使用查詢語言時,進行監督的計算,關系資料語言中建立了有關這類運算的標準函式庫,這類函式通常稱為聚集函式或內置函式,常用的聚集函式COUNT,TITAL,MAX,MIN,AVG等,

- 更新操作
1)修改操作
修改操作用UPDATE陳述句實作,其步驟是:
①首先用HOLD陳述句將修改的元組從資料庫中讀到作業空間中;
②然后用宿主語言修改作業空間中元組的屬性值;
③最后用UPDATE陳述句將修改后的元組送回資料庫中,注意:單純檢索資料使用GET陳述句即可,但為修改資料而讀元組時必須使用HOLD陳述句,HOLD陳述句是帶上并發控制的GET陳述句,
說明:
①如果修改操作涉及到兩個關系的話,就要執行兩次HOLD-MOVE-UPDATE操作系列,
②在ALPHA語言中,修改關系主碼的操作是不允許的,
③如果需要修改主碼值,只能先用洗掉操作洗掉該元組,然后再把具有新主碼值的元組插入到關系中,
2)插入操作
插入操作用PUT陳述句實作,其步驟是:
①首先用宿主語言在作業空間中建立新元組;
②然后用PUT陳述句把該元組存入指定的關系中,
PUT陳述句只對一個關系操作,也就是說運算式必須為單個關系名,
3)洗掉
洗掉操作用DELETE陳述句實作,其步驟為:
①用HOLD陳述句把要洗掉的元組從資料庫中讀到作業空間中;
②用DELETE陳述句洗掉該元組,
2.5.2元組關系演算
為了討論方便,先允許關系(的基數)是無限的,然后再對這種情況下定義的演算作適當的修改,保證關系演算中的每一個公式表示的是有限關系,
在元組關系演算系統中,稱{t|Φ(t)}為元組演算運算式,其中t是元組變數,Φ(t)為元組關系演算公式簡稱公式,它由原子公式和運算子組成,
原子公式有三類:
1)R(t)
R是關系名,t是元組變數,R(t)表示t是R中的元組,于是,關系R可表示為{t|R(t)}
2)t[i]Θu[j]
t和u是元組變數,Θ是算術比較運算子,t[i]Θu[j]表示斷言“元組t的第i個分量與元組u的第j個分量滿足比較關系Θ”,
3)t[i]Θc或cΘu[i]
這里c是常量,該公式表示“t的第i個分量與常量c滿足比較關系Θ”,
在關系演算中定義了“自由元組變數”和“約束元組變數”的概念,這些概念和謂詞演算中的概念完全一樣,若公式中的一個元組變數前有“全稱量詞”或“存在量詞”,則稱該變數為約束元組變數,否則稱自由元組變數,
公式可以遞回定義如下:
1)如果原子公式是公式,
2)如果Φ1,和Φ2是公式,則Φ1∧Φ2,Φ1∨Φ2,┐Φ1也是公式,分別表示為:
如果Φ1和Φ2同時為真,則Φ1∧Φ2才為真,否則為假;
如果Φ1和Φ2中一個或同時為真,則Φ1∨Φ2為真,僅當Φ1和Φ2同時為假時,Φ1∨Φ2才為假;
若Φ1為真,則┐Φ1為假,
3)若Φ是公式,則?t(Φ)也是公式,其中符號?是存在量詞符號,?t(Φ)表示:若有一個t使Φ為真,則?t(Φ)為真,否則?t(Φ)為假,
4)若Φ是公式,則?t(Φ)也是公式,其中符號?是全稱量詞符號,?t(Φ)表示:如果對所有t,都使Φ為真,則?t(Φ)為真,否則?t(Φ)為假,
5)在元組演算公式中,各種運算子的優先次序為:
①算術比較運算子最高;
②量詞次之,且?的優先級高于?的優先級;
③邏輯運算子最低,且┐的優先級高于∧的優先級,∧的優先級高于∨的優先級;
④加括號時,括號中運算子優先,同一括號內的運算子之優先級遵循①,②,③各項,
6)有限次地使用上述五條規則得到的公式是元組關系演算公式,其他公式不是元組關系演算公式,
一個元組演算運算式{t|Φ(t)}表示了使Φ(t)為真的元組集合,
關系代數的運算均可以用關系演算運算式來表示(反之亦然),
下面用關系演算運算式來表示五種基本運算:
1)并,R∪S={t|R(t)∨S(t)}
2)差,R-S={t|R(t)∧┐S(t)}
3)笛卡爾積:

4)投影

5)選擇

安全限制:把不產生無限關系的運算式稱為安全運算式,所采取的措施稱為安全限制,
安全限制通常是定義一個有限的符號集dom(Φ),dom(Φ)一定包括出現在Φ以及中間結果和最后結果的關系中的所有符號(實際上是各列中值的匯集),dom(Φ)不必是最小集,
當滿足下列條件時,元組演算運算式{t|Φ(t)}是安全的:
1)如果t使Φ(t)為真,則t的每個分量是dom(Φ)中的元素,
2)對于Φ中的每一個形如(?u)(W(u))的子運算式,若u使W(u)為真,則u的每個分量是dom(Φ)中的元素,
3)對于Φ中的每一個形如(?u)(W(u))的子運算式,若u使W(u)為假,則u的每個分量必屬于dom(Φ),換言之,若u某一分量不屬于dom(Φ),則W(u)為真,
2.5.3域關系演算語言QBE
關系演算的另一種形式是域關系演算,域關系演算以元組變數的分量即域變數作為謂詞變元的基本物件,
QBE是Query By Example(即通過例子進行查詢)的簡稱,它是基于螢屏表格的查詢語言,用戶通過終端螢屏編輯程式以填寫表格的方式構造查詢要求,而查詢結果也是以表格形式顯示,QBE中用示例元素來表示查詢結果可能的情況,示例元素實質上就是域變數,
QBE操作框架

- 檢索操作
1)簡單查詢
2)條件查詢
3)聚集函式

4)對查詢結果排序
對查詢結果按某個屬性值的升序排序,只需在相應列中填入“AO.”,按降序排序則均“DO.”,如果按多列排序,用“AO(i).”或“DO(i).”表示,其中i為排序的優先級,i值越小,優先級越高, - 更新操作
1)修改操作
修改運算子為“U.”,
在QBE中,關系的主碼不允許修改,如果需要修改繆戈元組的主碼,只能先洗掉該元組,然后再插入新的主碼的元組,
2)插入操作
插入運算子為“I.:,新插入的元組必須具有碼值,其他屬性值可以為空,
3)洗掉操作
洗掉運算子為“D.”,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1509.html
標籤:其他
