關系型數據庫的體系結構
一、數據庫的分級結構
ANSI/X3/SPARC的數據庫管理系統研發組,在1975年公布的研究報告——“Interim Report”中,把數據庫分為三級:外模式、概念模式和內模式。
如圖所示:

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