天天看點

《資料庫基礎及實踐技術——SQL Server 2008》一1.4 資料庫系統的結構

資料庫系統的結構可以從多種不同的層次或角度進行考查。

從資料庫管理角度來看,資料庫系統通常采用三級模式結構。這是資料庫管理系統内部的結構。

從資料庫最終使用者角度來看,資料庫系統的結構分為集中式結構、檔案伺服器結構、用戶端/伺服器結構等。這是資料庫系統外部的體系結構。

本節我們僅讨論資料庫管理系統内部的結構。

資料庫系統的結構是一個架構結構,這個架構用于描述一般資料庫系統的概念,但并不是說所有的資料庫系統都一定使用這個架構,這個架構結構在資料庫中并不是唯一的,特别是一些“小”的資料庫管理系統将難以支援這個體系結構的所有方面。但這裡介紹的資料庫管理系統的體系結構基本上能很好地适應大多數系統,而且,它基本上和ansi/sparc dbms研究組提出的資料庫管理系統的體系結構(稱做ansi/sparc體系結構)是相同的。

雖然實際的資料庫管理系統産品種類很多,支援的資料模型和資料庫語言也不盡相同,但它們在體系結構上通常都具有相同的特征,即采用三級模式結構并提供兩級映像功能。

資料庫系統的三級模式結構是指資料庫系統的外模式、模式和内模式。圖1-11說明了各級模式之間的關系。

《資料庫基礎及實踐技術——SQL Server 2008》一1.4 資料庫系統的結構

從廣義上講,它們的描述如下。

内模式:最接近實體存儲,是資料的實體存儲方式。

外模式:最接近使用者,是使用者所看到的資料視圖。

模式:介于内模式和外模式之間的中間層次。

從圖1-11可以看出,外模式是單個使用者的資料視圖,而模式是一個部門或公司的整體資料視圖。換句話說,外模式(外部視圖)可以有許多,每一個都或多或少地抽象表示整個資料庫的某一部分;而模式(概念視圖)隻有一個,它包含對現實世界資料庫的抽象表示,注意這裡的抽象指的是記錄和字段這些更加面向使用者的概念,而不是位和位元組那樣的面向機器的概念。大多數使用者隻對整個資料庫的某一部分感興趣。内模式(内部視圖)也隻有一個,它表示資料庫的實體存儲。

關系系統中的模式一定是關系的,在該層可見的實體是關系表和關系的操作符。

外模式也是關系的或接近關系的,它們的内容來自模式。例如,我們可以定義兩個外模式,一個記錄學生的姓名、性别(表示為:學生基本資訊1(姓名,性别)),另一個記錄學生的姓名和所在系(表示為:學生基本資訊2(姓名,所在系)),這兩個外模式的内容均來自“學生基本資訊”這個模式。外模式對應到關系資料庫中就是“外部視圖”(或簡稱為“視圖”),它在關系資料庫中有特定的含義,将在第9章詳細讨論視圖的概念。

内模式不是關系的,因為該層的實體不是關系表的“原樣照搬”。其實,不管是什麼系統,其内模式都是一樣的,都是存儲記錄、指針、索引、哈希表等。事實上,關系模型與内模式無關,它關心的是使用者的資料視圖。

下面從外模式開始進一步讨論這個三層結構。整個讨論過程都以圖1-11為基礎,該圖顯示了體系結構的主要組成部分和它們之間的聯系。

外模式

外模式也稱為使用者模式或子模式,它是對現實系統中使用者感興趣的整體資料結構的局部描述,用于滿足不同資料庫使用者需求的資料視圖,是對資料庫使用者能夠看見和使用的局部資料的邏輯結構和特征的描述,是資料庫整體資料結構的子集或局部重構。

外模式通常是模式的子集。一個資料庫可以有多個外模式。由于它是各個使用者的資料視圖,如果不同的使用者在應用需求、看待資料的方式、對資料保密要求等方面存在差異,則其外模式描述就是不相同的。即使對模式中同樣的資料,在外模式中的結構、類型、長度等都可以不同。

外模式同時是保證資料庫安全的一個措施。每個使用者隻能看到和通路其需要操作的外模式中的資料,将其不需要操作的資料屏蔽起來,是以保證不會出現由于使用者的誤操作和有意破壞而造成資料損失。

外模式就是特定使用者所看到的資料庫的内容,對那些使用者來說,外模式就是資料庫。例如,學校人事部門的使用者可能把各系的教師資料的集合作為他的外模式,而不考慮各個系的使用者所看見的課程和學生的記錄值。

模式

模式也稱為邏輯模式或概念模式,是資料庫中全體資料的邏輯結構和特征的描述,是所有使用者的公共資料視圖。模式表示資料庫中的全部資訊,其形式要比資料的實體存儲方式抽象。它是資料庫系統結構的中間層,既不涉及資料的實體存儲細節和硬體環境,也與具體的應用程式、與所使用的應用開發工具和環境無關。

