三級模式結構:外模式、模式和內模式
一、模式(Schema)
定義:也稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶
的公共數據視圖。
理解:
① 一個數據庫只有一個模式;
② 是數據庫數據在邏輯級上的視圖;
③ 數據庫模式以某一種數據模型為基礎;
④ 定義模式時不僅要定義數據的邏輯結構(如數據記錄由哪些數據項構成,數據項
的名字、類型、取值范圍等),而且要定義與數據有關的安全性、完整性要求,定義這
些數據之間的聯系。
二、外模式(External Schema)
定義:也稱子模式(Subschema)或用戶模式,是數據庫用戶(包括應用程序員和最終
用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視
圖,是與某一應用有關的數據的邏輯表示。
理解:
① 一個數據庫可以有多個外模式;
② 外模式就是用戶視圖;
③ 外模式是保證數據安全性的一個有力措施。
三、內模式(Internal Schema)
定義:也稱存儲模式(Storage Schema),它是數據物理結構和存儲方式的描述,是
數據在數據庫內部的表示方式(例如,記錄的存儲方式是順序存儲、按照B樹結構存儲還
是按hash方法存儲;索引按照什么方式組織;數據是否壓縮存儲,是否加密;數據的存儲
記錄結構有何規定)。
理解:
① 一個數據庫只有一個內模式;
② 一個表可能由多個文件組成,如:數據文件、索引文件。
它是數據庫管理系統(DBMS)對數據庫中數據進行有效組織和管理的方法
其目的有:
① 為了減少數據冗余,實現數據共享;
② 為了提高存取效率,改善性能。
1.概念模式(Conceptual Schema)
概念模式是數據庫系統中全局數據邏輯結構的描述,是全體用戶(應用)公共數據視
圖,此種描述是一種抽象的描述,它不涉及具體的硬件環境與平台,也與具體的軟件環
境無關。
概念模式主要描述數據的概念記錄類型及數據以及它們間的關系,它還包括一些數
據間的語義約束,對它的描述可用DBMS中的DDL語言定義。
2.外模式(External Schema)
外模式也稱子模式(Subschema)或稱用戶模式(User’s schema)它是用戶的數據視
圖,亦即是用戶所見到的模式的一個部分,它由概念模式推導而出,概念模式給出了系
統全局的數據描述而外模式則給出每個用戶的局部描述。一個概念模式可以有若干個外
模式,每個用戶只關心與它有關的模式,這樣可以屏蔽大量無關信息且有利於數據保
護,因此對用戶極為有利。在一般的DBMS中都提供有相關的外模式描述語言(外模式
DDL)。
3.內模式(Internal Schema)
內模式又稱物理模式(Physical Schema),它給出了數據庫物理存儲結構與物理存
取方法,如數據存儲的文件結構、索引、集簇及hash等存取方式與存取路徑,內模式的
物理性主要體現在操作系統及文件級上,它還不深入到設備級上(如磁盤及磁盤操作),
但近年來有向設備級發展的趨勢(如原始磁盤、磁盤分塊技術等),DBMS一般提供相關的
內模式描述語言(內模式DDL)。
數據模式給出了數據庫的數據框架結構,而數據庫中的數據才是真正的實體,但這
些數據必須按框架所描述的結構組織,以概念模式為框架所組成的數據庫叫概念數據庫
(Conceptual Database),以外模式為框架所組成的數據庫叫用戶數據庫(user’s
Database),以內模式為框架所組成的數據庫叫物理數據庫(Physical Database),這三
種數據庫中只有物理數據庫是真實存在於計算機外存中,其它兩種數據庫並不真正存在
於計算機中,而是通過兩種映射由物理數據庫映射而成。
模式的三個級別層次反映了模式的三個不同環境以及它們的不同要求,其中內模式
處於最低層,它反映了數據在計算機物理結構中的實際存儲形式,概念模式處於中層,
它反映了設計者的數據全局邏輯要求,而外模式處於最外層,它反映了用戶對數據的要
求。
數據庫系統的三級模式是對數據的三個級別抽象,它把數據的具體物理實現留給物
理模式,使用戶與全局設計者能不必關心數據庫的具體實現與物理背景,同時,它通過
兩級映射建立三級模式間的聯系與轉換,使得概念模式與外模式雖然並不具物理存在,
但是也能通過映射而獲得其存在的實體,同時兩級映射也保證了數據庫系統中數據的獨
立性,亦即數據的物理組織改變與邏輯概念級改變,並不影響用戶外模式的改變,它只
要調整映射方式而不必改變用戶模式。
1.概念模式到內模式的映射
該映射給出了概念模式中數據的全局邏輯結構到數據的物理存儲結構間的對應關
系,此種映射一般由DBMS實現。
2.外模式到概念模式的映射
概念模式是一個全局模式而外模式則是用戶的局部模式,一個概念模式中可以定義
多個外模式,而每個外模式是概念模式的一個基本視圖。外模式到概念模式的映射給出
了外模式與概念模式的對應關系,這種映射一般由DBMS實現。