關(guān)系型數(shù)據(jù)庫的體系結(jié)構(gòu)
一、數(shù)據(jù)庫的分級結(jié)構(gòu)
ANSI/X3/SPARC的數(shù)據(jù)庫管理系統(tǒng)研發(fā)組,在1975年公布的研究報告——“Interim Report”中,把數(shù)據(jù)庫分為三級:外模式、概念模式和內(nèi)模式。
如圖所示:

當今流行的數(shù)據(jù)庫管理系統(tǒng)雖有多種,所用術(shù)語也各有不同,但在數(shù)據(jù)庫體系結(jié)構(gòu)上仍呈現(xiàn)三級結(jié)構(gòu)的特征。
用戶級數(shù)據(jù)庫是單個用戶看到和使用的數(shù)據(jù)庫,因此也稱為用戶視圖(View),在許多文獻中又稱為子模式,對應于外模式,它是單個用戶看到并獲準使用的那部分數(shù)據(jù)的邏輯結(jié)構(gòu)(稱為局部邏輯結(jié)構(gòu)),用戶根據(jù)系統(tǒng)給出的子模型,用詢問語言或應用程序去操作數(shù)據(jù)庫中的數(shù)據(jù)。
概念級數(shù)據(jù)庫應對于概念模式,簡稱模式,是對數(shù)據(jù)庫所有用戶的數(shù)據(jù)的整體邏輯描述(故稱為數(shù)據(jù)庫的整體邏輯結(jié)構(gòu)),通常又稱之為DBA視圖,即數(shù)據(jù)庫管理員看到的數(shù)據(jù)庫,它是所有用戶視圖的一個最小并集。設(shè)立概念級的目的是為了把用戶視圖有機的結(jié)合成一個邏輯整體,統(tǒng)一的考慮所有用戶要求,它涉及的仍然是數(shù)據(jù)庫中所有對象的邏輯關(guān)系,而不是他們的物理關(guān)系。
物理級數(shù)據(jù)庫對應于內(nèi)模式,又稱之為存儲模式。它包含數(shù)據(jù)庫的全部存儲數(shù)據(jù),這些被存儲在內(nèi)、外存介質(zhì)上的數(shù)據(jù)也被稱為原始(Raw)數(shù)據(jù),使用戶操作加工的對象。從機器的角度看,他們是指令操作處理的位串、字符和字;從系統(tǒng)程序員的角度看,這些數(shù)據(jù)是他用一定的文件組織方式組織起來的一個個無力文件(或存儲文件),系統(tǒng)程序員編制專門的訪問程序,實現(xiàn)對文件中的數(shù)據(jù)的訪問。所以物理級數(shù)據(jù)庫也稱為系統(tǒng)程序員視圖。
對于一個數(shù)據(jù)庫系統(tǒng)來說,實際上存在的只是物理級數(shù)據(jù)庫,它是數(shù)據(jù)訪問的基礎(chǔ)。概念級數(shù)據(jù)庫只不過是物理級數(shù)據(jù)庫的一種抽象(邏輯)描述,用戶級數(shù)據(jù)庫是用戶與數(shù)據(jù)庫的接口。用戶根據(jù)子模式進行操作,數(shù)據(jù)庫管理系統(tǒng)用過子模式到模式的映射將操作與概念級聯(lián)系起來,又通過模式到存儲模式的映射與物理級聯(lián)系起來。這樣一來,用戶可以在較高的抽象級別上處理數(shù)據(jù),而把數(shù)據(jù)組織的物理細節(jié)留給系統(tǒng)。事實上,DBMS中心工作之一就是完成三級數(shù)據(jù)庫之間的轉(zhuǎn)換,把用戶對數(shù)據(jù)庫的操作轉(zhuǎn)化到物理級去執(zhí)行。
二、模式及其映射
(1)模式
模式是使用模式定義語言(DDL)給出的數(shù)據(jù)庫整體邏輯描述,包括邏輯記錄類型和記錄之間的關(guān)系。某些系統(tǒng)甚至把模式到存儲的映射細節(jié)(如存儲設(shè)備類型與地址、文件組織方式、數(shù)據(jù)壓縮細節(jié)等)也包含到模式中。應該指出,處于概念級的模式不應該包含物理級的內(nèi)容,否則當數(shù)據(jù)物理組織發(fā)生變化時,將引起對模式的修改,是概念級不能獨立于物理級。用語言書寫的模式成為原模式,機器不能直接使用,必須將此摸使用機器代碼表示,變?yōu)闄C器使用的模式,稱為目標模式。目標模式通常設(shè)計成表格形式,樹結(jié)構(gòu)或網(wǎng)絡(luò)結(jié)構(gòu)。為原模式設(shè)計良好的目標模式是很重要的工作。
(2)子模式
子模式是用戶與數(shù)據(jù)的接口,因此每個用戶必須使用一個子模式,但多個用戶(特別是同類型的用戶)也可以使用一個子模式。從邏輯關(guān)系上看,子模式是模式的一部分(而不說是數(shù)據(jù)庫的一部分),或者說是模式的一個邏輯子集(當然也可以是整個模式)。從模式用某種規(guī)則可以導出子模式,如在關(guān)系方法中,通過關(guān)系運算就可以就可以從模式導出子模式。子模式與模式之間的對應關(guān)系稱之為子模式到模式的映射,有的系統(tǒng)把這種映射也寫在子模式中,但應指出,子模式可以做出不同模式的改變,例如在子模式中,可以略去模式的某些記錄類型,數(shù)據(jù)項,改變模式中某些數(shù)據(jù)項的數(shù)據(jù)特征,改變模式中的安全、完整約束條件等。如例子:
子模式A:
學生關(guān)系框架
學號 | 姓名 | 年齡 | 性別 |
學生關(guān)系
學號 |
姓名 |
年齡 |
性別 |
0001 |
張三 |
19 |
男 |
0002 |
李四 |
19 |
女 |
教員關(guān)系框架
姓名 | 職稱 |
教員關(guān)系
姓名 |
職稱 |
張小三 |
講師 |
李小四 |
教授 |
子模式B:
學生關(guān)系框架
學號 | 姓名 | 年齡 | 性別 |
學生關(guān)系
學號 |
姓名 |
年齡 |
性別 |
0001 |
張三 |
19 |
男 |
0002 |
李四 |
19 |
女 |
授課關(guān)系框架
課程號 | 課程名 | 學時 | 任課教員 |
授課關(guān)系
課程號 |
課程名 |
學時數(shù) |
任課教員 |
1001 |
微積分 |
32 |
張小三 |
1002 |
線性代數(shù) |
64 |
李小四 |
學習關(guān)系框架
學號 | 課程號 | 分數(shù) |
學習關(guān)系
學號 |
課程號 |
分數(shù) |
0001 |
1001 |
90 |
0002 |
1002 |
85 |
如上例所示:使用子模式A的用戶,只能訪問子模式A所對應的數(shù)據(jù),而使用子模式B的用戶只能訪問子模式B對應的數(shù)據(jù)。描述子模式的語言稱為子模式DDL,子模式也有相應的源形式與目標形式。給用戶以子模式有以下好處:
·接口簡單,使用方便。用戶只要依照子模式編寫應用程序或在終端派人操作命令,無需了解數(shù)據(jù)庫的存儲結(jié)構(gòu)。
·保證數(shù)據(jù)獨立性。應用脫離了數(shù)據(jù)的物理組織,使得改變數(shù)據(jù)的物理組織方式和引進新的存儲設(shè)備無需修改或重編應用程序。
·提供數(shù)據(jù)共享性。用同一模式產(chǎn)生出不同的子模式,減少了數(shù)據(jù)的冗余度。
·獨立數(shù)據(jù),安全保密。用戶通過程序只能操作其子模式范圍內(nèi)的數(shù)據(jù),從而使程序錯誤傳播的范圍最小,同時保證了其它數(shù)據(jù)的安全。
(3)存儲模式
存儲模式是數(shù)據(jù)在物理存儲結(jié)構(gòu)方面的描述,他除了定義所有的內(nèi)部記錄類型外,還定義一些索引、存儲分配以及恢復等方面內(nèi)容的細節(jié)。但是更具體的物理存儲細節(jié),比如從磁盤讀寫某些數(shù)據(jù)塊等,存儲模式一般并不予考慮,而是交給操作系統(tǒng)來完成。
描述存儲模式的語言稱為存儲模式DDL,存儲模式亦有源模式與目標模式之分,其目標模式與模式和子模式的目標模式均存在于系統(tǒng)數(shù)據(jù)字典中,供系統(tǒng)隨時查用。
(4)模式到存儲模式的映射
此映射主要給出概念級數(shù)據(jù)與物理級數(shù)據(jù)的對應關(guān)系。這表現(xiàn)在兩個方面:一是數(shù)據(jù)結(jié)構(gòu)的交換,即邏輯記錄及組成紀錄的數(shù)據(jù)項如何對應到內(nèi)部紀錄的數(shù)據(jù)項上去;另一方面,是邏輯數(shù)據(jù)如何在物理設(shè)備上定位。在概念級與內(nèi)部級之間存在這樣一個映射,就能保證當存儲模式發(fā)生變化時(如存儲設(shè)備、文件組織方式、存儲位置等發(fā)生變化),只要修改此映射即可,而模式應盡量不受到任何影響,從而對子模式和應用程序影響更小,到達所謂物理數(shù)據(jù)獨立。通常情況下,模式到存儲模式的映射在存儲模式中描述。
(5)子模式到模式的映射
此映射主要給出外部級與概念級的對應關(guān)系。這兩級的數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)量綱可能不一致,子模式中某些數(shù)據(jù)項甚至是由若干數(shù)據(jù)項導出的,在數(shù)據(jù)庫中并不真實存在。因此在映射中需要說明子模式中的記錄類型和數(shù)據(jù)項如何對應著模式中的記錄和數(shù)據(jù)項以及導出的規(guī)則步驟(若為導出項)。在外部級與概念級之間存在這樣一個映射,就能保證當模式發(fā)生變化時,只要修改記錄及數(shù)據(jù)項的對應關(guān)系或?qū)С鲆?guī)則,可能不必修改子模式,用戶根據(jù)子模式設(shè)計的應用程序就可繼續(xù)延用,達到所謂邏輯數(shù)據(jù)獨立性。通常情況下,子模式到模式的映射在模式中描述。