ColinJohnson是西雅圖一家小型制造廠的產品管理員。幾年前,Colin計劃構建一個數據庫來跟蹤產品包中的產品。一開始,他運用電子制表軟件來完成這一工作,卻無法通過該表獲取所需的報表。Colin聽說了MicrosoftAccess,希望該軟件能解決問題。經過幾天的嘗試,他發(fā)現無法掌握Access的使用方法,于是購買了一些流行的Access書籍并努力學習。不過最終他還是放棄了,于是他聘請了一個顧問,該顧問創(chuàng)建了一個大致可滿足Colin要求的應用程序。一段時間以后,Colin想對此應用程序作一些改動,但他卻不敢作這樣的嘗試。Colin是個成功的商人,他能夠主動地去實現他的目標。作為一個老練的Windows用戶,他可以通過自學掌握Excel、PowerPoint以及大量面向產品的應用程序。但他在使用Access來解決問題時卻停滯不前。Colin認為“我確信我可以做到,但我沒有更多的時間”。這樣的事件非常引人注目,因為在過去的10年內上演了無數次。Microsoft、Oracle和其他數據庫管理系統(tǒng)(DBMS)廠商都意識到了這一情況,他們投入了數百萬美元來創(chuàng)建更好的圖形界面、數以百計的多面板向導,以及眾多示例應用程序。遺憾的是,這樣的努力無法從根本上解決問題。事實上,許多用戶并不清楚向導可以實現哪些功能。一旦這些用戶需要修改數據結構或是組件(例如窗體和查詢),就會陷入麻煩中,這令他們措手不及。如果不了解底層結構,這些用戶就只能絞盡腦汁,卻徒勞無功。最終也只能得到一些設計糟糕的數據庫和應用程序,而無法滿足用戶的要求。那么為什么像Colin這樣的用戶可以學會使用文字處理軟件或電子數據表這樣的產品,卻無法學會使用DBMS產品呢?其中一個主要原因就是許多人都不熟悉數據庫的基本概念。每個人可能都知道段落和邊距,卻無法理解關系的概念。其次,他們可能覺得使用DBMS產品一定比了解數據庫概念本身更容易?!拔覀兿胱龅闹皇歉櫼恍﹥热荩瑸槭裁磳崿F起來卻這么困難?”如果不了解關系模型,在存儲數據之前將一張銷售發(fā)票分成5個單獨的表就可能使業(yè)務用戶產生迷惑?;靖拍町斀竦募夹g特點是如果不學習基本概念,那么就不可能成功地利用DBMS。憑借多年來為業(yè)務用戶開發(fā)數據庫的經驗,我認為數據庫的基本概念主要包括以下內容:●關系模型的基本概念●結構化查詢語言(SQL)●數據建?!駭祿煸O計●數據庫管理像Colin這樣的用戶(或是將接受類似工作的學生)不需要像信息系統(tǒng)專家那樣深入地了解這些主題。因此,本書只介紹了一些基本的概念——這些內容對于像Colin這樣的用戶(創(chuàng)建和使用小型數據庫的用戶)來說至關重要。我已經在DatabaseProcessing一書中重寫、簡化和刪除了一些內容1。不過在本書中,也力求討論準確,不會產生誤導。即使學生們已學習過更高級的數據庫課程,也仍然可從本書中獲益。獨立于DBMS產品的概念本書假設學生沒有使用過任何特定的DBMS產品。雖然附錄中介紹了如何使用Access,但所有的概念都適合于DBMS產品。通過這種方式,學生們可以理解所有數據庫的基礎知識——從小型的Access數據庫到大型的Oracle或DB2數據庫。而且這一方法也避免了一個常見的問題。在同時介紹概念和產品時,學生容易將概念與產品特性、功能相混淆。例如參照完整性約束。在講授基礎理論時,學生都知道在某些情況下,一個表中的列值必須總是由另一個表中的列值提供。學生也將知道這一約束如何出現在關系定義的上下文中,以及DBMS或應用程序如何強制執(zhí)行這一約束。如果結合具體的DBMS教學,如Access,那么學生將學到的知識就可能是:在某些情況下選取復選框,而在其他情況下不選取的具體操作。這樣很容易導致在介紹產品特性的同時,使學生們淡忘了數據庫的基礎理論。然而這并不是說在本書中將不使用DBMS。相反,學生們可以通過使用企業(yè)版DBMS產品來熟悉這些基本概念。本書假定您將參閱其他書籍或資料來學習如何使用DBMS的特性和功能,Prentice-Hall提供了有關MicrosoftAccess2003的大量輔助讀物,可以結合本書一起學習。復習題、練習題和實踐項目學生能否學會最終運用所學的知識非常重要,因此每章都提供了一些復習題、練習題和三個貫穿本書始終的項目。如果學生閱讀并理解了每一章的內容,就可以知道復習題的答案。練習題要求學生將每章所講的概念應用到具體的小問題或任務中。第一個項目GardenGlory介紹了一個向個人或企業(yè)提供園藝服務的合伙公司的數據庫,并討論了該數據庫的開發(fā)和使用。第二個項目JamesRiver珠寶行分析了一家零售店為支持針對的購買者而設計的程序的數據庫需求。第三個項目介紹了Mid-Western大學化學系實驗設備的調度。本書的所有章節(jié)和附錄中都包括了這3個項目。在每個實例中,都要求學生將各章中學到的知識運用到項目中。教師們將從教師手冊中獲得有關這些項目的使用的更多信息,可以從Web站點(www.prenhall.com/kroenke)的教師專區(qū)獲取相關數據庫和示例數據。對第1版的改進與第1版相比,本書主要有兩點改進。首先,關于規(guī)范化化的討論已經轉向于如何為關系的規(guī)范化提供說明性的過程。在本書的第1版中就曾經介紹過規(guī)范化的原則,但將原則的應用留給了學生。本版的第2章介紹了學生使用規(guī)范化的4個步驟。這一改變不僅可以使規(guī)范化更加簡單,還可以使規(guī)范化的原則更易于理解。其次,新添的第7章介紹了如下高級主題的概述?!馱eb數據庫處理●使用XML處理數據庫●分布式數據庫處理●OLAP和數據挖掘●對象關系數據庫管理所有這些討論的目的都只是將這些主題的本質介紹給學生,從而增強學生的數據庫基本知識,并且鼓勵他們在重要的主題領域繼續(xù)努力學習。主要內容本書共包括7章和1個附錄。第1章解釋了使用數據庫的原因、數據庫的組成以及開發(fā)數據庫的方法。學生們將學習數據庫及其應用程序的用途、數據庫相對于電子表格列表的差別和優(yōu)勢。第2章介紹了關系模型,定義了基本的關系術語,同時還介紹了規(guī)范化原則的基本概念,并描述了規(guī)范化過程。第3章講述了基本的SQL語句。描述了定義數據的基本SQL語句,如SQLSELECT和數據修改語句。本書并不介紹高級的SQL語句,只講述一些核心的語句。接下來的3章討論了數據庫設計和管理。第4章使用實體-關系(E-R)模型解決數據建模問題,其中包括對數據建模的需求、基本的E-R術語和概念,還提供了一個簡短的E-R建模示例應用程序。第5章講述了數據庫設計,解釋了規(guī)范化的基本概念。第4章示例中的數據模型在第5章中則被轉換為關系設計。第6章討論了數據庫管理。該章講述了數據庫管理的需求,概述了并發(fā)控制、安全性和備份恢復技術。這些主題對所有的數據庫都很重要,對個人的單用戶數據庫也是如此。事實上,這些主題在某些方面對于私人數據庫更為重要,因為它們沒有專業(yè)的數據庫管理員來確保關鍵任務的執(zhí)行。最后,第7章介紹了前面所描述的高級主題。在附錄中介紹了MicrosoftAccess。這一簡短的介紹可以幫助學生結合Access技術文檔文件創(chuàng)建簡單的數據庫和應用程序組件?;仡櫯c展望在過去的30多年中,我發(fā)現數據庫和數據庫應用程序的開發(fā)是一項令人愉快、有益的工作。我相信,未來數據庫的數量、大小以及重要性都將有大幅度的提高,該領域將取得更大的成就。在此希望本書中所提及的概念、知識和技術有助于學生更好地進行數據庫項目的開發(fā)。