1.1.1 計算機數據管理的發展
現代意義上的數據庫系統出現于20世紀60年代后期,伴隨著計算機硬件系統的飛速發展、價格的逐步下降、操作系統性能的日益提高以及1970年前后關系型數據模型的出現,數據庫技術正廣泛應用于各個領域,可以說我們已經無法離開數據庫系統。
1.數據和信息
在數據處理中,最常用到的基本概念就是數據和信息。
數據是指描述事物的符號記錄。數據不僅僅是指傳統意義的由0~9組成的數字,而是所有可以輸入到計算機中并能被計算機處理的符號的總稱。
在計算機中可表示數據的種類很多,除了數字以外,文字、圖形、圖像、聲音都是數據。例如學生的基本情況、超市商品的價格、員工的照片、人的指紋、播音員朗誦的佳作、氣象衛星云圖等都可以是數據。
信息是指以數據為載體的對客觀世界實際存在的事物、事件和概念的抽象反映。具體說是一種被加工為特定形式的數據,是通過人的感官(眼、耳、鼻、舌、身)或各種儀器儀表和傳感器等感知出來并經過加工而形成的反映現實世界中事物的數據。
例如,在學生檔案中,記錄了學生的姓名、性別、年齡、出生日期、籍貫、所在系別、入學時間,那么下面的描述:
(李軍,男,21,1993,四川,外語系,2012)就是數據。對于這條學生記錄,所表述的信息為:
李軍是個大學生,1993年出生,男,四川人,2012年考入外語系。
數據是數據庫的基本組成內容,是對客觀世界所存在的事物的一種表征,人們總是盡可能地收集各種各樣的數據,然后對其進行加工處理,從中抽取并推導出有價值的信息,作為指導日常工作和輔助決策的依據。
數據和信息是兩個互相聯系、互相依賴但又互相區別的概念。數據是用來記錄信息的可識別的符號,是信息的具體表現形式。數據是信息的符號表示或載體,信息則是數據的內涵,是對數據的語義解釋。只有經過提煉和抽象之后,具有使用價值的數據才能成為信息。
2.數據處理和數據管理
數據要經過處理才能變為信息,這種將數據轉換成信息的過程稱為數據處理。數據處理具體是指對信息進行收集、整理、存儲、加工及傳播等一系列活動的總和。數據處理的目的是從大量的、雜亂無章的甚至是難于理解的原始數據中,提煉、抽取出人們所需要的有價值、有意義的數據(信息),作為科學決策的依據。
可用“信息=數據+數據處理”簡單地表示信息、數據與數據處理的關系。
數據是原料,是輸入,而信息是產出,是輸出結果。數據處理的真正含義是為了產生信息而處理數據。數據、數據處理、信息的關系如圖1.1所示。

圖1.1 數據、數據處理、信息的關系
數據的組織、存儲、檢查和維護等工作是數據處理的基本環節,這些工作一般統稱為數據管理。數據處理的核心是數據管理。數據處理與數據管理是相互聯系的,數據管理技術的優劣,將直接影響數據處理的效率。
3.計算機數據管理的發展階段
計算機在數據管理方面經歷了從低級到高級的發展過程,到目前為止,數據管理大致經歷了人工管理、文件系統、數據庫系統三個階段。
1)人工管理階段
這一階段(20世紀50年代中期以前)計算機主要用于科學計算。外部存儲器只有磁帶、卡片和紙帶,軟件只有匯編語言,還沒有數據管理方面的軟件。數據處理的方式基本上是批處理。這個時期數據管理具有以下幾個特點。
(1)數據不保存。因為當時計算機主要用于科學計算,對于數據保存的需求尚不迫切。需要時把數據輸入內存,運算后將結果輸出。數據并不保存在計算機中。
(2)沒有專用的軟件對數據進行管理。在應用程序中,不僅要管理數據的邏輯結構,還要設計其物理結構、存取方法、輸入/輸出方法等。當存儲改變時,應用程序中存取數據的子程序就需隨之改變。
(3)數據不具有獨立性。數據的獨立性是指邏輯獨立性和物理獨立性。當數據的類型、格式或輸入/輸出方式等邏輯結構或物理結構發生變化時,必須對應用程序做出相應的修改。
(4)數據是面向程序的。一組數據只對應于一個應用程序。即使兩個應用程序都涉及某些相同數據,也必須各自定義,無法相互利用。因此,在程序之間有大量的冗余數據。這時期數據與程序的關系如圖1.2所示。

