關係模型

關係模型

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

簡介

關係模型關係模型

關係模型是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的元數相同。

3.笛卡爾積

設關係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’

相關詞條

相關搜尋

熱門詞條

聯絡我們