關係模型

關係模型

關係實際上就是關係模式在某一時刻的狀態或內容。也就是說,關係模式是型,關係是它的值。關係模式是靜態的、穩定的,而關係是動態的、隨時間不斷變化的,因為關係操作在不斷地更新著資料庫中的數據。但在實際當中,常常把關係模式和關係統稱為關係,讀者可以從上下文中加以區別。

簡介


關係模型
關係模型
關係模型是1970年由E.F.Codd提出的。
它和層次、網狀模型相比,有以下特點:
1.數據結構簡單(二維表格)
2.紮實的理論基礎。
a.關係運算理論
b.關係模式設計理論
定義
網狀資料庫和層次資料庫已經很好地解決了數據的集中和共享問題,但是在數據獨立性和抽象級別上仍有很大欠缺。用戶在對這兩種資料庫進行存取時,仍然需要明確數據的存儲結構,指出存取路徑。而後來出現的關係資料庫較好地解決了這些問題。關係資料庫理論出現於60年代末到70年代初。1970年,IBM的研究員E.F.Codd博士發表《大型共享數據銀行的關係模型》一文提出了關係模型的概念。後來Codd又陸續發表多篇文章,奠定了關係資料庫的基礎。關係模型有嚴格的數學基礎,抽象級別比較高,而且簡單清晰,便於理解和使用。但是當時也有人認為關係模型是理想化的數據模型,用來實現DBMS是不現實的,尤其擔心關係資料庫的性能難以接受,更有人視其為當時正在進行中的網狀資料庫規範化工作的嚴重威脅。為了促進對問題的理解,1974年ACM牽頭組織了一次研討會,會上開展了一場分別以Codd和Bachman為首的支持和反對關係資料庫兩派之間的辯論。這次著名的辯論推動了關係資料庫的發展,使其最終成為現代資料庫產品的主流。
關係數據模型提供了關係操作的特點和功能要求,但不對DBMS的語言給出具體的語法要求。對關係資料庫的操作是高度非過程化的,用戶不需要指出特殊的存取路徑,路徑的選擇由DBMS的優化機制來完成。Codd在70年代初期的論文論述了範式理論和衡量關係系統的12條標準,用數學理論奠定了關係資料庫的基礎。Codd博士也以其對關係資料庫的卓越貢獻獲得了1981年ACM圖靈獎。
關係數據模型是以集合論中的關係概念為基礎發展起來的。關係模型中無論是實體還是實體間的聯繫均由單一的結構類型——關係來表示。在實際的關係資料庫中的關係也稱表。一個關係資料庫就是由若干個表組成。

基本術語


關係模型的基本術語共有十三個,它們分別是:
1、關係:一個關係對應著一個二維表,二維表就是關係名。
2、屬性和值域:在二維表中的列,稱為屬性。屬性的個數稱為關係的元或度。列的值稱為屬性值;屬性值的取值範圍為值域。
3、關係模式:在二維表中的行定義,即對關係的描述稱為關係模式
4、元組:在二維表中的一行,稱為一個元組。
5、分量:元組中的一個屬性值
6、鍵或者碼:如果在一個關係中存在這樣的一個屬性,使得在該關係的任何一個關係狀態中的兩個元組,在該屬性上的值的組合都不同,即這些屬性的值都能夠用來唯一標識該關係的元組,則稱這些屬性為該關係的鍵或者碼。
7、超鍵或者超碼:如果在關係的一個鍵中移去某個屬性,它仍然是這個關係的鍵,則稱這樣的鍵為關係的超鍵或者超碼。
8、候選鍵或者候選碼:如果在關係的一個鍵中不能移去任何一個屬性,否則它就不是這個關係的鍵,則稱這個被指定的候選鍵為該關係的候選鍵或者候選碼。
9、主鍵或者主碼:在一個關係的若干候選鍵中指定一個用來唯一標識該關係的元組,則稱這個被指定的候選鍵為該關係的主鍵或者主碼。
10、全鍵或者全碼:一個關係模式中的所有屬性的集合。
11、主屬性和非主屬性:關係中包含在任何一個候選鍵中的屬性稱為主屬性,不包含在任何一個候選鍵中的屬性為非主屬性。
12、外鍵或者外碼:關係中的某個屬性雖然不是這個關係的主鍵,或者只是主鍵的,但它卻是另外一個關係的主鍵時,則稱之為外鍵或者外碼。
13、參照關係與被參照關係:是指以外鍵相互聯繫的兩個關係,可以相互轉化。

