天天看點

《資料庫技術原理與應用教程第2版》——3.5資訊世界與邏輯模型

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

3.5資訊世界與邏輯模型

資訊世界是資料庫的世界,該世界着重于資料庫系統的構造與操作。資訊世界由邏輯模型描述。

由于資料庫系統不同的實作手段與方法,是以邏輯模型的種類很多,目前常用的有層次模型、網狀模型、關系模型、面向對象模型、謂詞模型及對象關系模型等。其中,層次模型發展最早并盛行于20世紀的60~70年代。網狀模型出現稍晚,且具有比層次模型更為優越的性能,它盛行于20世紀70~80年代。關系模型的概念出現于1970年,但由于在實作上的困難,直到20世紀70年代後期才出現實用性系統,并在80年代開始實用化。面向對象模型出現于20世紀的80年代,在90年代開始實用化。謂詞邏輯模型出現于20世紀70年代末期,它表示力強,表示形式簡單,已成為演繹資料庫及知識庫的主要模型。面向對象模型與謂詞邏輯模型既是概念模型又可作為邏輯模型。對象關系模型是一種關系模型的面向對象擴充,它的概念模型是擴充的er模型,它也可以被視為面向對象模型的特例。上面的5種邏輯模型分别與前面的四種概念模型相對應,它們的對應關系見表3-3。

《資料庫技術原理與應用教程第2版》——3.5資訊世界與邏輯模型

表3-3邏輯模型與概念模型的對應關系

本章将重點介紹關系模型。

關系模型(relational model)的基本資料結構是二維表,簡稱表(table)。大家知道,表格方式在日常生活中應用很廣,特别是在商業系統中,如金融、财務處理經常使用表格形式表示資料架構,這給了我們一個啟發,用表格作為一種資料結構有着廣泛的應用基礎,關系模型即是以此思想為基礎建立起來的。

關系模型中的操縱與限制也是建立在二維表上的,它包括對一張表及多張表的查詢、删除、插入及修改操作,以及相應于表的限制。

關系模型的思想是ibm公司的efcodd于1970年在一篇論文中提出的,他在該年6月的acm上所發表的論文《大型共享資料庫的關系模型》(a relational model for large shared data banks)中提出了關系模型與關系模型資料庫的概念與理論,并用數學理論作為該模型的基礎支撐。由于關系模型有很多誘人的優點,是以,從那時起就有很多人轉向此方面的研究,并在算法與實作技術上取得了突破。1976年以後出現了商用的關系模型資料庫管理系統,如ibm公司在ibm370機上實作的systemr系統,美國加州大學在dec的pdp11機上實作的基于unix的ingres系統,codd也因他所提出的關系模型與關系理論這項開創性工作而榮獲了1981年計算機領域的最高獎——圖靈(turing)獎。

關系模型資料庫由于其結構簡單、使用友善、理論成熟而吸引了衆多的使用者,在20世紀80年代以後成為資料庫系統中的主流模型,很多著名的系統紛紛出現并占領了資料庫應用的主要市場。目前,主要産品有oracle、sql server、db2等。關系模型資料庫管理系統的資料庫語言也由多種形式而逐漸統一成一種标準化形式,即sql語言。

3.5.3關系模型的資料結構、操縱和限制

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

(1)表結構

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

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

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

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

《資料庫技術原理與應用教程第2版》——3.5資訊世界與邏輯模型

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

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

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

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

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

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

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

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

(2)關系

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

<code>r(a1, a2, …,an)</code>

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

<code>s(sno,sn,sd,sa)</code>

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

其中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模型與關系間的比較。

《資料庫技術原理與應用教程第2版》——3.5資訊世界與邏輯模型

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

《資料庫技術原理與應用教程第2版》——3.5資訊世界與邏輯模型

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

(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。

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