關(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ú)立性。通常情況下,子模式到模式的映射在模式中描述。