天天看點

《資料庫技術原理與應用教程》一3.5.3關系模型的資料結構、操縱和限制

本節書摘來華章計算機《資料庫技術原理與應用教程》一書中的第3章 ,第3.5.3節,徐潔磐 操鳳萍 編著更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

關系是一種數學理論,運用這種理論所得到的邏輯模型稱關系模型,關系模型由關系資料結構、關系操縱及關系限制三部分組成。

1 關系資料結構

(1)表結構

關系模型統一采用二維表結構。二維表由表架構(frame)及表元組(tuple)組成。表架構由n個命名的屬性組成,n稱為屬性元數(arity),每個屬性有一個取值範圍(即值域)。

在表架構中可以按行存放資料,每行資料稱為一個元組,或稱表的執行個體(instance)。實際上,一個元組由n個元組分量組成,每個元組分量是表架構中每個屬性的投影值。一個表架構可以存放m個元組,m稱為表的基數(cardinality)。

一個n元表架構及架構内m個元組構成了一個完整的二維表。表34給出了二維表的一個例子,這是一個有關學生(s)的二維表。

表3-4二維表的一個執行個體

《資料庫技術原理與應用教程》一3.5.3關系模型的資料結構、操縱和限制

二維表一般滿足下面七個性質:

二維表中元組個數是有限的——元組個數有限性。

二維表中元組均不相同——元組的唯一性。

二維表中元組的次序可以任意交換——元組的次序無關性。

二維表中元組的分量是不可分割的基本資料項——元組分量的原子性。

二維表中屬性名各不相同——屬性名唯一性。

二維表中屬性與次序無關——屬性的次序無關性(但屬性次序一經确定就不能更改)。

二維表中屬性列中分量具有與該屬性相同值域——分量值域的同一性。

(2)關系

關系(relation) 是二維表的一種抽象,它是關系模型的基本資料機關。具有n個屬性的關系稱n元關系,n=0時稱空關系。每個關系有一個名稱(即關系名),關系名及關系中的屬性構成了關系架構。設關系名為r,其屬性為a1, a2, …, an,則該關系的架構是:

r(a1, a2, …,an)

表34所示的關系架構可以表示成:

s(sno,sn,sd,sa)

每個關系有m個元組,設關系的架構為r(a1, a2,…, an),則其元組必具有下面的形式:

(a11, a12, … , a1n)

(a21, a22, … , a2n)

(am1, am2, … , amn)

其中aij(i∈{1,2,…,n},j∈{1,2,…,m})為元組分量。

按關系架構所組成的關系元組集合可構成一個關系。如表34所示的關系r可表示為:r={(98001,張曼英,cs,18),(98002,丁一明,cs,20),(98003,王愛國,cs,18),(98004,李強,cs,21)}。

一個語義相關的關系集合構成一個關系資料庫(relational database)。而語義相關的關系架構集合則構成關系資料庫模式(relational database schema),簡稱關系模式(relational schema)。

關系模式支援子模式,關系子模式是關系資料庫模式中使用者所見到的那部分資料描述。關系子模式也是二維表結構,它對應着使用者資料庫,即視圖(view)。

關系與二維表是一個概念的兩種不同表示形式,一般在理論研究中用關系讨論而在實際應用中則用二維表表示,在本書中基本上按此方法但并不嚴格區分。

(3)鍵

鍵是關系模型中的一個重要概念,它具有辨別元組、建立元組間聯系等重要作用。

鍵(key):二維表中凡能唯一最小辨別元組的屬性集稱為該表的鍵。

候選鍵(candidate key):二維表中可能有若幹個鍵,它們稱為該表的候選鍵。

主鍵(primary key):從二維表的所有候選鍵中選取一個作為使用者使用的鍵稱為主鍵。主鍵一般也簡稱鍵。

外鍵(foreign key):若表a中的某屬性集是表b的鍵,則稱該屬性集為a的外鍵。

表一定有鍵,因為如果表中所有屬性子集均不是鍵則至少表中屬性全集必為鍵,是以也一定有主鍵。

(4)關系與er模型

