面 向 !" 世 紀 課 程 教 材#$%&’(() *$+,$- .(+ !"-& /$0&1+2 數據庫系統教程(第 版)!施伯樂 丁寶康 汪 衛 編著內容 提 要本書第 版列為教育部“面向 世紀課程教材”。這次再版時作了較大的修改和補充,增加了關系邏輯、!"! 遞歸 、對象聯系圖、 的類圖、標準、 、 和等內容。本書詳細介紹數據庫系統的基#$%&’%()’*()+, -)+, .’% 本原理、方法和發展趨勢。內容包括:數據庫系統的基本概念、關系模型的運算理論、 語言、規范化設計理#$% 論、數據庫設計與/0 模型、存儲結構、系統實現技術、對象數據庫、分布式數據庫、中間件技術、數據庫與、 技術。 111 .’%本書第 版在年獲教育部優秀教材二等獎。本書是作者長期從事數據庫教學和科研活動所獲得的! "22" 結晶。全書內容豐富,敘述嚴謹清楚,每章后均有適量的習題,適于教和學。與本書配套的《數據庫系統教程 習題解答及上機指導》已經出版。本書的教學課件()也已上網,需要者可到計算機教學資源網34567 3489::處下載。 ;::< = = >? @ ;6< @ >4A @ >9本書可作為高等院校計算機有關專業的數據庫課程教材,也可供從事信息領域工作的科技人員和工程技術人員以及其他有關人員參閱。
第 版前言!《數據庫系統教程》第 版自年 月出版以來,在計算機界同仁和學生!!""" !# 那里得到了很大的反響,并于#$$# 年獲教育部優秀教材二等獎。進入 世紀以后,無論是市場的需求還是技術條件的成熟,對象數據庫技術#! 和網絡數據庫技術的推廣和普及已成定局,這些技術將成為新時代數據庫技術應 用的主流技術。為此,我們對第! 版的結構作了如下的改動:在第 章關系運算理論中增加了關系邏輯內容,在第 章的語言中增!#%&’( 加了遞歸查詢內容,并把’)* 內容縮寫成對&*(*+, 語句的圖示解釋。把數據庫設計從第 章中抽出來,單獨成為新的第 章,并著重介紹 模!-.*/ 型,并列舉了四個較大的 模型實例。原來的第 、章就順延為新的第 、章。*/. 00 1 在第 章中,對系統實現技術進行了改寫,讀起來更為通順。1原來的第 、 章內容改寫為新的第 章對象數據庫系統,并增加了!2 "2 3456# 7$ 標準內容,以及使用85( 類圖概念對象建模的內容。同時刪去了原來 的第 章。!$對原來的第 章分布式數據庫內容,改寫成新的第 章。!1"增加了三章新的內容:第 章中間件,第 章數據庫與,第 章!!$!!999!# :5( 技術。
本書的主要目的是使讀者掌握數據庫技術的基本原理、方法和應用技術,能有 效地使用現有的數據庫管理系統,掌握數據庫結構的設計和數據庫應用系統的開 發方式,同時也適時地掌握對象數據庫和網絡數據庫等技術。全書共分!# 章,具體內容如下:第 章介紹數據庫技術的基本概念,包括數據模型、數據庫的體系結構和數據! 庫系統的全局結構。第# 章介紹關系模型和關系運算理論,包括關系代數、關系演算和關系邏輯。第 章介紹關系數據庫標準語言的數據定義、操縱、嵌入式等內容。%&’(第- 章介紹關系數據庫的規范化設計理論,包括函數依賴、模式分解特性、范 式和模式設計方法等問題。第 章介紹數據庫設計的全過程、 模型以及 模型到關系模型的轉換規則。.*/*/第0 章介紹數據庫的存儲結構,包括存儲介質層次、文件結構、索引技術和散第 版前言 44列技術等內容。第 章紹數據庫系統實現的技術,包括事務概念及恢復、并發控制、完整性和!安全性等實現機制。第 章介紹對象數據庫系統的兩種形式:和。介紹其定義語言和"#$%& ##%&操縱語言,還介紹了概念對象建模的兩種圖示形式:對象聯系圖和’() 的類圖。第 章介紹分布計算的兩種形式:客戶機 服務器系統和分布式數據庫系統。
*+第 章介紹數據庫技術的兩種中間件技術:技術和技術。,-#%&./%&.第 章介紹數據庫與的關系和結合,以及 和等語言。,,000/12 232第,4 章介紹5() 技術的基本概念和5() 查詢語言。本書對某些較深的內容,在章節前加了符號“ ”;在每一道例題或定理的結尾!處,加了符號“ ”,以示與正文的區別。"全書內容豐富,具有理論性、實用性和可操作性。每章后均有適量的習題,以配合對知識點的掌握。教師講授時應根據需要對內容作適當取舍。本書可采取如下的教學方法:()講授的重點應是第、章。對于第 章和第 章中理論性較強的內容,, 6 7 !48(目錄中加 的節),可作適當壓縮。第 章的重點是關系代數,第 章的重點是函!48數依賴和范式。()對于第 章的存儲結構內容,教師可作適當引導讓學生自學,以拓寬知識面。49()對于第 章的對象數據庫內容,教師可作適當引導讓學生自學,以提高學:"生的工作能力和研究水平。()對于第章,教師可有針對性地選擇某些內容向學生講授。8* 6 ,4本書是我們數據庫教學小組4- 多年教學和科研成果的結晶,凝聚了幾代人的心血。在此向給青年教師做出表率的羅文化、樓榮生等老教師致以崇高的敬意。
本次修訂工作第 章由許建軍執筆,第 章由周華奇執筆,第 、 章由汪衛執7,-,, ,4筆,其余章節由丁寶康執筆。參與本書修訂工作的還有陳長洪、張謐、吳愛華、龐引明、謝閩峰、吳清茂和曾宇昆等老師。最后由施伯樂、丁寶康和汪衛一起對全稿進行了修改和統稿。為了滿足大家對使用本書作為主教材的教和學的要求,我們還組織了《數據庫系統教程習題解答及上機指導》,隨之一起出版。限于水平,書中欠妥之處,敬請廣大讀者和專家批評指正。對本書的意見請按地址;< = >?@?A B ,>934$434$4年,美國(,數據庫系統語言協會)組織?@&A9BC ?/-.+0+-D+ @- &’(’ 96*(+1 C’-:E’:+的數據庫任務組( )發表關于網狀模型的報告( 年正式通過);&)FG&)"年, 公司的發表論文提出關系模型。這三件事奠定了現代數據庫技,)>I J K J ?/;;第 章 數據庫概論 !5術的基礎。世紀 年代是數據庫蓬勃發展的年代,網狀系統和層次系統占據了整個!" #"數據庫商用市場,而關系系統僅處于實驗階段。許多計算機廠商研制了各種數據庫管理系統,許多學者發表了大量研究性論文,使數據庫技術在實踐中和理論上得到飛速發展。
數據庫技術也日趨成熟。世紀 年代,隨著計算機硬件性能的改善,關系系統由于使用簡便,逐步!" $"代替網狀系統和層次系統占領了市場。同時關系數據庫的理論日趨完善,走向更高級的階段。數據庫的理論以及新系統的研究繼續進行,不斷深化。此時關系數據庫語言%&’ 成了國際標準語言。世紀 年代,關系數據庫已成為數據庫技術的主流。由于受到計算機應!" ("用領域以及其他分支學科的影響,數據庫技術與面向對象技術、網絡技術相互滲透,人們在對象數據庫技術和網絡數據庫技術方面進行了深入的研究。由于) * + * ,-./0-1 在網狀模型和2,34 報告中的貢獻,他在5(#6 年榮獲美國計算機學會( )圖靈獎。在關系模型上作出了杰出的開拓性貢獻,在7)89 * : * );1CB術等都是使用了數據庫技術的計算機應用系統。本書第章介紹傳統的數據庫技術,內容包括關系運算理論、 語言、規! D #%&’范化設計理論、 模型、存儲結構和系統實現技術。第 章介紹對象數據庫技術9E$的兩種形式:對象關系數據庫和面向對象數據庫。第 章介紹分布式數據庫系(統。第 章介紹中間件技術。第 、 章介紹數據庫與及技術。
5"55 5!+++F8’!" !" ! 數據和信息數據,是數據庫系統研究和處理的對象。數據與信息是分不開的,它們既有聯系又有區別。信息是許多學科廣泛使用的概念。在不同的領域中,其含義有所不同。但人們普遍認為信息與能源、材料科學并列,構成現代社會的三大支柱。在數據處理領域,一般把信息理解為關于現實世界事物存在方式或運動狀態 #$ # 引 言! 的反映。例如,我們上課用的黑板,顏色是黑的,形狀是矩形,尺寸是長 、高! "#$% ",材料是木材,這些都是關于黑板的信息,是黑板存在狀態的反映。信息有許多重要的特征:信息來源于物質和能量;信息是可以感知的;信息是 可以存儲的;信息是可以加工、傳遞和再生的。這些特點,構成了信息的最重要的 自然屬性。作為信息的社會屬性,信息已經成為社會上各行各業不可缺少的重要 資源之一。人類獲取、積累并利用信息是認識和改造客觀世界的必要過程。借助 信息,人類才能獲得知識,才能有效地組織社會各種活動。因此,信息是人類維持 正常活動不可缺少的資源。幾乎和信息同樣廣泛使用的另一個概念是“數據”。所謂數據,通常指用符號 記錄下來的、可以識別的信息。例如描述黑板的信息,用一組數據“黑色、矩形、! 、 ”表示。
由于這些符號已被人們賦予了特定的語義,因此它們就具有傳遞 " #$% " 信息的功能。可以看出,信息與數據之間存在著固有的聯系:數據是信息的符號表示或稱 為載體;信息則是數據的內涵,是對數據語義的解釋。數據表示了信息數據庫系統教程第2版,而信息只 有通過數據形式表示出來才能被人們理解和接受。盡管兩者在概念上不盡相同, 但通常人們并不嚴格去區分它們。 !" !"# 數據處理與數據管理數據處理也可稱為信息處理,因為當把客觀事物表示成數據后,這些數據便被 人們賦予了特定的含義,從而為人們提供了不必直接觀察和度量事物就可以獲得 有關信息的手段。數據處理是指從某些已知的數據出發,推導加工出一些新的數 據,這些新的數據又表示了新的信息。在具體操作中,涉及到數據庫收集、管理、加 工利用乃至信息輸出的演變與推導全過程。在數據處理中,通常計算比較簡單,而數據的管理比較復雜。數據管理是指數 據的收集、整理、組織、存儲、維護、檢索、傳送等操作,這部分操作是數據處理業務 的基本環節,而且是任何數據處理業務中必不可少的共有部分。對數據管理部分, 應研制出一個通用、高效而又使用方便的管理軟件,把數據有效地管理起來,以便 最大限度地減輕程序員的負擔;至于處理業務中的加工計算,因不同業務各不相 同,要靠程序員根據業務情況編寫應用程序加以解決。
所以,數據處理是與數據管 理相聯系的,數據管理技術的優劣,將直接影響數據處理的效率。數據庫技術正是 瞄準這一目標研究、發展并完善起來的專門技術。第 章 數據庫概論 5)!" !"# 數據庫技術的基本術語在數據庫應用中,常用到 、 、 等術語,形式定義如下。!" !"#$ !"$定義數據庫(,簡記為 )!" !!%&%"%’(!"是長期存儲在計算機內、有組織的、統一管理的相關數據的集合。 能為!"!"各種用戶共享,具有較小冗余度、數據間聯系緊密而又有較高的數據獨立性等特點。定義數據庫管理系統(!"$!%&%"%’( #%+%,(-(+&$.’&(-,簡記為!"#$)是位于用戶與操作系統( )之間的一層數據管!"#$/$理軟件,如圖)* ) 所示,它為用戶或應用程序提供訪問!"的方法,包括 的建立、查詢、更新及各種數據控制。!"!"#$ 總是基于某種數據模型,可以分為層次型、網狀型、關系型和面向對象型等。定義數據庫系統(,簡記為)!"#!%&%"%’( $.’&(-!"$圖)* ) 系統層次圖!"$ 是實現有組織地、動態地存儲大量關聯數據、方便多用戶訪問的計算機硬件、軟件和數據資源組成的系統,即它是采用數據庫技術的計算機系統。
定義!"% 數據庫技術數據庫技術是研究數據庫的結構、存儲、設計、管理和使用的一門軟件課程。數據庫技術是在操作系統的文件系統基礎上發展起來的,而且!"#$ 本身要在操作系統支持下才能工作。數據庫與數據結構之間的聯系也很密切,數據庫技術不僅要用到數據結構中鏈表、樹、圖等知識,而且還豐富了數據結構的內容。應用程序是使用數據庫系統最基本的方式,在系統中大量的應用程序都是用高級語言(例如、等)加上數據庫的操縱語言聯合編制的。集合論、數理邏輯是關0/"/1 0系數據庫的理論基礎,很多概念、術語、思想都直接用到關系數據庫中。因此,數據庫技術是一門綜合性較強的課程。 ! "# 數據庫的由來和發展計算機的數據處理應用,首先要把大量的信息以數據形式存放在存儲器中。存儲器的容量、存儲速率直接影響到數據管理技術的發展。)234 年生產的第一臺 $’( 數據庫的由來和發展! 磁盤,其容量僅為,而現在已達,如圖 所示。目前光盤已經被廣!"#$%& &&&"#$’( 泛應用,容量已達數千兆字節。存儲器的發展,為數據庫技術提供了良好的物質基 礎。時間(年)$)!* $)*! $)+$ $)+% $)%$ $)%! $))! (&&,容量( 軸)"#-!,&$&& *&& $ (&& ! &&& $& &&& $%& &&&圖$’( 磁盤容量的發展使用計算機以后,數據處理的速度和規模無論相對于手工方式還是機械方式 都是無可比擬的,隨著數據處理量的增長,產生了數據管理技術。
數據管理技術的 發展,與計算機硬件(主要是外部存儲器)、系統軟件及計算機應用的范圍有著密切 的聯系。數據管理技術的發展經歷了以下四個階段:人工管理階段、文件系統階 段、數據庫階段和高級數據庫階段。 !"# " ! 人工管理階段在這一階段( 世紀 年代中期以前),計算機主要用于科學計算,其他工作(&!& 還沒有展開。外部存儲器只有磁帶、卡片和紙帶等,還沒有磁盤等直接存取存儲設 備。軟件只有匯編語言,尚無數據管理方面的軟件。數據處理的方式基本上是批 處理。這個時期的數據管理有以下特點:()數據不保存在計算機內。計算機主要用于計算,一般不需要長期保存數$ 據。在進行某一課題計算時,將原始數據隨程序一起輸入內存,運算處理后將結果 數據輸出。隨著計算任務的完成,用戶作業退出計算機系統,數據空間隨著程序空間 一起被釋放。()沒有專用的軟件對數據進行管理。每個應用程序都要包括存儲結構、存( 取方法、輸入- 輸出方式等內容。程序中的存取子程序隨著存儲結構的改變而改 變,因而數據與程序不具有獨立性。存儲結構改變時,應用程序必須改變。此時, 由于程序直接面向存儲結構,因此數據的邏輯結構與物理結構沒有區別。
()只有程序()的概念,沒有文件( )的概念。數據的組織方式必須,./01/ 由程序員自行設計與安排。()數據面向程序。即一組數據對應一個程序。8 !"# "# 文件系統階段在這一階段( 世紀 年代后期至 年代中期),計算機不僅用于科學計算,(&!&*&第 章 數據庫概論 ;!還用于信息管理。隨著數據量的增加,數據的存儲、檢索和維護問題成為緊迫的需要,數據結構和數據管理技術迅速發展起來。此時,外部存儲器已有磁盤、磁鼓等直接存取存儲設備。軟件領域出現了高級語言和操作系統。操作系統中的文件系統是專門管理外存的數據管理軟件。數據處理的方式有批處理,也有聯機實時處理。這一階段的數據管理有以下特點:()數據以“文件”形式可長期保存在外部存儲器的磁盤上。由于計算機的應!用轉向信息管理,因此對文件要進行大量的查詢、修改和插入等操作。()數據的邏輯結構與物理結構有了區別,但比較簡單。程序與數據之間具"有“設備獨立性”,即程序只需用文件名就可與數據打交道,不必關心數據的物理位置。由操作系統的文件系統提供存取方法(讀# 寫)。()文件組織已多樣化。有索引文件、鏈接文件和直接存取文件等。但文件$之間相互獨立、缺乏聯系。
數據之間的聯系要通過程序去構造。()數據不再屬于某個特定的程序,可以重復使用。數據雖然面向應用,但是%文件結構的設計仍然基于特定的用途,程序基于特定的物理結構和存取方法,因此程序與數據結構之間的依賴關系并未根本改變。在文件系統階段,由于具有設備獨立性,因此當改變存儲設備時,不必改變應用程序。但這只是初級的數據管理,還未能徹底體現用戶觀點下的數據邏輯結構獨立于數據在外存的物理結構要求。在修改數據的物理結構時,仍然需要修改用戶的應用程序。即應用程序具有“程序& 數據依賴”性。有關物理表示的知識和訪問技術將直接體現在應用程序的代碼中。()對數據的操作以記錄為單位。這是由于文件中只存儲數據,不存儲文件’記錄的結構描述信息。文件的建立、存取、查詢、插入、刪除、修改等所有操作,都要用程序來實現。文件系統階段是數據管理技術發展中的一個重要階段。在這一階段中,得到充分發展的數據結構和算法豐富了計算機科學,為數據管理技術的進一步發展打下了基礎。隨著數據管理規模的擴大,數據量急劇增加,文件系統顯露出三個缺陷:()數據冗余()。由于文件之間缺乏聯系,造成每個應用程序都有!()*+,*-,./對應的文件數據庫系統教程第2版,有可能同樣的數據在多個文件中重復存儲;()數據不一致()。
這往往是由數據冗余造成的,在進行更新操"0,.1,2324),./作時,稍不謹慎,就可能使同樣的數據在不同的文件中不一樣;()數據聯系弱()。這是由于文件之間相互獨立,缺乏聯$5116 7-4- ()8-431,293:系造成的。 ,A# 數據庫的由來和發展 ? > 3@$$ 關系數據庫的理論基礎。世紀 年代以來,數據庫技術得到迅速發展,開發出了許多產品,并投入#"? 數據描述--歸的聯系。()具有面向對象技術的封裝性(把數據與操作定義在一起)和繼承性(繼承!數據結構和操作)的特點,提高了軟件的可重用性。本書第" 章詳細介紹這一部分的內容。! " 網絡數據庫系統隨著 (客戶機 服務器)結構的出現,人們可以最有效地使用計算機資源。#$ %$但在網絡環境中,如何隱藏各種復雜性,這就要使用中間件。中間件是網絡環境中保證不同的操作系統、通信協議和&’(% 之間進行對話、互操作的軟件系統。其中涉及到數據訪問的中間件,就是 世紀 年代提出的技術和技術。!)*)+&’#,&’#這個內容將在本書的第-) 章詳細介紹。現在,計算機網絡已成為信息化社會中十分重要的一類基礎設施。隨著廣域網( )的發展,信息高速公路已發展成為因特網()。
采用通信手段將地./0理位置分散的、各自具備自主功能的若干臺計算機和數據庫系統有機地連接起來組成因特網,用于實現通信交往、資源共享或協調工作等目標。這個目標在 世!)紀末已經實現,正在對社會的發展起著極大的推進工作。本書第-- 章介紹數據庫與網絡相結合的一些內容,其中包括... 與數據庫交互的方法,以及.46 應用中幾種常用工具: 、 和。第 章介紹作為上的一種數據發布語/%7 ,%7 787-!言9(: 的有關內容,包括9(: 數據的各種存儲與查詢技術。 ! "# 數據描述在數據處理中,數據描述將涉及到不同的范疇。從事物的特性到計算機中的具體表示,實際上經歷了三個階段———概念設計中的數據描述、邏輯設計中的數據描述和物理設計中的數據描述。本節先介紹這三個階段的數據描述,再介紹數據之間聯系如何描述。#"! " # 概念設計中的數據描述數據庫的概念設計是根據用戶的需求設計數據庫的概念結構。這一階段將用到以下四個術語。()實體( ):客觀存在,可以相互區別的事物稱為實體。實體可以是具-;23*(;