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