圖1.2 人工管理階段數據與程序的關系
2)文件系統階段
這一階段(20世紀50年代后期到60年代中期)計算機不僅用于科學計算,還用于信息管理。此時,外部存儲器已有磁盤、磁鼓等直接存取的存儲設備;軟件領域出現了高級語言和操作系統。操作系統中的文件系統是專門的數據管理軟件。這時可以把相關的數據組成一個文件存放在計算機中,在需要時只要提供文件名,計算機就能從文件系統中找出所要的文件,把文件中存儲的數據提供給用戶進行處理。這個時期數據管理具有以下幾個特點。
(1)數據以“文件”形式可長期保存在外部存儲器的磁盤上。應用程序可對文件進行大量的檢索、修改、插入和刪除等操作。
(2)文件組織已多樣化。有索引文件、順序存取文件和直接存取文件等。因而對文件中的記錄可順序訪問,也可隨機訪問,便于存儲和查找數據。
(3)數據與程序間有一定的獨立性。數據由專門的軟件即文件系統進行管理,程序和數據間由軟件提供的存取方法進行轉換,數據存儲發生變化不一定影響程序的運行。
(4)對數據的操作以記錄為單位。這是由于文件中只存儲數據,不存儲文件記錄的結構描述信息。文件的建立、存取、查詢、插入、刪除、修改等所有操作,都要用程序來實現。
在文件系統階段,仍有很多缺點。主要表現在以下幾個方面。
(1)數據冗余度大。由于各數據文件之間缺乏有機的聯系,造成每個應用程序都有對應的文件,有可能同樣的數據在多個文件中重復存儲,數據不能共享。
(2)數據獨立性低。數據和程序相互依賴,一旦改變數據的邏輯結構,必須修改相應的應用程序。而應用程序發生變化,如改用另一種程序設計語言來編寫程序,也需修改數據結構。
(3)數據一致性差。由于相同數據的重復存儲、各自管理,在進行更新操作時,容易造成數據的不一致。
這樣,文件系統仍然是一個不具有彈性的無結構的數據集合。文件之間是孤立的、不能反映現實世界中事物之間的內在聯系。這時期數據與程序的關系如圖1.3所示。

圖1.3 文件系統階段數據與程序的關系
3)數據庫系統階段
數據管理技術進入數據庫系統階段是在20世紀60年代末。由于計算機應用于管理的規模更加龐大,數據量急劇增加;硬件方面出現了大容量磁盤,使計算機聯機存取大量數據成為可能;硬件價格下降,而軟件價格上升,使開發和維護系統軟件的成本增加。文件系統的數據管理方法已無法適應開發應用系統的需要。為解決多用戶、多個應用程序共享數據的需求,出現了統一管理數據的專門軟件系統,即數據庫管理系統。這使利用數據庫技術管理數據變成了現實。這時期數據管理的特點有以下幾方面。
(1)數據共享性高、冗余度低。這是數據庫系統階段的最大改進,數據不再面向某個應用程序而是面向整個系統,當前所有用戶可同時訪問數據庫中的數據。這樣就減少了不必要的數據冗余,節約了存儲空間,同時也避免了數據之間的不相容性與不一致性。
(2)數據結構化。即按照某種數據模型,將應用的各種數據組織到一個結構化的數據庫中。在數據庫中數據的結構化,不僅要考慮某個應用的數據結構,還要考慮整個系統的數據結構,并且還要能夠表示出數據之間的有機關聯。
(3)數據獨立性高。數據的獨立性是指邏輯獨立性和物理獨立性。數據的邏輯獨立性是指當數據的總體邏輯結構改變時,數據的局部邏輯結構不變。由于應用程序是依據數據的局部邏輯結構編寫的,所以應用程序不必修改,從而保證了數據與程序間的邏輯獨立性。數據的物理獨立性是指當數據的存儲結構改變時,數據的邏輯結構不變,從而應用程序也不必改變。
(4)有統一的數據控制功能。數據庫為多個用戶和應用程序所共享,對數據的存取往往是并發的,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中的同一個數據。為確保數據庫數據的正確有效和數據庫系統的有效運行,數據庫管理系統提供下述四方面的數據控制功能。
①數據的安全性控制:防止不合法使用數據造成數據的泄露和破壞,保證數據的安全和機密。例如,系統提供口令檢查或其他手段來驗證用戶身份,防止非法用戶使用系統;也可以對數據的存取權限進行限制,只有通過檢查后才能執行相應的操作。
②數據的完整性控制:系統通過設置一些完整性規則以確保數據的正確性、有效性和相容性。正確性是指數據的合法性,如年齡屬于數值型數據,只能包含0,1,…,9,不能包含字母或特殊符號。有效性是指數據是否在其定義的有效范圍內,如月份只能用1~12之間的正整數表示。相容性是指表示同一事實的兩個數據應相同,否則就不相容,如一個人不能有兩個性別。
③并發控制:防止多用戶同時存取或修改數據庫時,因相互干擾而提供給用戶不正確的數據,并使數據庫受到破壞。
④數據恢復:當數據庫被破壞或數據不可靠時,系統有能力將數據庫從錯誤狀態恢復到最近某一時刻的正確狀態。
這時期數據與程序之間的關系如圖1.4所示。
4.數據庫系統的新技術
隨著科學技術和數據庫系統的發展,從20世紀80年代開始數據庫研究又出現了許多新的領域,相繼研究出了分布式數據庫系統、面向對象數據庫系統和網絡數據庫系統。
1)分布式數據庫系統
20世紀80年代,隨著數據庫技術的廣泛應用,并與迅速發展的網絡技術相結合,產生了分布式數據庫系統。分布式數據庫是一個物理上分布在計算機網絡的不同結點,但在邏輯上又同屬于一個系統的數據集合。在分布式數據庫系統中,數據庫存儲在幾臺計算機中,這幾臺計算機之間通過高速網絡相互通信,計算機之間沒有共享公共的內存或磁盤,系統中每一臺計算機稱為一個結點。其一般結構如圖1.5所示。

