關(guān)系型數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)

一、數(shù)據(jù)庫(kù)的分級(jí)結(jié)構(gòu)

ANSI/X3/SPARC的數(shù)據(jù)庫(kù)管理系統(tǒng)研發(fā)組,在1975年公布的研究報(bào)告——“Interim Report”中,把數(shù)據(jù)庫(kù)分為三級(jí):外模式、概念模式和內(nèi)模式。

如圖所示:


 

      當(dāng)今流行的數(shù)據(jù)庫(kù)管理系統(tǒng)雖有多種,所用術(shù)語(yǔ)也各有不同,但在數(shù)據(jù)庫(kù)體系結(jié)構(gòu)上仍呈現(xiàn)三級(jí)結(jié)構(gòu)的特征。

       用戶級(jí)數(shù)據(jù)庫(kù)是單個(gè)用戶看到和使用的數(shù)據(jù)庫(kù),因此也稱為用戶視圖(View),在許多文獻(xiàn)中又稱為子模式,對(duì)應(yīng)于外模式,它是單個(gè)用戶看到并獲準(zhǔn)使用的那部分?jǐn)?shù)據(jù)的邏輯結(jié)構(gòu)(稱為局部邏輯結(jié)構(gòu)),用戶根據(jù)系統(tǒng)給出的子模型,用詢問(wèn)語(yǔ)言或應(yīng)用程序去操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

       概念級(jí)數(shù)據(jù)庫(kù)應(yīng)對(duì)于概念模式,簡(jiǎn)稱模式,是對(duì)數(shù)據(jù)庫(kù)所有用戶的數(shù)據(jù)的整體邏輯描述(故稱為數(shù)據(jù)庫(kù)的整體邏輯結(jié)構(gòu)),通常又稱之為DBA視圖,即數(shù)據(jù)庫(kù)管理員看到的數(shù)據(jù)庫(kù),它是所有用戶視圖的一個(gè)最小并集。設(shè)立概念級(jí)的目的是為了把用戶視圖有機(jī)的結(jié)合成一個(gè)邏輯整體,統(tǒng)一的考慮所有用戶要求,它涉及的仍然是數(shù)據(jù)庫(kù)中所有對(duì)象的邏輯關(guān)系,而不是他們的物理關(guān)系。

       物理級(jí)數(shù)據(jù)庫(kù)對(duì)應(yīng)于內(nèi)模式,又稱之為存儲(chǔ)模式。它包含數(shù)據(jù)庫(kù)的全部存儲(chǔ)數(shù)據(jù),這些被存儲(chǔ)在內(nèi)、外存介質(zhì)上的數(shù)據(jù)也被稱為原始(Raw)數(shù)據(jù),使用戶操作加工的對(duì)象。從機(jī)器的角度看,他們是指令操作處理的位串、字符和字;從系統(tǒng)程序員的角度看,這些數(shù)據(jù)是他用一定的文件組織方式組織起來(lái)的一個(gè)個(gè)無(wú)力文件(或存儲(chǔ)文件),系統(tǒng)程序員編制專門的訪問(wèn)程序,實(shí)現(xiàn)對(duì)文件中的數(shù)據(jù)的訪問(wèn)。所以物理級(jí)數(shù)據(jù)庫(kù)也稱為系統(tǒng)程序員視圖。

       對(duì)于一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)來(lái)說(shuō),實(shí)際上存在的只是物理級(jí)數(shù)據(jù)庫(kù),它是數(shù)據(jù)訪問(wèn)的基礎(chǔ)。概念級(jí)數(shù)據(jù)庫(kù)只不過(guò)是物理級(jí)數(shù)據(jù)庫(kù)的一種抽象(邏輯)描述,用戶級(jí)數(shù)據(jù)庫(kù)是用戶與數(shù)據(jù)庫(kù)的接口。用戶根據(jù)子模式進(jìn)行操作,數(shù)據(jù)庫(kù)管理系統(tǒng)用過(guò)子模式到模式的映射將操作與概念級(jí)聯(lián)系起來(lái),又通過(guò)模式到存儲(chǔ)模式的映射與物理級(jí)聯(lián)系起來(lái)。這樣一來(lái),用戶可以在較高的抽象級(jí)別上處理數(shù)據(jù),而把數(shù)據(jù)組織的物理細(xì)節(jié)留給系統(tǒng)。事實(shí)上,DBMS中心工作之一就是完成三級(jí)數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換,把用戶對(duì)數(shù)據(jù)庫(kù)的操作轉(zhuǎn)化到物理級(jí)去執(zhí)行。

