一、數據庫管理技術的發展
數據庫技術就是研究如何科學的管理數據以便為人們提供可共享的、安全的、可靠的數據的技術。數據庫技術包括數據管理和數據處理兩部分內容。
人工管理階段
20世紀50年代中期以前,計算機主要用於科學計算。在這一階段,計算機除硬件外,沒有管理數據的軟件,數據處理方式是批處理。數據的組織和管理完全靠程序員手工完成, 此階段數據的管理效率很低,其特點如下。
1. 數據不保存
此階段計算機主要用於科學計算,並不對數據進行其他操作,一般不需要將數據長期保存,只是在計算某一課題時將數據批量輸入,數據處理完后不保存原始程序和數據。 計算 機斷電之后計算結果也會隨之消失。
2. 應用程序管理數據
數據需要由應用程序自己管理,沒有相應的軟件系統負責數據的管理工作。程序員不僅要規定數據的邏輯結構,而且要設計數據的物理結構,包括存儲結構、存取方法和輸 入輸出方式等,使得程序員負擔很重。
3. 數據不共享
一組數據只能對應一個程序,數據是面向應用的。各個應用程序的數據各自組織,無法互相利用和互相參照,因此程序與程序之間有大量的冗余數據。
4. 數據不具有獨立性
數據的邏輯結構和物理結構都不具有獨立性。當數據的邏輯結構或物理結構發生變化后,必須對應用程序做相應的修改,從而給程序員設計和維護應用程序帶來繁重的負擔。
文件系統階段
20世紀50年代后期到60年代中期,硬件方面已有了磁盤、磁鼓等存儲設備;軟件方面,操作系統中已經有了專門的數據管理軟件,一般稱為文件系統。這時的計算機不僅用 於科學計算,也大量用於數據處理。
1. 文件系統的優點
此階段數據管理具有如下特點。
(1) 數據可以長期保存
由於計算機大量用於數據處理,數據需要長期保留以便在外存上反復進行查詢、修改、插入和刪除等操作。
(2) 文件系統管理數據
由專門的軟件即文件系統進行數據管理,文件系統把數據組織成相互獨立的數據文件,利用“按文件名訪問,按記錄進行存取”的管理技術,可以對文件中的數據進行修改、 插入和刪除操作。文件系統實現了記錄內的結構化,但就文件整體而言是無結構的。程序和數據之間由文件系統提供的存取方法進行轉換,使應用程序與數據之間有了一定的獨 立性。程序員可以不必過多地考慮物理細節,將精力集中於算法。而且數據在存儲上的改變不一定反映在程序上,大大節省了維護程序的工作量。
2. 文件系統的缺點
盡管文件系統有上述優點,但它仍存在一些缺點,主要表現在以下幾個方面:
(1) 數據的共享性差,冗余度高
在文件系統中,數據的建立、存取都仍依賴於應用程序,基本是一個(或一組)數據文件對應於一個應用程序,即數據仍然是面向應用的。當不同的應用程序具有部分相 同的數據時,也必須建立各自的文件,而不能共享相同的數據,因此數據的冗余度大,浪費存儲空間。同時,由於相同數據的重復存儲和各自管理,容易造成數據的不一致 性,給數據的修改和維護帶來困難。
(2) 數據的獨立性不足
文件系統中的數據雖然有了一定的獨立性,但是由於數據文件只存儲數據,由應用程序來確定數據的邏輯結構,設計數據的物理結構,一旦數據的邏輯結構或物理結構 需要改變,必須修改應用程序;或者由於語言環境的改變需要修改應用程序時,也將引起文件數據結構的改變。因此數據與應用程序之間的邏輯獨立性不強。另外,要想對現 有的數據再增加一些新的應用會很困難,系統不容易擴充。
(3) 並發訪問容易產生異常
文件系統缺少對並發操作進行控制的機制,所以系統雖然允許多個用戶同時訪問數據,但是由於並發的更新操作相互影響,容易導致數據的不一致。
(4) 數據的安全控制難以實現
數據不是集中管理。在數據的結構、編碼、表示格式、命名以及輸出格式等方面不容
易做到規范化、標准化,所以其安全性、完整性得不到可靠保證,而且文件系統難以實現對不同用戶的不同訪問權限的安全性約束。
數據庫管理階段
從20世紀60年代末期開始,計算機管理的數據對象規模越來越大,應用范圍越來越廣,數據量急劇增加,數據處理的速度和共享性的要求也越來越高。與此同時,磁盤 技術也取得了重要發展,為數據庫技術的發展提供了物質條件。隨之,人們開發了一種新的、先進的數據管理方法:將數據存儲在數據庫中,由數據庫管理軟件對其進行統一 管理,應用程序通過數據庫管理軟件來訪問數據。
1. 數據結構化
數據結構化是數據庫與文件系統的本質區別。
在文件系統中,相互獨立的文件的記錄內部是有結構的。傳統文件的最簡單形式是等長同格式的記錄集合。
2. 數據共享性高、冗余度低、易擴充
數據庫系統從整體角度看待和描述數據,數據不再面向某個應用而是面向整個系統,因此數據可以被多個用戶、多個應用共享使用。數據共享可以大大減少數據冗余,節 約 存儲空間,還能夠避免數據之間的不相容性與不一致性。
所謂數據的不一致性是指同一數據不同拷貝的值不一樣。采用人工管理或文件系統管理時,由於數據被重復存儲,當不同的應用使用和修改不同的拷貝時就很容易造成數據 的不一致。在數據庫中數據共享減少了由於數據冗余造成的不一致現象。
由於數據面向整個系統,是有結構的數據,不僅可以被多個應用共享使用,而且容易增加新的應用。這就使得數據庫系統彈性大,易於擴充,可以適應各種用戶的要求。可以 取整體數據的各種子集用於不同的應用系統,當應用需求改變或增加時,只要重新選取不同的子集或加上一部分數據便可以滿足新的需求。
3. 數據獨立性高
數據獨立性是數據庫領域中的一個常用術語,包括數據的物理獨立性和數據的邏輯獨立性。
物理獨立性是指用戶的應用程序與存儲在磁盤上的數據庫中數據是相互獨立的。也就是說,數據在磁盤上的數據庫中如何存儲是由DBMS管理的,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構,這樣當數據的物理存儲改變了,應用程序不用改變。
邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的。也就是說,數據的邏輯結構改變了,用戶程序可以不變。
數據與程序的獨立把數據的定義從程序中分離出去,加上數據的存取又由DBMS負責,從而簡化了應用程序的編制,大大減少了應用程序的維護和修改。
4. 數據由DBMS統一管理和控制
數據庫的共享是並發的(Concurrency)共享,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中同一個數據。
為此,DBMS還必須提供以下幾方面的數據控制功能。
(1) 數據的安全性(Security)保護
數據的安全性是指保護數據,以防止不合法的使用造成數據的泄密和破壞,使每個用戶只能按規定對某些數據以某些方式進行使用和處理。
(2) 數據的完整性(Integrity)檢查
數據的完整性指數據的正確性、有效性和相容性。完整性檢查將數據控制在有效的范圍內或保證數據之間滿足一定的關系。
(3) 並發(Concurrency)控制
當多個用戶的並發進程同時存取、修改數據庫時,可能會發生相互干擾而得到錯誤的結果或使得數據庫的完整性遭到破壞,因此必須對多用戶的並發操作加以控制和協調。
(4) 數據庫恢復(Recovery)
計算機系統的硬件故障、軟件故障、操作員的失誤以及故意的破壞也會影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失。DBMS必須具有將數據庫從錯誤 狀態恢復到某一已知的正確狀態(亦稱為完整狀態或一致狀態)的功能,這就是數據庫的恢復功能。
綜上所述,數據庫是長期存儲在計算機內有組織的、大量的、共享的數據集合。它可以供各種用戶共享,具有最小冗余度和較高的數據獨立性。DBMS在數據庫建立、使用和 維護時對數據庫進行統一控制,以保證數據的完整性和安全性,並在多用戶同時使用數據庫時進行並發控制,在發生故障后對系統進行恢復。
數據庫系統的出現使信息系統從以加工數據的程序為中心轉向圍繞共享的數據庫為中心的新階段。這樣既便於數據的集中管理,又有利於應用程序的研制和維護,提高了數據 的利用率和相容性,提高了決策的可靠性。
二、數據庫系統
數據庫系統的組成
數據庫系統是指計算機系統引入數據庫后的系統。一般包括四個主要部分:數據庫、數據庫管理系統、應用程序和數據庫管理員,數據庫管理系統是核心
1.數據庫
數據庫是存放數據的倉庫,數據是按一定的格式存放的。數據庫數據具有永久存儲、有組織和可共享三個基本特點
2.數據庫管理系統
數據庫管理系統是指位於用戶和操作系統之間的一層數據管理軟件。數據庫系統如何科學的組織和存儲數據,如何高效的獲取和維護數據,都是由數據庫管理軟件來完成, 它是數據庫系統的核心。
3.應用程序
應用程序是指以數據庫以及數據庫數據為基礎的應用程序,如圖書館管理系統。
4.數據庫管理員
數據庫管理員負責數據庫的規划、設計、協調、維護和管理等工作,主要保證數據庫正確和高效運行。
數據庫管理系統
數據庫管理系統的主要功能有如下幾點:
1.數據定義
DBMS提供數據定義語言DDL,用戶可以通過DDL對數據庫的對象進行定義,同時可以定義數據庫的三級結構、兩級映像,定義數據庫的完整性約束等。
2.數據庫的操縱功能
DBMS提供數據庫的操縱語言DML,用戶可以通過DML對數據庫中的數據進行增刪改查等操作。
3.數據庫的保護功能
DBMS對數據庫的保護主要是通過數據庫的恢復、數據庫的並發控制、數據庫的完整性控制、數據庫的安全性控制4個方面。
4.數據庫的存儲管理
DBMS的存儲管理子系統提供了數據庫中數據和應用程序一個界面,DBMS語句轉換底層的文件系統命令,起到數據上的存儲、檢索和更新的作用。
5.數據庫的維護功能
DBMS中實現數據庫維護功能的實用程序主要有數據加載程序、備份程序、文件重組程序、性能監控程序。
6.數據字典
數據庫系統中存放三級結構定義的數據庫成為數據字典,對數據庫的操作都要通過訪問DD才能實現。
三、數據庫系統的結構
數據庫的三級模式