模式由許多概念記錄類型的值構成。例如,可以包含學生記錄值的集合、課程記錄值的集合,選課記錄值的集合等。概念記錄即不等同于外部記錄,也不等同于存儲記錄。

模式實際上是資料庫資料在邏輯級上的視圖。一個資料庫隻有一種模式。資料庫模式以某種資料模型為基礎,綜合地考慮了所有使用者的需求,并将這些需求有機地結合成一個邏輯整體。定義資料庫模式時不僅要定義資料的邏輯結構,如資料記錄由哪些資料項組成,以及資料項的名字、類型、取值範圍等,而且還要定義資料之間的聯系,定義與資料有關的安全性要求、完整性要求。

模式不涉及存儲字段的表示,也不涉及對列、索引、指針或其他存儲的通路細節。如果模式以這種方式真正地實作了資料獨立性,那麼根據這些概念模式定義的外模式也會有很強的獨立性。

資料庫管理系統提供了資料定義語言(ddl)來定義資料庫的模式。

内模式

内模式也稱為存儲模式。内模式是對整個資料庫的底層表示,它描述了資料的存儲結構,如資料的組織與存儲方式,又如是順序存儲、b樹存儲還是hash存儲,以及索引按什麼方式組織、是否加密等。注意,内模式與實體層是不一樣的,内模式不涉及實體記錄的形式(即實體塊或頁,輸入/輸出機關),也不考慮具體裝置的柱面或磁道大小。換句話說,内模式假定了一個無限大的線性位址空間,位址空間到實體存儲的映射細節與特定系統有關,這些并不反映在體系結構中。

資料庫系統的三級模式是對資料的3個抽象級别,它把資料的具體組織留給dbms管理,使使用者能邏輯地、抽象地處理資料,而不必關心資料在計算機中的具體表示方式與存儲方式。為了能夠在内部實作這3個抽象層次的聯系和轉換,資料庫管理系統在3個模式之間提供了兩層映像(如圖1-11所示):

外模式/模式映像

模式/内模式映像

正是這兩層映像保證了資料庫系統中的資料能夠具有較高的邏輯獨立性和實體獨立性,使資料庫應用程式不随資料庫資料的邏輯或存儲結構的變動而變動。

模式描述的是資料的全局邏輯結構,外模式描述的是資料的局部邏輯結構。對應于同一個模式可以有多個外模式。對于每個外模式,都有一個從外模式到模式的映像,該映像定義了外模式與模式之間的對應關系。這些映像定義通常包含在各自的外模式描述中。

當模式發生變化時(如增加新的關系、新的屬性或改變屬性的資料類型等),可以通過外模式定義語句,調整外模式/模式映像定義,進而保持外模式不變。由于應用程式是依據資料的外模式編寫的,是以應用程式也不必修改,進而保證了程式與資料的邏輯獨立性,簡稱為資料的邏輯獨立性。

模式/内模式映像定義了資料庫的邏輯結構與存儲結構之間的對應關系。當資料庫的存儲結構發生改變,比如選擇了另一種存儲結構,隻需要對模式/内模式映像做相應的調整,就可以保持模式不變,進而使應用程式也不必修改。是以,保證了資料與程式的實體獨立性,簡稱為資料的實體獨立性。

在資料庫的三級模式結構中,模式是資料庫的中心與關鍵,它獨立于資料庫的其他層次。設計資料庫時也是首先設計資料庫的模式。

資料庫的内模式依賴于資料庫的全局邏輯結構,但獨立于資料庫的使用者視圖,也就是外模式,也獨立于具體的儲存設備。内模式将全局邏輯結構中定義的資料結構及其聯系按照一定的實體存儲政策進行組織,以達到較好的時間與空間效率。

資料庫的外模式面向具體的資料使用者,它定義在模式之上,獨立于内模式和儲存設備。當應用需求發生較大變化,相應的外模式不能滿足使用者要求時,就需要對外模式做相應的改動,是以設計外模式時應充分考慮到應用的可擴充性。

特定的應用程式是在外模式描述的資料結構上編制的,它依賴于特定的外模式,與資料庫的模式和存儲結構互相獨立。不同的應用程式有時可以共用同一個外模式。資料庫的兩級映像保證了資料庫外模式的穩定性,進而從底層保證了應用程式的穩定性,除非應用需求本身發生變化,否則應用程式一般不需要修改。

程式與資料之間的獨立性,使得資料的定義和描述可以從應用程式中分離出來。另外,由于資料的存取由dbms負責管理和實施,是以,使用者不必考慮存取路徑等細節,進而簡化了應用程式的編寫工作,減少了對應用程式的維護和修改工作。