天天看點

《資料庫原理與應用(第3版)》——3.1 關系資料模型的組成

本節書摘來自華章出版社《資料庫原理與應用(第3版)》一 書中的第3章,第3.1節,作者:何玉潔,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

關系資料庫使用關系資料模型組織資料。這種思想源于數學,最早提出類似方法的是cod-asyl(資料系統語言會議)于1962年發表的“資訊代數”一文,之後,david child于1968年在計算機上實作了集合論資料結構。

而真正系統、嚴格地提出關系資料模型的是ibm的研究員e.f.codd,他于1970年在美國計算機學會會刊(《communication of the acm》)上發表了題為“a relational model of data for shared data banks”的論文,開創了資料庫系統的新紀元。此後,他連續發表了多篇論文,奠定了關系資料庫的理論基礎。

關系資料模型由關系資料結構、關系操作集合和資料完整性限制三部分組成。

關系資料模型源于數學,它用二維表來組織資料,而這個二維表在關系資料庫中就稱為關系。關系資料庫就是表或者說是關系的集合。

關系系統要求讓使用者所感覺的資料就是一張張表,如2.3.3節所示的學生表和選課表。在關系系統中,表是邏輯結構而不是實體結構。實際上,系統在實體層可以使用任何有效的存儲結構來存儲資料,如有序檔案、索引、散清單、指針等。是以,表是對實體存儲資料的一種抽象表示——對很多存儲細節的抽象,如存儲記錄的位置、記錄的順序、資料值的表示,以及記錄的通路結構,如索引等,對使用者來說都是不可見的。

關系資料模型給出了關系操作的能力。關系資料模型中的操作包括:

傳統的關系運算:并(union)、交(intersection)、差(difference)、廣義笛卡兒乘積(extended cartesian product)。

專門的關系運算:選擇(select)、投影(project)、連接配接(join)、除(divide)。

有關的資料操作:查詢(query)、插入(insert)、删除(delete)、修改(update)。

關系模型的操作對象是集合,而不是單個的行,也就是操作的資料以及操作的結果都是完整的表(包括隻包含一行資料的表,甚至不包含任何資料的空表)。而非關系型資料庫系統中典型的操作是一次一行或一次一個記錄。是以,集合處理能力是關系系統差別于其他系統的一個重要特征。

在非關系模型中,各個資料記錄之間是通過指針等方式連接配接的,當要定位到某條記錄時,需要使用者自己按指針的連結方向逐層查找,我們稱這種查找方式為使用者“導航”。而在關系資料模型中,由于是按集合進行操作,是以,使用者隻需要指定資料的定位條件,資料庫管理系統就可以自動定位到該資料記錄,而不需要使用者來導航。這也是關系資料模型在資料操作上與非關系模型的本質差別。

例如,若采用層次資料模型,對第2章圖2-6所示的層次結構,若要查找“計算機學院軟體工程教研室的張海濤老師的資訊”,則首先需要從根節點的“學院”開始,根據“計算機”學院指向的“教研室”節點的指針,找到“教研室”層次,然後在“教研室”層次中逐個查找(這個查找過程也許是通過各節點間的指針實作的),直到找到“軟體工程”節點,然後根據“軟體工程”節點指向“教師”節點的指針,找到“教師”層次,最後在“教師”層次中逐個查找教師名為“張海濤”的節點,此時該節點包含的資訊即所要查找的資訊。這個過程的示意圖如圖3-1所示,其中的虛線表示沿指針的逐層查找過程。

《資料庫原理與應用(第3版)》——3.1 關系資料模型的組成

而如果是在關系模型中查找資訊,比如在表3-1所示的“學生”關系中查找“資訊系學号為0521101的學生的詳細資訊”,則使用者隻需要提出這個要求即可,其餘的工作就交給資料庫管理系統來實作了。對使用者來說,這顯然比在層次模型中查找資料要簡單得多。

關系模型的資料操作主要包括四種:查詢、插入、删除和更改資料。關系資料庫中的資訊隻有一種表示方式,就是表中的行列位置有明确的值。這種表示是關系系統中唯一可行的方式(當然,這裡指的是邏輯層)。特别地,關系資料庫中沒有連接配接一個表到另一個表的指針。在表3-1和表3-2中,表3-1所示的學生表的第1行資料與表3-2所示的學生選課表中的第1行(當然也與第2、3、4行)有聯系,因為0512101号學生選了課程。但在關系資料庫中這種聯系不是通過指針來實作的,而是通過學生表中“學号”列的值與學生選課表中“學号”列的值關聯的(學号值相等)。但在非關系系統中,這些資訊一般由指針來表示,這種指針對使用者來說是可見的。是以,在非關系模型中,使用者需要知道資料之間的指針連結關系。

《資料庫原理與應用(第3版)》——3.1 關系資料模型的組成

需要注意的是,當我們說關系資料庫中沒有指針時,并不是指在實體層沒有指針。實際上,在關系資料庫的實體層也使用指針,但所有這些實體層的存儲細節對使用者來說都是不可見的,使用者所看到的實體層實際上就是存放資料的資料庫檔案,他們能夠看到的就是這些檔案的檔案名、存放位置等上層資訊,而沒有指針這樣的底層資訊。

關系操作是通過關系語言實作的,關系語言的特點是高度非過程化的。所謂非過程化是指:

使用者不必關心資料的存取路徑和存取過程,隻需要提出資料請求,資料庫管理系統就會自動完成使用者請求的操作。

使用者也沒有必要編寫程式代碼來實作對資料的重複操作。

在資料庫中,資料的完整性是指保證資料正确性的特征。資料完整性是一種語義概念,它包括兩個方面:

1)與現實世界中應用需求的資料的相容性和正确性。

2)資料庫内資料之間的相容性和正确性。

例如,學生的學号必須是唯一的,學生的性别隻能是“男”和“女”,學生所選的課程必須是已經開設的課程等。是以,資料庫是否具有資料完整性特征關系到資料庫系統能否真實地反映現實世界的情況。資料完整性是資料庫中非常重要的内容。

資料完整性由完整性規則定義,而關系模型的完整性規則是對關系的某種限制條件。在關系資料模型中一般将資料完整性分為三類,即實體完整性、參照完整性和使用者定義的完整性。其中實體完整性和參照完整性是關系模型必須滿足的完整性限制,是系統級的限制。使用者定義的完整性主要是限制屬性的取值範圍,也稱為域的完整性,這屬于應用級的限制。資料庫管理系統應該提供對這些資料完整性的支援。