譯 者 序隨著計算機硬件、軟件技術的飛速發展和計算機系統在各行各業的廣泛應用,數據已經成為各種機構的寶貴資源,數據庫系統對于當今科研部門、政府機關、企事業單位等來說都是至關重要的。而數據庫系統中的核心軟件是數據庫管理系統(DBMS)。DBMS用于高效地創建和存儲大量的數據,并對數據進行有效的管理、處理和維護,是數據庫專家和技術人員數十年研究開發的結果,是當前最復雜的系統軟件之一。要深入掌握數據庫系統的原理和技術,進而從事數據庫管理軟件和工具的開發,必須學習和研究數據庫管理系統實現技術。要深入了解數據庫系統的內部結構,以開發出高效的數據庫應用系統,也需要學習和研究數據庫管理系統實現技術。 Hector Garcia-Molina、Jeffrey D. Ullman和Jennifer Widom是斯坦福大學著名的計算機科學家,多年來他們在數據庫系統領域中做了大量的開創性工作。由他們撰寫的《數據庫系統實現》一書是關于數據庫系統實現方面,內容最為全面的著述之一。書中對數據庫系統實現原理進行了深入闡述,并具體討論了數據庫管理系統的三個主要成分—存儲管理器、查詢處理器和事務管理器的實現技術。書中還對信息集成的最新技術,例如數據倉庫、OLAP、數據挖掘、Mediator(集成層軟件)、數據立方體系統等進行了介紹。該書已經作為斯坦福大學計算機科學專業數據庫系列課程第二門課的教科書使用。我們在北京大學計算機系研究生課程的教學中也使用了該書中的部分內容。我們認為該書內容深入且全面,技術實用且先進,敘述深入淺出,是一本難得的高層次的教科書。我們將這本書譯成中文,介紹給國內廣大讀者。我們認為這本書既適合于作為高等學校計算機專業研究生教材或本科生課程參考書,又適合于作為從事相關的研究或開發工作的專業技術人員的高級參考資料。楊冬青全面組織了本書的翻譯,唐世渭和徐其鈞在本書的翻譯和審校中做了大量的工作。參加翻譯的還有楊良懷、王愛華、王騰蛟、葉茂盛、趙紹軍、趙暢。另外,高桂英協助進行了譯稿的整理、錄入等工作。在本書的翻譯過程中,譯者參照該書的WWW主頁中的勘誤表,對書中的疏漏之處進行了更正。此外,對于未包括在勘誤表中的明顯的筆誤和排版錯誤,我們也做了訂正。限于譯者水平,譯文中疏漏和錯誤難免,歡迎批評指正。譯者 2000年10月于北京大學
前 言本書是為斯坦福大學數據庫系列課程的第二門課CS245設計的。第一門課程CS145的內容包括數據庫設計和數據庫編程,Jeff Ullman和Jennifer Widom為該課程寫的教科書《數據庫系統入門教程》(A First Course in Database Systems)于1997年由Printice-Hall出版社出版。CS245的內容包括DBMS實現技術,特別是存儲結構、查詢處理和事務管理。本書的使用斯坦福大學實行每學年4個學期的制度,所以采用本書的主要課程CS245的教學時間僅為10周。在1999年冬季學期,Hector Garcia-Molina使用了本書的“試用”版,教學內容包括以下部分:2.1~2.4節,整個第3章和第4章,5.1節和5.2節,6.1~6.7節,7.1~7.4節,整個第8章,第9章去掉9.8節,10.1-10.3節,11.1節,以及11.5節。第6章和第7章的剩余部分(查詢優化)在高級課程CS346中講授。在該課程中,要求學生實現他們自己的DBMS。本書中未包括在CS245中的其他部分可以在另一門高級課程CS347中講授,該課程討論分布式數據庫和高級事務處理。實行學期制的學校可以將本書與前一本教科書《數據庫系統入門教程》結合使用。我們建議將《數據庫系統入門教程》用于第一個學期,同時進行數據庫應用程序設計實習。第二學期可以講授本書的大部分或全部內容。將數據庫的學習分為兩門課程的好處是,不打算致力于DBMS研究的學生可以僅選修第一門課程,然后可以將數據庫技術應用于他們所進入的計算機科學的任何分支。先修要求學生一般不會在大學的第一學年選修使用本書的課程,所以我們期望本書的讀者具有計算機科學的傳統領域中相當廣泛的背景知識。我們假定讀者已經學習過數據庫程序設計,特別是SQL。讀者最好了解關系代數,并且對于基本數據結構有一定程度的熟悉。同樣地,關于文件系統和操作系統的知識也是很有幫助的。習題本書包括大量習題,幾乎每一節都有習題。我們用驚嘆號標記出難度較大的習題,或習題中難度較大的部分。對于特別難的習題,我們用兩個驚嘆號標記。某些習題或習題中的部分用星號標記。對于這些習題,我們將努力通過本書的Web頁面提供解答。這些解答向公眾發布,讀者可以用來進行自我測試。注意,在有些情況下,習題B要求你對習題A的解答進行修正或改編。如果習題A的某些部分有Web發布的解答,那么在Web頁面上也會有習題B的相應部分的解答。 WWW支持本書的主頁為 http://www-db.stanford.edu/~ullmam/dbsi.html 在主頁上你可以找到標注星號的習題的解答、勘誤表以及輔助材料。我們打算在每一次講授CS245和其他數據庫課程的相關部分時,將注釋也提供到主頁中,包括作業、考試和解答等。 H. G.-M J.D.U. J. W. 加州,斯坦福大學