圖1.4 數據庫系統階段數據與程序的關系

圖1.5 分布式數據庫系統
在分布式數據庫系統中,應用分為局部應用和全局應用兩種。局部應用是指僅操作本地結點上數據庫的應用;而全局應用是指需要操作兩個或兩個以上結點中的數據庫的應用。例如,一個銀行系統中,有多個分支機構分布在不同的城市,每個分支機構有自己的服務器(結點),用來維護該分支機構的所有賬戶的數據庫。同時有若干客戶機,用來完成本地客戶的存、取款業務等(局部應用)。分支機構的客戶機也可以完成某些全局應用,如不同分支機構中賬戶之間的轉賬,就需要同時訪問和更新兩個結點上的數據庫中的數據。不支持全局應用的系統不能稱為分布式數據庫系統。同時,分布式數據庫系統不僅要求數據的物理分布,而且要求這種分布是面向處理、面向應用的。
分布式數據庫系統是物理上分散,邏輯上集中的數據庫系統,系統中的數據分別存放在計算機網絡的不同結點上,網絡中的每個結點具有獨立處理的能力(稱為場地自治),可以執行局部應用,每個結點也可以通過網絡通信子系統執行全局應用。
分布式數據庫系統主要有如下幾個特點。
(1)數據的物理分布性。數據庫中的數據分布在計算機網絡的不同結點上,而不是集中在一個結點上。因此它不同于通過計算機網絡共享的集中式數據庫系統。
(2)數據的邏輯整體性。分布在計算機網絡不同結點上的數據在邏輯上屬于同一個系統,因此,它們在邏輯上是相互聯系的整體。
(3)結點的自主性。每個結點有自己的計算機、數據庫(即局部數據庫,簡稱LDB)、數據庫管理系統(LDBMS),因而能獨立地管理局部數據庫。局部數據庫中的數據可以供本結點的用戶存取(局部應用),也可以供其他結點上的用戶存取以供全局應用。
2)面向對象數據庫系統
20世紀90年代,許多從事數據庫研究的學者把數據庫技術和面向對象技術相結合,研究出一種新的數據庫系統——面向對象數據庫系統(Object Oriented DataBase System,OODBS),以滿足新的應用需要。面向對象數據庫系統的研究有兩種觀點,一種是在面向對象程序設計語言中引入數據庫技術,另一種是從關系數據庫系統自然地引入面向對象技術而進化到具有新功能的結果。現在一般把前一類數據庫系統稱為面向對象數據庫系統(OODBS),后一類稱為對象關系數據庫系統(Object Relation DataBase System,ORDBS),這兩類統稱為對象數據庫系統。本書主要介紹對象關系數據庫系統。
目前,各個關系數據庫廠商都在不同程度上擴展了關系模型,推出了符合面向對象數據模型的數據庫系統。面向對象的數據模型吸收了面向對象程序設計方法的核心概念和基本思想,用面向對象的觀點來描述現實世界的實體。
對象關系數據庫系統可定義為在關系數據模型的基礎上,提供元組、數組、集合等豐富的數據類型以及處理新的數據類型的能力,并且具有繼承性和對象標識等面向對象特點,這樣形成的數據模型稱為對象關系數據模型。基于對象關系模型的數據庫系統稱為對象關系數據庫系統。所以對象關系數據庫系統除了具有原來關系數據庫的各種特點外,還具有以下特點。
(1)擴充數據類型。以關系數據庫和SQL為基礎,擴展關系數據模型,增加面向對象的數據類型和特性。新的數據類型可定義為原有類型的子類或超類。新的數據類型定義之后,存放在數據庫管理系統中,如同基本數據類型一樣,可供所有用戶共享。
(2)支持復雜對象。OODBS中的基本結構是對象而不是記錄,一個對象不僅包括描述它的數據,還包括對它操作的方法。它不僅支持簡單的對象,還支持由多種基本數據類型或用戶自定義的數據類型構成的復雜對象,支持子類、超類和繼承的概念,因而能對現實世界的實體進行自然而直接的模擬,可表示諸如某個對象由“哪些對象組成”,有“什么性質”,處在“什么狀態”,具有豐富的語義信息,這是傳統數據庫所不能比擬的。
(3)提供通用的規則系統。規則在數據庫管理系統(DataBase Management System,DBMS)及其應用中是十分重要的,在傳統的關系數據庫管理系統(Relation DataBase Management System,RDBMS)中用觸發器來保證數據庫的完整性。觸發器可以看成規則的一種形式。OODBS支持的規則系統將更加通用,更加靈活。例如,規則中的事件和動作可以是任何的SQL語句,可以使用用戶自定義的函數,規則還能夠被繼承。這就大大增強了OODBS功能,使之具有主動數據庫的特性。
面向對象數據庫系統的功能要求:①在數據模型方面,引入面向對象的概念,包括對象、類、對象標識、封裝、繼承、多態性、類層次結構等;②在數據庫管理方面,提供與擴展對持久對象、長事務的處理能力以及并發控制、完整性約束等能力;③在數據庫界面方面,支持消息傳遞,提供計算能力完備的數據庫語言,解決數據庫語言與宿主語言的失配問題,并且數據庫語言應具有類似SQL的非過程化的查詢功能。
除此之外,還要求兼顧對傳統的關系數據的管理能力。
面向對象數據庫系統主要研究的問題有對象數據模型、高效的查詢語言、并發的事務處理技術、對象的存儲管理以及版本管理等。
3)網絡數據庫系統
隨著客戶機/服務器結構的出現,使得人們可以最有效地利用計算機資源。在客戶機/服務器結構中的服務器又稱數據庫服務器,主要用于放置數據庫管理系統以及存儲數據,而客戶機則負責應用邏輯與用戶界面。它們通過網絡互連,當客戶機需要訪問數據時,向服務器提出某種數據或服務請求,服務器將響應這些請求并把結果或狀態信息返回給客戶機。通過網絡將地理位置分散的、各自具備自主功能的若干臺計算機和數據庫系統有機地連接起來的,并且采用通信手段實現資源共享的系統稱為網絡數據庫系統。
但是在網絡環境中,為了使一個應用程序能訪問不同的數據庫系統,需要在應用系統和不同的數據庫管理系統之間加一層中間件。所謂中間件是網絡環境中保證不同的操作系統、通信協議和數據庫管理系統之間進行對話、互操作的軟件系統。其中涉及數據訪問的中間件,就是20世紀90年代提出的開放的數據庫連接(Open DataBase Connectivity,ODBC)技術和Java數據庫連接(Java DataBase Connectivity,JDBC)技術。使用ODBC和JDBC技術來進行數據庫應用程序的設計,可以使應用系統移植性更好,并且能訪問不同的數據庫系統,共享數據資源。