在數據模型的發展過程中,主要有4種數據模型:層次模型、網狀模型、關系模型和面向對象模型。當前主流的數據模型就是關系模型,其它非關系的數據模型也添加了關系的接口。
一般情況,探討數據模型時,要探討其三方面的知識:數據模型的數據結構、數據模型允許的操作類型和定義在數據模型上的數據約束。
1、關系數據模型概述
1970年美國IBM公司San Jose研究室的研究員E.F.Codd首次提出了數據庫系統的關系模型,開創了數據庫的關系方法和關系數據理論的研究,為數據庫技術奠定了理論基礎。由于E.F.Codd的杰出工作,他于1981年獲得ACM圖靈獎。
20世紀80年代以來,計算機廠商新推出的數據庫管理系統幾乎都支持關系模型,非關系系統的產品也大都加上了關系接口。數據庫領域當前的研究工作也都是以關系方法為基礎。
關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成的。
2、關系數據模型的數據結構
從用戶的角度來看,關系數據模型的數據結構就是一張二維表。如下圖:
在這個二維表中,表頭的每一項即為關系的屬性。
一個關系中若有n個屬性,則稱關系為n元關系。
二維表中的每一條記錄稱為關系的元組。
關系中每個屬性的值必須是同質的(取值范圍相同、含義相同、數據類型相同)。
關系中不允許有相同的屬性;
關系中的每個屬性必須是原子的,即關系中的每個屬性不允許再分出子屬性;
關系中不允許有完全相同的兩個元組;
關系中的列序無關(即屬性誰在前,誰在后,理論上無所謂);
關系中的行序無關(即哪個元組在前,哪個元組在后,理論上無所謂)。
在描述一個關系時,通常使用下面的格式來描述:
關系名(屬性1,屬性2,......)
這稱之為一個關系的模式。
3、關系數據模型的操作
關系模型的數據操作主要包括查詢和更新(更新又包括插入、修改和刪除三部分)兩大部分。
關系運算的運算對象和運算結果都是關系。
從關系代數的角度來講,關系模型的數據操作包括并(Union)、交(Intersection)、差(Difference)和笛卡爾積(Extended cartesian product);
除此之外,還包括關系專門的數據操作:選擇(Select)、投影(Project)、連接(join)和除(Divide)。
4、關系數據模型的完整性約束
關系模型中定義了三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關系模型必須滿足的完整性約束條件。
(1)實體完整性規則:若屬性A是基本關系R的主屬性,則屬性A不能取空值,且取值必須是唯一的(不能有重復的值)。
實體完整性規則規定基本關系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。
所謂空值就是“不知道”或“無意義”的值。如果主屬性取空值,就說明存在某個不可標識的實體,即存在不可區分的實體。
(2)參照完整性規則:若屬性(或屬性組)F是基本關系R的外碼,它對于基本關系S的主碼K相對應(基本關系R和S不一定是不同的關系),則對于R中的每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。
(3)用戶定義的完整性就是針對某一具體關系數據庫的約束條件。例如某屬性的取值不能為空值、性別的取值為“男”或“女”;某屬性的值應為0-100等。
新聞熱點
疑難解答