雖然關系的結構簡單,但它的表示範圍廣,er模型中的屬性、實體(集)及聯系均可用它表示,表35給出了er模型與關系間的比較。

《資料庫技術原理與應用教程》一3.5.3關系模型的資料結構、操縱和限制

在關系模型中,關系既能表示實體集又能表示聯系。表36給出了某公司職工間上下級聯系的關系表示。

《資料庫技術原理與應用教程》一3.5.3關系模型的資料結構、操縱和限制

2關系操縱

關系模型的資料操縱就是建立在關系上的一些操作,一般有查詢、删除、插入及修改四種操作。

(1)資料查詢

使用者可以查詢關系資料庫中的資料,它包括一個關系内的查詢以及多個關系間的查詢。

1)一個關系内查詢的基本機關是元組分量,其基本過程是先定位後操作。所謂定位,包括縱向定位與橫向定位,縱向定位就是指定關系中的一些屬性(稱列指定),橫向定位就是選擇滿足某些邏輯條件的元組(稱行選擇)。通過縱向與橫向定位後就可确定一個關系中的元組分量了。在定位後即可進行查詢操作,即将定位的資料從關系資料庫中取出并放入至指定記憶體。

2)多個關系間的資料查詢可分為3步進行。第1步将多個關系合并成一個關系,第2步對合并後的一個關系進行定位,最後進行查詢操作。其中,第2步與第3步可看作一個關系内的查詢,故我們隻介紹第1步。多個關系的合并可分解成兩個關系的逐漸合并,如果有3個關系r1、r2與r3,那麼合并過程是先将r1與r2合并成r4,然後再将r4與r3合并成最終結果r5。

是以,對關系資料庫的查詢可以分解成三個基本定位操作與一個查詢操作:

一個關系内的屬性指定。

一個關系内的元組選擇。

兩個關系的合并。

查詢操作。

(2)資料删除

資料删除的基本機關是元組,用于将指定關系内的指定元組删除。它也分為定位與操作兩部分,其中定位部分隻需要橫向定位而無需縱向定位,定位後即是執行删除操作。是以,資料删除可以分解為兩個基本操作:

關系中元組的删除操作。

(3)資料插入

資料插入僅用于一個關系,即在指定關系中插入一個或多個元組。插入資料時不需定位,隻需将元組插入關系。是以,資料插入隻有一個基本操作:

關系中的元組插入操作。

(4)資料修改

資料修改是在一個關系中修改指定的元組與屬性值。資料修改不是一個基本操作,它可以分解為兩個更基本的操作:先删除需修改的元組,然後插入修改後的元組。

(5)關系操作小結

以上四種操作的對象都是關系,而操作結果也是關系,是以它們都是建立在關系上的操作。這四種操作可以分解成6種基本操作。這樣,關系模型的資料操縱可以總結如下:

1)關系模型資料操縱的對象是關系,而操縱結果也是關系。

2)關系模型基本操作有如下六種(其中三種為定位操作,三種為查詢、插入及删除操作):

關系屬性的指定。

關系元組的選擇。

兩個關系合并。

關系的查詢操作。

關系中元組的插入操作。

(6)空值處理

在關系元組的分量中允許出現空值(null value)以表示資訊的空缺,空值的含義如下:

未知的值。

不可能出現的值。

在出現空值的元組分量中一般可用null表示。目前的關系資料庫系統都支援空值,但是它們都具有如下兩個限制:

1)關系的主鍵中不允許出現空值。因為主鍵是關系元組的辨別,如主鍵為空值則失去了其辨別的作用。

2)需要定義有關空值的運算。在算術運算中如果出現空值則其結果為空值,在比較運算中如果出現空值則其結果為f(假)。此外,在統計時,如果sum、avg、max、min中有空值輸入,其結果也為空值,而在作count時如有空值輸入則其值為0。

3 關系中的資料限制

關系模型允許定義三類資料限制,分别是實體完整性限制、參照完整性限制以及使用者定義的完整性限制。此外,關系的安全性限制、故障恢複與多使用者的并發控制實際上也是資料限制,其具體說明可見第5章。