數據庫系統學習第四篇:數據庫系統三級模式和兩層映像。
前言
數據庫三層結構隱藏了數據的存儲和維護的細節,降低了數據庫系統的複雜性,方便用戶訪問數據庫。那三層結構具體是怎樣設計的呢?這有賴於數據庫系統三級模式。
三級模式
模式和實例
在說三級模式之前,先了解一下數據庫模式和數據庫實例是什麼。數據庫模式簡單來說就是數據庫的設計,而數據庫實例指的是特定時刻數據的集合。數據庫模式不常變化。
舉例如下所示:
class A{
//nothing here
}
class B{
public static void main(String [] args){
// demo 即引用變量 代表 數據庫模式
// 每一次new出來的實際變量則 代表 數據庫實例
// 數據庫模式不常變化指的是類A不常改變
A demo = new A();
demo = new A();
demo = new A();
}
}
三級模式
數據庫系統設計從三層結構層面引出了三級模式,如下對應:
- 物理(內部)層 ------------------ 物理(內) 模式
- 邏輯(概念)層 ------------------ 邏輯(概念)模式
- 視圖(外部)層 ------------------ 子 (外) 模式
簡單來說 物理模式就是從物理層設計整個數據庫,依次類推。但是需要注意的是,子模式不止一個,因爲不同的用戶對應的視圖不同,那就可以知道子模式應該也就不同,所以不止一個。
通常情況下,數據庫系統的設計都是由簡到繁,一般是先獲得用戶需求之後在進行設計,那麼可以理解爲是先從子模式設計開始,然後到邏輯模式,再到物理模式。
兩層映像
兩級映像的提出主要是保證數據的獨立性,數據的獨立性與否是判斷一個數據庫系統是否合格的重要指標。
數據獨立性
數據獨立性分爲兩種:1.邏輯數據獨立性。2.物理數據獨立性
邏輯數據獨立性
Logical data independence refers to the immunity of the external schemas to changes in the conceptual schema.Conceptual schema changes (e.g. addition/removal of entities) should not require changes to external schema or rewrites of application programs
也就是說概念模式的改變不修改外模式。如提出了一個新的功能需求時,需要新增一些信息,那概念模式必然新增屬性或字段,這時候不應該影響外模式,以及修改程序。
物理數據獨立性
Physical data independence refers to the immunity of the conceptual schema to changes in the internal schema.Internal schema changes (e.g. using different file organizations, storage structures/devices) should not require change to conceptual or external schemas.
也就是說內模式的改變不影響概念模式。如數據的存儲位置等的修改不應該改變概念模式,當然,更不能改變外模式。
兩層映像
爲了滿足邏輯數據獨立性和物理數據獨立性,在概念層 與 外部層之間設置一層映像,使得概念模式改變,不修改外模式。在概念層 與 內部層之間也設立一層印象,使得內模式改變,不修改概念模式。
注意由於外模式(子模式)不止一個,那麼這兩個模式之間的映射關係也不止一個。具體如下圖:
額,寫完收工。