關于我們
書單推薦
新書推薦
|
數(shù)據(jù)庫系統(tǒng):設計、實現(xiàn)與管理(進階篇)(原書第6版)
本書是數(shù)據(jù)庫領域的經(jīng)典暢銷著作,被世界多所大學選為教材,同時被廣大技術人員和管理人員視為必讀書。本書作者曾在工業(yè)界致力于數(shù)據(jù)庫系統(tǒng)的設計,后進入學術界精耕于教學,深諳專業(yè)人士和非專業(yè)人士在使用和學習數(shù)據(jù)庫時的痛點。因此,本書采用這兩類讀者都易于接受和理解的方式,全面介紹數(shù)據(jù)庫設計、實現(xiàn)和管理的基本理論、方法和技術。
前言背景在過去的30年中,數(shù)據(jù)庫的研究帶來了巨大的生產(chǎn)力,使得數(shù)據(jù)庫系統(tǒng)成為軟件工程領域最重要的成果。目前,數(shù)據(jù)庫作為信息系統(tǒng)的基本框架,已從根本上改變了許多公司的運作方式。特別是在最近幾年里,隨著這項技術本身的發(fā)展,產(chǎn)生了一些功能更強大、使用更方便的系統(tǒng)。這使得數(shù)據(jù)庫系統(tǒng)變得越來越普及,用戶類型也越來越廣泛。遺憾的是,正是由于數(shù)據(jù)庫系統(tǒng)的簡單性,許多用戶有可能尚缺乏必要的知識,還不懂得如何開發(fā)正確且高效的系統(tǒng),就開始創(chuàng)建數(shù)據(jù)庫及其應用程序了。這樣很可能導致所謂的“軟件危機”(software crisis,有時也稱為“軟件抑郁”(software depression))的延續(xù)。
編寫本書的最初動因是我們在工業(yè)界的工作經(jīng)歷,當時我們?yōu)樾萝浖到y(tǒng)中數(shù)據(jù)庫的設計提供咨詢,間或也解決遺留系統(tǒng)中存在的種種問題。進入學術界后,我們從另一類用戶—學生那里發(fā)現(xiàn)了類似的問題。因此,本書的目標就是給出一本教程,盡可能清楚地介紹數(shù)據(jù)庫的基礎理論,并給出一套既能為專業(yè)技術人員亦能為非技術人員所用的數(shù)據(jù)庫設計方法學。
本書針對當前主流的商用產(chǎn)品—關系數(shù)據(jù)庫管理系統(tǒng)(DBMS)給出的設計方法學,已在學術界和工業(yè)界測試和使用了許多年。它包括三個主要階段:數(shù)據(jù)庫的概念設計、邏輯設計和物理設計。第一個階段在不考慮任何物理因素的前提下設計概念數(shù)據(jù)模型,得到的數(shù)據(jù)模型在第二階段被細化為邏輯數(shù)據(jù)模型,細化過程主要是去除在關系系統(tǒng)中無法表示的結(jié)構(gòu)。在第三階段,邏輯數(shù)據(jù)模型被轉(zhuǎn)換成針對目標DBMS的物理設計,物理設計階段主要考慮如何設計存儲結(jié)構(gòu)和訪問方法,以便有效并安全地訪問存儲在輔存中的數(shù)據(jù)庫。
該方法學按階段被分為一系列步驟。對于缺少經(jīng)驗的設計者,最好按步驟進行設計,這里所提供的指南可幫助你完成整個過程。對于有經(jīng)驗的設計者,該方法學的指導作用顯然會弱化,但經(jīng)常可用于開發(fā)框架和檢查列表。為了幫助讀者學習使用上述方法學并理解其要點,整個方法學的描述中始終貫穿一個完整的DreamHome案例研究。附錄B還給出了另外三個案例,供讀者自行研究。
UML(統(tǒng)一建模語言)越來越多的公司都在規(guī)范各自的數(shù)據(jù)建模方法,即選擇一種特定的建模方法并在整個數(shù)據(jù)庫開發(fā)項目中始終如一地使用它。一種在數(shù)據(jù)庫概念設計和邏輯設計階段較為通用的高級數(shù)據(jù)模型是ER(實體-聯(lián)系)模型,這也是本書采用的模型。由于當前還沒有表示ER模型的標準方法,因此大部分書籍在描述關系DBMS的數(shù)據(jù)庫設計時,常常使用下述兩種表示方法之一:
Chen氏表示方法,即用矩形表示實體,用菱形表示聯(lián)系,用線段連接矩形和菱形。
Crow Feet(鴉爪)表示方法,仍用矩形表示實體,用實體間的連線表示聯(lián)系,在一對多聯(lián)系連線的多端有一個鴉爪標記。
當前,這兩種表示方法都有計算機輔助軟件工程(CASE)工具。然而,它們都難于使用和解釋。本書的較早版本曾使用Chen氏表示方法,而在隨后培生教育出版集團進行的一次問卷調(diào)查中,比較一致的意見是應該使用最新的稱為UML(Unified Modeling Language,統(tǒng)一建模語言)的面向?qū)ο蠼UZ言。UML表示方法結(jié)合了面向?qū)ο笤O計三大流派的成分:Rumbaugh的OMT建模語言,Booch的面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O計,以及Jacobson的Objectory。
換用表示方法主要有以下三個原因:(1)UML正成為一種工業(yè)標準,例如,對象管理組(OMG)已經(jīng)采納UML作為對象方法的標準表示方法;(2)UML表達清楚并易于使用;(3)UML目前已被學術界用于面向?qū)ο蠓治雠c設計的教學,在數(shù)據(jù)庫模塊的教學中也使用UML將會更加一致。因此,在這個版本中,我們將采用UML的類圖作為ER模型的表示方法。讀者將會發(fā)現(xiàn)這種表示方法更加容易理解和使用。
第6版的更新之處擴展了第3章“數(shù)據(jù)庫的結(jié)構(gòu)與Web”,增加了云計算。
修改了第21章“數(shù)據(jù)管理中的職業(yè)、法律與道德問題”。
增加了“數(shù)據(jù)倉庫與時態(tài)數(shù)據(jù)庫”(31.5節(jié))。
每章后增加了新的思考題和習題。
修改了與SQL相關的章節(jié),全面反映2011年公布的新標準SQL:2011。
修訂了第26章“復制與移動數(shù)據(jù)庫”。
修改了關于Web-DBMS集成和XML的章節(jié)。
與Oracle相關的內(nèi)容一律修改為針對Oracle 11g。
讀者對象本書可作為本科生數(shù)據(jù)庫管理或數(shù)據(jù)庫設計的導論性教材,也可作為研究生或高年級本科生相關課程的教材,學時可分為一到兩個學期。通常信息系統(tǒng)、商業(yè)IT或計算機科學等專業(yè)都包含這類課程。
本書還可以作為一些IT專業(yè)人士的參考書,如系統(tǒng)分析和設計人員、應用程序開發(fā)人員、系統(tǒng)程序員、數(shù)據(jù)庫從業(yè)人員及獨立的自學者。隨著當今數(shù)據(jù)庫系統(tǒng)的廣泛使用,這些專業(yè)人士可能來自于需要數(shù)據(jù)庫的任何類型的公司。
讀者在學習關于物理數(shù)據(jù)庫設計的第18章和關于查詢處理的第23章之前,如果對附錄F中介紹的文件組織和數(shù)據(jù)結(jié)構(gòu)相關概念有清楚的了解,那么將會有所幫助。理想的情況是這些背景知識已從前導課程中獲得。如果不具備這個條件,則可以在開始數(shù)據(jù)庫課程后,學完第1章立即學習附錄F。
如果讀者已經(jīng)掌握了一門高級編程語言,比如C,那么在學習附錄I的嵌入式與動態(tài)SQL和28.3節(jié)的ObjectStore時會更有成效。
突出特點(1)為數(shù)據(jù)庫邏輯設計和概念設計提供了易用、逐步指導的方法學,該方法學基于廣泛采用的實體-聯(lián)系模型并將規(guī)范化作為驗證技術。此外,通過一個完整的案例研究來說明如何使用這套方法學。
(2)為數(shù)據(jù)庫物理設計提供了易用、逐步指導的方法學,包括:邏輯設計到物理實現(xiàn)的映射,文件組織方法的選擇,適合應用程序的索引結(jié)構(gòu),以及何時引入可控冗余。此外,通過一個完整的案例研究來說明如何使用這套方法學。
。3)用獨立的章節(jié)來講解以下三個主題:數(shù)據(jù)庫設計階段在整個系統(tǒng)開發(fā)生命周期中的位置與作用;如何使用實況發(fā)現(xiàn)技術來獲取系統(tǒng)需求;如何將UML用于整個方法學。
。4)每章都采用清晰且易于理解的表述方法,如突出顯示定義,明確給出各章學習目標,在各章最后進行小結(jié)。通篇使用了大量示例和圖表來說明概念。來自現(xiàn)實生活的DreamHome案例研究貫穿全書,另外還給出若干案例供學生選作課程實踐題目。
。5)擴充了下列最新的正式標準及事實標準:結(jié)構(gòu)化查詢語言(SQL),舉例查詢(QBE),面向?qū)ο髷?shù)據(jù)庫的對象數(shù)據(jù)管理組(ODMG)標準。
。6)利用三章的篇幅,以教程式風格介紹SQL標準,包含交互式和嵌入式SQL。
。7)專設一章討論IT和數(shù)據(jù)庫中的職業(yè)、法律與道德問題。
(8)全面討論了與分布式DBMS和復制服務器相關的概念和問題。
(9)全面介紹了基于對象的DBMS中的一些概念和問題;仡櫫薕DMG標準,介紹了在最新公布的SQL版本SQL:2011中出現(xiàn)的各種對象管理機制。
(10)擴展了作為數(shù)據(jù)庫應用平臺的Web部分的內(nèi)容,并給出多個Web數(shù)據(jù)庫訪問的代碼示例。具體包括容器管理持久性(CMP)、Java數(shù)據(jù)對象(JDO)、Java持久性API(JPA)、JDBC、SQLJ、ActiveX數(shù)據(jù)對象(ADO)、ADO.NET和Oracle PL/SQL Pages(PSP)。
。11)介紹了半結(jié)構(gòu)化數(shù)據(jù)及其與XML的關系,擴展了XML的內(nèi)容和相關術語,包括XML Schema、XQuery、XQuery數(shù)據(jù)模型和形式語義。還討論了在數(shù)據(jù)庫中集成XML,以及為發(fā)布XML而在SQL:2008和SQL:2011中所做的擴展。
。12)全面介紹了數(shù)據(jù)倉庫、聯(lián)機分析處理(OLAP)和數(shù)據(jù)挖掘。
(13)全面介紹了用于數(shù)據(jù)倉庫數(shù)據(jù)庫設計的維度建模技術,并且通過一個完整的案例來演示如何使用該方法進行數(shù)據(jù)倉庫數(shù)據(jù)庫設計。
。14)介紹了DBMS系統(tǒng)實現(xiàn)的有關概念,包括并發(fā)技術和恢復控制、安全以及查詢處理和查詢優(yōu)化。
教學方法在開始撰寫本書之前,我們的目標之一就是寫一本讓讀者容易接受和理解的教材,而不管讀者具備怎樣的背景知識和經(jīng)驗。根據(jù)我們使用教材的經(jīng)驗以及從很多同事、客戶和學生中吸收的意見,實際上存在若干讀者喜愛和不喜愛的設計特性?紤]到這些因素,本書決定采用如下的風格和結(jié)構(gòu):
在每章的開頭明確說明該章的學習目標。
清楚定義每一個重要的概念,并用特殊格式突出顯示。
通篇大量使用圖表來支持和闡明概念。
面向?qū)嶋H應用:為了做到這點,每章都包含了許多實際有效的示例以說明所描述的概念。
每章最后配有小結(jié),涉及該章所有主要的概念。
每章最后配有思考題,問題的答案都可以在書中找到。
每章最后配有習題,教師可用其測試學生對章節(jié)內(nèi)容的理解,自學者也可進行自測。全部習題的答案可以在原書配套的教輔資源“教師答案手冊”中找到。
教輔資源適用于本教材的教輔資源包括:
課程PPT。
教師答案手冊,包括所有課后思考題和習題的答案示例。
其他資源的配套網(wǎng)站:www.pearsonhighered.com/connolly-begg。
上述資源僅提供給在www.pearsonhighered.com/irc上注冊過的教師。請與當?shù)氐匿N售代表聯(lián)系。
本書結(jié)構(gòu)第一部分背景本書的第一部分介紹數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫設計。
第1章引入數(shù)據(jù)庫管理的概念。主要闡述了數(shù)據(jù)庫前身,即基于文件的系統(tǒng)之不足及數(shù)據(jù)庫方法所具備的優(yōu)勢。
第2章總覽數(shù)據(jù)庫環(huán)境。主要討論了三層ANSI-SPARC體系結(jié)構(gòu)的優(yōu)點,介紹了目前最通用的數(shù)據(jù)模型,列出了多用戶DBMS應提供的各種功能。
第3章考察各種多用戶DBMS結(jié)構(gòu),討論了數(shù)據(jù)庫領域不同類型的中間件。分析Web服務,它能為用戶和SOA(面向服務的結(jié)構(gòu))提供新型的業(yè)務服務。該章簡要描述分布式DBMS和數(shù)據(jù)倉庫的結(jié)構(gòu),后面還將詳細討論。該章還給出一個抽象DBMS的內(nèi)部結(jié)構(gòu)以及Oracle DBMS的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),這一部分內(nèi)容在數(shù)據(jù)庫管理初級課程中可以略去。
第二部分關系模型與語言本書的第二部分介紹關系模型和關系語言,即關系代數(shù)和關系演算、QBE(舉例查詢)和SQL(結(jié)構(gòu)化查詢語言)。這部分還介紹了兩種非常流行的商用系統(tǒng):Microsoft Access和Oracle。
第4章介紹當前最流行的數(shù)據(jù)模型—關系模型背后的概念,這是最常被選作商用標準的模型。具體安排是首先介紹術語并說明其與數(shù)學上的關系的聯(lián)系,然后討論關系完整性規(guī)則,包括實體完整性和引用完整性。這一章最后概述視圖,第7章還將進一步討論視圖。
第5章介紹關系代數(shù)和關系演算,并
目 錄
出版者的話
譯者序
前言
第六部分 分布式DBMS與復制
第24章 DDBMS—概念與設計2
24.1 引言3
24.1.1 概念3
24.1.2 DDBMS的優(yōu)缺點6
24.1.3同構(gòu)DDBMS和異構(gòu)DDBMS8
24.2 網(wǎng)絡概述10
24.3 DDBMS的功能和體系結(jié)構(gòu)13
24.3.1 DDBMS的功能13
24.3.2 DDBMS的參考體系結(jié)構(gòu)13
24.3.3 聯(lián)邦MDBS的參考體系結(jié)構(gòu)14
24.3.4 DDBMS的組成結(jié)構(gòu)15
24.4 分布式關系數(shù)據(jù)庫設計16
24.4.1 數(shù)據(jù)分配17
24.4.2 分段18
24.5 DDBMS的透明性24
24.5.1 分布透明性24
24.5.2 事務透明性26
24.5.3 性能透明性29
24.5.4 DBMS透明性31
24.5.5 DDBMS的透明性小結(jié)31
24.6 Date 關于DDBMS的12條規(guī)則31
本章小結(jié)32
思考題33
習題34
第25章 DDBMS—高級概念35
25.1 分布式事務管理36
25.2 分布式并發(fā)控制36
25.2.1 目標36
25.2.2 分布串行性37
25.2.3 鎖協(xié)議37
25.3 分布式死鎖管理39
25.4 分布式數(shù)據(jù)庫恢復42
25.4.1 分布式環(huán)境中的故障42
25.4.2 故障對恢復的影響43
25.4.3 兩段式提交44
25.4.4 三段式提交48
25.4.5 網(wǎng)絡分區(qū)51
25.5 X/Open分布式事務處理模型53
25.6 分布式查詢優(yōu)化55
25.6.1 數(shù)據(jù)定位56
25.6.2 分布式連接58
25.6.3全局優(yōu)化59
25.7 Oracle中的分布特性62
本章小結(jié)67
思考題67
習題68
第26章 復制與移動數(shù)據(jù)庫69
26.1 數(shù)據(jù)庫復制簡介70
26.1.1 復制的應用71
26.1.2 復制模型71
26.1.3 復制協(xié)議的功能模型71
26.1.4 一致性72
26.2 復制的體系結(jié)構(gòu)73
26.2.1 基于內(nèi)核的復制73
26.2.2 基于中間件的復制73
26.2.3 更新處理74
26.2.4 更新傳播75
26.2.5 更新場所(數(shù)據(jù)所有權(quán))76
26.2.6 終止協(xié)議78
26.3 復制模式79
26.3.1 積極主備份79
26.3.2 懶惰主備份83
26.3.3 積極隨處更新86
26.3.4 懶惰隨處更新86
26.3.5 使用統(tǒng)一全序廣播的隨處更新89
26.3.6 SI與統(tǒng)一全序廣播復制92
26.4 移動數(shù)據(jù)庫簡介97
26.4.1 移動DBMS98
26.4.2 與移動 DBMS相關的問題98
26.5 Oracle中的復制108
本章小結(jié)113
思考題114
習題114
第七部分 對象DBMS
第27章 OODBMS——概念與設計118
27.1 下一代數(shù)據(jù)庫系統(tǒng)119
27.2 OODBMS簡介120
27.2.1 面向?qū)ο驞BMS的定義120
27.2.2 函數(shù)數(shù)據(jù)模型122
27.2.3 持久型編程語言125
27.2.4 開發(fā)OODBMS的可選策略126
27.3 OODBMS的持久性127
27.3.1 指針切換技術128
27.3.2 訪問對象131
27.3.3 持久性模式132
27.3.4 正交持久性133
27.4 OODBMS中的問題135
27.4.1 事務135
27.4.2 版本135
27.4.3 模式演化136
27.4.4 體系結(jié)構(gòu)139
27.4.5 基準測試141
27.5 OODBMS的優(yōu)點和缺點142
27.5.1 優(yōu)點143
27.5.2 缺點144
27.6 ORDBMS與OODBMS的比較145
27.7 面向?qū)ο髷?shù)據(jù)庫設計146
27.7.1 面向?qū)ο髷?shù)據(jù)建模與概念數(shù)據(jù)建模的比較146
27.7.2 聯(lián)系和引用完整性147
27.7.3 行為設計149
27.8 采用UML的面向?qū)ο蠓治雠c設計150
27.8.1 UML圖151
27.8.2 UML在數(shù)據(jù)庫設計方法學中的應用155
本章小結(jié)156
思考題157
習題158
第28章 OODBMS——標準與系統(tǒng)159
28.1 對象管理組159
28.1.1 背景160
28.1.2 公共對象請求代理架構(gòu)162
28.1.3 其他OMG規(guī)范166
28.1.4 模型驅(qū)動的架構(gòu)167
28.2 對象數(shù)據(jù)標準ODMG 3.0170
28.2.1 對象數(shù)據(jù)管理組170
28.2.2 對象模型171
28.2.3 對象定義語言177
28.2.4 對象查詢語言178
28.2.5 ODMG標準的其他部分183
28.2.6 將概念設計映射為邏輯(面向?qū)ο蟮模┰O計186
28.3 ObjectStore187
28.3.1 總體結(jié)構(gòu)187
28.3.2 構(gòu)建ObjectStore應用程序189
28.3.3 ObjectStore中的數(shù)據(jù)定義190
28.3.4 ObjectStore中的數(shù)據(jù)操作193
本章小結(jié)196
思考題197
習題197
第八部分 Web與DBMS
第29章 Web技術與DBMS200
29.1 Internet和Web簡介201
29.1.1 企業(yè)內(nèi)聯(lián)網(wǎng)與外聯(lián)網(wǎng)202
29.1.2 電子貿(mào)易和電子商務203
29.2 Web203
29.2.1 超文本傳輸協(xié)議204
29.2.2 超文本標記語言206
29.2.3 統(tǒng)一資源定位符207
29.2.4 靜態(tài)和動態(tài)網(wǎng)頁208
29.2.5 Web服務208
29.2.6 對Web與DBMS集成的需求209
29.2.7 Web-DBMS方案的優(yōu)缺點210
29.2.8 集成Web與DBMS的方法212
29.3 腳本語言213
29.3.1 JavaScript和JScript213
29.3.2 VBScript214
29.3.3 Perl和PHP214
29.4 公共網(wǎng)關接口215
29.4.1 向CGI腳本傳遞信息216
29.4.2 CGI的優(yōu)缺點217
29.5 HTTP Cookie218
29.6 擴展Web服務器219
29.7 Java220
29.7.1 JDBC223
29.7.2 SQLJ227
29.7.3 JDBC和SQLJ的比較227
29.7.4 管理容器持久性228
29.7.5 JDO231
29.7.6 JPA237
29.7.7 Java servlet243
29.7.8 JSP244
29.7.9 Java Web服務245
29.8 Microsoft的Web解決平臺246
29.8.1 通用數(shù)據(jù)訪問247
29.8.2 ASP和ADO248
29.8.3 遠程數(shù)據(jù)服務250
29.8.4 ASP和JSP的比較251
29.8.5 Microsoft .NET251
29.8.6 Microsoft Web服務255
29.9 Oracle Internet平臺255
29.9.
你還可能感興趣
我要評論
|