二維表格

關係模型中,欄位稱為屬性,欄位值稱為屬性值,記錄類型稱為關係模型。關係模式名是R。記錄稱為元組,元組的集合稱為關係或實例。一般用大寫字母A、B、C、……表示單個屬性,用小寫字母表示屬性值。關係中屬性的個數稱為“元數”,元組的個數稱為“基數”。例子的關係元數為5,基數為2。有時也稱關係為表格,元組為行,屬性為列。

鍵,又稱碼,由一個或幾個屬性組成,分為以下幾種:
a.超鍵:如果在關係的一個鍵中移除某個屬性,它仍然是這個關係的鍵,則這樣的鍵成為超鍵。
b.候選鍵:不含多餘屬性的超鍵稱為候選鍵。即在候選鍵中,若要再刪除屬性,就不是超鍵了。
c.主鍵:用戶選作元組標識的一個候選鍵稱為主鍵。一般情況下,鍵指主鍵。

關係的定義和性質

關係是個元數為K(K>=1)的元組的集合。
關係是一種規範化的表格,他有以下限制:
a.關係中的每一個屬性值都是不可分解的。
b.關係中不允許出現相同的元組。
c.關係中不考慮元組之間的順序。
d. 元組中屬性也是無序的。
關係模式、關係子模式和存儲模式
關係模型中,概念模式是關係模式的集合,外模式是關係子模式的集合,內模式是存儲模式的集合。
1.關係模式
關係模式實際就是記錄類型,包括:模式名、屬性名、值域名及模式的主鍵。他不涉及物理存儲方面的描述,只是對數據特性的描述。
2.關係子模式
子模式是用戶所用到的那部分數據的描述。除了指出用戶的數據外,還應指出模式和子模式之間的對應性。中國。網管聯盟
3. 存儲模式
關係存儲時的基本組織方式是文件,元組是文件中的記錄。由於關係模式有鍵,因此存儲一個關係能用散列方法或索引方法實現。
關係模型的三類完整性規則
1.實體完整性規則
這條規則需求關係中元組在組成主鍵的屬性上不能有空值。如有空值,那麼主鍵值就起不了唯一標識元組的作用。
2.參照完整性規則
如果屬性集K是關係模式R1的主鍵,K也是關係模式R2的外鍵,那麼在R2的關係中,K的取值只允許有兩種可能,或為空值,或等於R1關係中某個主鍵值。
使用時應注意:
a.外鍵和相對應的主鍵能不同名,只要定義在相同的值域上即可。
b.R1和R2也能是同一個關係模式,表示了屬性之間的聯繫。
c. 外鍵值是否允許為空,應視具體問題而定。
3.用戶定義的完整性規則
這是針對具體數據的約束條件,由應用環境而定。
關係模型的形式定義
一、三個組成部分:數據結構、數據操作和完整性規則。
1.關係模型的基本數據結構就是關係。
2.關係運算分為關係代數和關係演算。
3.關係模型的三類完整性規則。
二、關係代數
關係資料庫的數據操作分為查詢和更新兩類。查詢語句用於各種檢索操作,更新操作用於插入、刪除和修改等操作。
關係查詢語言根據其理論基礎的不同分成兩大類:
1.關係代數語言:查詢操作是以集合操作為基礎運算的DML語言。
2.關係演算語言:查詢操作是以謂詞演算為基礎運算的DML語言。
關係代數的五個基本運算
關係代數是以關係為運算對象的一組高級運算的集合。關係定義為元數相同的元組的集合。集合中的元素為元組,關係代數中的操作可分為兩類:
傳統的集合操作:並、差、交、笛卡爾積。
擴充的關係操作:投影,選擇,聯接和自然聯接,除。
1.並
設有兩個關係R和S具有相同的關係模式,R和S的並是由屬於R和S的元組構成的集合,記為R∪S。
注意:R和S的元數相同。中國網管聯盟
2.差
設有兩個關係R和S具有相同的關係模式,R和S的差是由屬於R但不屬於S的元組構成的集合,記為R-S。
注意:R和S的元數相同。
設關係R和S的元數分別為r和s。定義R和S的笛卡爾積是個(r+s)元的元組集合,每個元組的前r個分量(屬性值)來自R的一個元組,后s個分量來自S的一個元組,記為R×S。
若R有M個元組,S有n個元組,則R×S 有m×n個元組。
4.選擇
從關係中找出滿足給定條件的所有元組稱為選擇。其中的條件是以邏輯表達式給出的,該邏輯表達式的值為真的元組被選取。這是從行的角度進行的運算,即水平方向抽取元組。經過選擇運算得到的結果能形成新的關係,其關係模式不變,但其中元組的數目小於或等於原來的關係中的元組的個數,他是原關係的一個子集。
記為: δF(R)≡{t?t屬於R∧F(t)=true}
5.投影
從關係中挑選若干屬性組成的新的關係稱為投影。這是從列的角度進行運算。經過投影運算能得到一個新關係,其關係所包含的屬性個數往往比原關係少,或屬性的排列順序不同。如果新關係中包含重複元組,則要刪除重複元組。中國網管論壇
記為:∏A(R)={t[A] ?t屬於R} A為R中的屬性列。
例如: ∏3,1(R)
關係代數的四個組合操作
1.交
關係R和S的交是由屬於R又屬於S的元組構成的集合,記為R∩S。R和S需求定義在相同的關係模式上。
R∩S≡ {t?t屬於R∧t屬於S},R和S的元數相同。
2.聯接
聯接有兩種:θ聯接和F聯接(θ是算術比較符,F是公式)。
⑴ θ聯接
θ聯接是從關係R和S的笛卡爾積中選取屬性值滿足某一θ操作的元組,記為:
R?×i θj?S,這裡i和j 分別是關係R和S中第 i個、第j個屬性的序號。
R?×i θj?S≡ δi θ (r+j)( R×S )
如果θ是等號“=”,該聯接操作稱為“等值聯接”。
⑵F聯接
F聯接操作是從關係R和S的笛卡爾積中選取屬性值滿足某一公式F的元組,記為:
R?×F?S,這裡的F是形為F1∧F2∧…∧Fn的公式,每一個f都是形為i θj的式子,而i和j 分別是關係R和S中第 i個、第j個屬性的序號。
中國網管聯盟
3.自然聯接
兩個關係R和S的自然聯接用R?×?S表示。具體計算過程如下:
①計算R×S
②設R和S的公共屬性是A1,……,Ak,挑選R×S中滿足R .A1=S.A1,……,R.Ak=S.Ak的那些元組
③去掉S.A1,……, S.Ak的這些列。
如果兩個關係中沒有公共屬性,那麼其自然聯接就轉化為笛卡爾積操作。
4.除法
給定關係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上投影的集合。
關係代數表達式及其應用實例
在關係代數運算中,把由五個基本操作經過有限次複合的式子稱為關係代數表達式。這種表達式的結果仍然是個關係。能使用關係代數表達式表示各種數據查詢操作。
例題:設教學庫中有三個關係:
學生關係S(S#,SNAME,AGE,SEX)
學習關係SC(S#,C#,GRADE)
課程關係C(C#,CNAME,TEACHER)
下面用關係代數表達式表達各個查詢語句
1.檢索學習課程號為C2的學生學號和成績。
2.檢索學習課程號為C2的學生學號和姓名。
3.檢索選修課程名為MATHS的學生學號和姓名。
4.檢索選修課程號為C2或C4的學生學號。
5.檢索至少選修課程號為C2或C4的學生學號。
6.檢索不學C2課的學生姓名有年齡。
7.檢索學習全部課程的學生姓名。
1. ∏S#,GRADE(δC#=‘C2’(SC))
或∏1,3(δ2=‘C2’