外模式
模式
內模式
1. 外模式/模式映像
當模式改變時(如增加新的關系、新的屬性、改變屬性的數據類型等),由數據庫管理員對各個外模式/模式的映像作相應改變,可以使外模式保持不變。應用程序是依據數據 的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性。
2. 模式/內模式映像
數據庫中只有一個模式,也只有一個內模式,所以模式/內模式映像是唯一的,它定義了數據庫全局邏輯結構與存儲結構之間的對應關系,該映像定義通常包含在概念模式 的定義描述中。
當數據庫的內模式存儲結構改變了(如選用了另一種存儲結構),由數據庫管理員對模式/內模式映像作相應改變,可以使模式保持不變,從而應用程序也不必改變,保證了數 據與程序的物理獨立性,簡稱數據的物理獨立性。
在數據庫的三級模式結構中,數據庫模式即全局邏輯結構是數據庫的中心與關鍵,它獨立於數據庫的其他層次。因此,設計數據庫模式時,應首先確定數據庫的邏輯模式。
數據庫的內模式依賴於它的全局邏輯結構,但獨立於數據庫的外模式和具體的存儲設備。它是將全局邏輯結構中所定義的數據結構及其聯系按照一定的物理存儲策略進行組織, 以達到較好的時間與空間效率。
數據庫的外模式面向具體的應用程序,它定義在邏輯模式之上,但獨立於內模式和存儲設備。當應用需求發生較大變化,相應外模式不能滿足其視圖要求時,外模式就需要進 行相應地修改,所以設計外模式時應充分考慮到應用的擴充性。不同的應用程序有時可以共用同一個外模式。
數據庫的二級映像保證了數據庫外模式的穩定性,從底層保證了應用程序的穩定性,除非應用需求本身發生變化,否則應用程序一般不需要修改。
數據庫的三級模式與二級映像實現了數據與程序之間的獨立性,使數據的定義和描述可以從應用程序中分離出來。另外,由於數據的存取由DBMS管理,用戶不必考慮存取路 徑等細節,從而簡化了應用程序的編制,大大降低了應用程序的維護和修改成本。