二、模式及其映射

       (1)模式

       模式是使用模式定義語(yǔ)言(DDL)給出的數(shù)據(jù)庫(kù)整體邏輯描述,包括邏輯記錄類型和記錄之間的關(guān)系。某些系統(tǒng)甚至把模式到存儲(chǔ)的映射細(xì)節(jié)(如存儲(chǔ)設(shè)備類型與地址、文件組織方式、數(shù)據(jù)壓縮細(xì)節(jié)等)也包含到模式中。應(yīng)該指出,處于概念級(jí)的模式不應(yīng)該包含物理級(jí)的內(nèi)容,否則當(dāng)數(shù)據(jù)物理組織發(fā)生變化時(shí),將引起對(duì)模式的修改,是概念級(jí)不能獨(dú)立于物理級(jí)。用語(yǔ)言書(shū)寫(xiě)的模式成為原模式,機(jī)器不能直接使用,必須將此摸使用機(jī)器代碼表示,變?yōu)闄C(jī)器使用的模式,稱為目標(biāo)模式。目標(biāo)模式通常設(shè)計(jì)成表格形式,樹(shù)結(jié)構(gòu)或網(wǎng)絡(luò)結(jié)構(gòu)。為原模式設(shè)計(jì)良好的目標(biāo)模式是很重要的工作。

       (2)子模式

       子模式是用戶與數(shù)據(jù)的接口,因此每個(gè)用戶必須使用一個(gè)子模式,但多個(gè)用戶(特別是同類型的用戶)也可以使用一個(gè)子模式。從邏輯關(guān)系上看,子模式是模式的一部分(而不說(shuō)是數(shù)據(jù)庫(kù)的一部分),或者說(shuō)是模式的一個(gè)邏輯子集(當(dāng)然也可以是整個(gè)模式)。從模式用某種規(guī)則可以導(dǎo)出子模式,如在關(guān)系方法中,通過(guò)關(guān)系運(yùn)算就可以就可以從模式導(dǎo)出子模式。子模式與模式之間的對(duì)應(yīng)關(guān)系稱之為子模式到模式的映射,有的系統(tǒng)把這種映射也寫(xiě)在子模式中,但應(yīng)指出,子模式可以做出不同模式的改變,例如在子模式中,可以略去模式的某些記錄類型,數(shù)據(jù)項(xiàng),改變模式中某些數(shù)據(jù)項(xiàng)的數(shù)據(jù)特征,改變模式中的安全、完整約束條件等。如例子:

       子模式A:

學(xué)生關(guān)系框架

學(xué)號(hào) 姓名 年齡 性別

 

學(xué)生關(guān)系

學(xué)號(hào)

姓名

年齡

性別

0001

張三

19

0002

李四

19

 

教員關(guān)系框架

 姓名 職稱
 

教員關(guān)系

姓名

職稱

張小三

講師

李小四

教授

 

       子模式B:

學(xué)生關(guān)系框架

學(xué)號(hào) 姓名 年齡 性別
 

學(xué)生關(guān)系

學(xué)號(hào)

姓名

年齡

性別

0001

張三

19

0002

李四

19

 

授課關(guān)系框架

課程號(hào) 課程名 學(xué)時(shí) 任課教員

 

授課關(guān)系

課程號(hào)

課程名

學(xué)時(shí)數(shù)

任課教員

1001

微積分

32

張小三

1002

線性代數(shù)

64

李小四

 

學(xué)習(xí)關(guān)系框架

學(xué)號(hào) 課程號(hào) 分?jǐn)?shù)

 

學(xué)習(xí)關(guān)系

學(xué)號(hào)

課程號(hào)

分?jǐn)?shù)

0001

1001

90

0002

1002

85

 

       如上例所示:使用子模式A的用戶,只能訪問(wèn)子模式A所對(duì)應(yīng)的數(shù)據(jù),而使用子模式B的用戶只能訪問(wèn)子模式B對(duì)應(yīng)的數(shù)據(jù)。描述子模式的語(yǔ)言稱為子模式DDL,子模式也有相應(yīng)的源形式與目標(biāo)形式。給用戶以子模式有以下好處:

·接口簡(jiǎn)單,使用方便。用戶只要依照子模式編寫(xiě)應(yīng)用程序或在終端派人操作命令,無(wú)需了解數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)。

       ·保證數(shù)據(jù)獨(dú)立性。應(yīng)用脫離了數(shù)據(jù)的物理組織,使得改變數(shù)據(jù)的物理組織方式和引進(jìn)新的存儲(chǔ)設(shè)備無(wú)需修改或重編應(yīng)用程序。

       ·提供數(shù)據(jù)共享性。用同一模式產(chǎn)生出不同的子模式,減少了數(shù)據(jù)的冗余度。

       ·獨(dú)立數(shù)據(jù),安全保密。用戶通過(guò)程序只能操作其子模式范圍內(nèi)的數(shù)據(jù),從而使程序錯(cuò)誤傳播的范圍最小,同時(shí)保證了其它數(shù)據(jù)的安全。

3)存儲(chǔ)模式

       存儲(chǔ)模式是數(shù)據(jù)在物理存儲(chǔ)結(jié)構(gòu)方面的描述,他除了定義所有的內(nèi)部記錄類型外,還定義一些索引、存儲(chǔ)分配以及恢復(fù)等方面內(nèi)容的細(xì)節(jié)。但是更具體的物理存儲(chǔ)細(xì)節(jié),比如從磁盤讀寫(xiě)某些數(shù)據(jù)塊等,存儲(chǔ)模式一般并不予考慮,而是交給操作系統(tǒng)來(lái)完成。

       描述存儲(chǔ)模式的語(yǔ)言稱為存儲(chǔ)模式DDL,存儲(chǔ)模式亦有源模式與目標(biāo)模式之分,其目標(biāo)模式與模式和子模式的目標(biāo)模式均存在于系統(tǒng)數(shù)據(jù)字典中,供系統(tǒng)隨時(shí)查用。

4)模式到存儲(chǔ)模式的映射

       此映射主要給出概念級(jí)數(shù)據(jù)與物理級(jí)數(shù)據(jù)的對(duì)應(yīng)關(guān)系。這表現(xiàn)在兩個(gè)方面:一是數(shù)據(jù)結(jié)構(gòu)的交換,即邏輯記錄及組成紀(jì)錄的數(shù)據(jù)項(xiàng)如何對(duì)應(yīng)到內(nèi)部紀(jì)錄的數(shù)據(jù)項(xiàng)上去;另一方面,是邏輯數(shù)據(jù)如何在物理設(shè)備上定位。在概念級(jí)與內(nèi)部級(jí)之間存在這樣一個(gè)映射,就能保證當(dāng)存儲(chǔ)模式發(fā)生變化時(shí)(如存儲(chǔ)設(shè)備、文件組織方式、存儲(chǔ)位置等發(fā)生變化),只要修改此映射即可,而模式應(yīng)盡量不受到任何影響,從而對(duì)子模式和應(yīng)用程序影響更小,到達(dá)所謂物理數(shù)據(jù)獨(dú)立。通常情況下,模式到存儲(chǔ)模式的映射在存儲(chǔ)模式中描述。

5)子模式到模式的映射

       此映射主要給出外部級(jí)與概念級(jí)的對(duì)應(yīng)關(guān)系。這兩級(jí)的數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)量綱可能不一致,子模式中某些數(shù)據(jù)項(xiàng)甚至是由若干數(shù)據(jù)項(xiàng)導(dǎo)出的,在數(shù)據(jù)庫(kù)中并不真實(shí)存在。因此在映射中需要說(shuō)明子模式中的記錄類型和數(shù)據(jù)項(xiàng)如何對(duì)應(yīng)著模式中的記錄和數(shù)據(jù)項(xiàng)以及導(dǎo)出的規(guī)則步驟(若為導(dǎo)出項(xiàng))。在外部級(jí)與概念級(jí)之間存在這樣一個(gè)映射,就能保證當(dāng)模式發(fā)生變化時(shí),只要修改記錄及數(shù)據(jù)項(xiàng)的對(duì)應(yīng)關(guān)系或?qū)С鲆?guī)則,可能不必修改子模式,用戶根據(jù)子模式設(shè)計(jì)的應(yīng)用程序就可繼續(xù)延用,達(dá)到所謂邏輯數(shù)據(jù)獨(dú)立性。通常情況下,子模式到模式的映射在模式中描述。