-- 會員 / 註冊 --
 帳號:
 密碼:
  | 註冊 | 忘記密碼
站長推薦
NT售價: 200
NT售價: 395
NT售價: 245
NT售價: 245
NT定價: 680
優惠價:75510

1/17 新書到! 1/12 新書到! 1/4 新書到! 12/29 新書到!
C.G.Next購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUGRevit
PhotoShopCorelDrawIllustratorAutoCadMasterCamSolidWorksCreo
CC++Java遊戲程式Linux嵌入式PLCFPGAMatlabNuke
駭客資料庫Oracle搜索引擎影像處理FluentSPSSANSYSUnity
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
C#HadoopPythonstm32手機程式CortexLabviewAndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

自己動手設計數據庫

( 簡體 字)
作者:盛楊燕類別:1. -> 程式設計 -> 綜合
   2. -> 資料庫 -> 綜合
譯者:
出版社:電子工業出版社自己動手設計數據庫 3dWoo書號: 42322
詢問書籍請說出此書號!

有庫存
NT售價: 495

出版日:8/1/2015
頁數:488
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121265327
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
作者序:

譯者序:

前言:

獻給我的妻子,感謝她始終如一地信任我。__eol__獻給一路幫助過我的人——我的老師、導師、朋友和同事。__eol__獻給所有曾經嘗試過設計關系數據庫但失敗了的人。__eol____eol__關于作者__eol____eol____eol____eol__Michael J. Hernandez是一位獨立的關系數據庫咨詢專家,專攻關系數據庫設計。他有20多年的科技行業從業經驗,為各種各樣的客戶開發過數據庫應用程序。他為眾多雜志專欄、白皮書、書籍和期刊撰稿,合著有暢銷書SQL Queries for Mere Mortals®(Addison-Wesley,2007)。Mike(Michael的昵稱)是全美政府、軍隊、私營部門以及企業中最受歡迎、最有名的技術培訓師。他曾在很多美國國內和國際會議上發言,他的演講和主持一直大受歡迎。__eol__除了技術背景之外,Mike的技能和興趣廣泛,從藝術到形而上學,涉獵眾多。不過,Mike最愛的還是吉他,他已經彈了40多年吉他,擔任專業吉他手也有15個年頭。Mike廚藝了得,熱愛教學(教授寫作、公共演講、音樂),擅長一語雙關的文字游戲,甚至還能用塔羅牌算命。__eol__Mike說他永遠不會真正地退休,只會在厭倦了手頭上的事情之后,轉而去做其他能引起他興趣的事情。__eol____eol____eol__序言__eol____eol____eol____eol__致第三版__eol__十年了,我和Mike見面的機會比過去更少了。有人可能不知道,我們同一天生日(雖然他比我年長了不少,起碼大整整一歲)。我們每年至少會見上一面,慶祝我們又多活了一年。有趣的是,微軟(Microsoft)差不多也是每十年就“更新”一次技術。如今,回頭看我十年前所寫的序言,一切都沒多大變化——我依然埋頭研究微軟的一項新技術,不過這一次研究的是WinRT和Windows 8,而不是.NET。不過,有一點從未改變:人們對精心設計并良好執行的數據庫設計的需求從未改變。Mike在第一版中所述內容基本上依然適用,目前的新版本進一步完善了一些細節,而優良數據庫設計的原則十年來始終如一。我不得不承認,我有點嫉妒Mike寫了一本生命力如此持久的好書。一本書能暢銷這么多年,至少證明它是一本好書。Mike在本書中詳細闡述了數據庫設計過程,不管你是第一次閱讀本書,還是第二次,抑或第三次,都肯定能在其中找到一條考慮周全的有益道路,指引你在變幻莫測的數據庫設計中找到方向。現在,讓我們跳過引言部分,進入正題吧!__eol__——肯蓋茨(Ken Getz),2012年11月14日__eol____eol__第二版序言__eol__我和Mike Hernandez相見的次數不如從前多了。自我為本書的第一版作序以來,我們的職業生涯都發生了巨大的改變。就算不說別的,我們走動得少了,自然碰頭的次數也就少了。如果你愿意遷就我,我也許會補充說,自此書的第一版問世以來,整個世界也發生了巨大變化。就最平凡無奇的方面來說,自我全心全意地投入到微軟.NET的開發中,我的整個開發生涯都被改變了。不過,有一件事始終未變,即對數據、對精心設計的數據的不斷渴求。把復雜的應用整合在一起,但背后的數據卻設計拙劣,由此帶來的損害,不比Mike撰寫本書第一版時的程度低。不管你是剛涉足數據庫開發,還是已經經驗豐富;不管你曾經讀過Mike的書籍,還是第一次讀到;不管你是樂于讓別人設計你的數據,還是喜歡自己動手做——本書都是你的不二之選。Mike不但能簡單明了,而且能趣味橫生地闡釋概念,這一能力一直令我深感驚異。__eol__——肯蓋茨(Ken Getz),2002年10月10日__eol__第一版序言__eol__你可能好奇,為什么還要再出一本關于數據庫設計的書呢?Mike Hernandez第一次和我討論這本書的時候,我也這么想。但事實就是,世上確實需要一本這樣的書,也許通過迅速閱覽本書的內容,在翻到本序言之前,你已經發現這一點。你肯定能找到許多解釋數據庫設計科學背后的原理和概念的書籍,但可能不會找到很多從Mike的獨特視角出發的書籍(如果真能找到的話)。他立志拿出一本基于堅實的數學研究原理之上的書,但目標是實際應用,而不是討論理論上的可能性。不管你現在具體使用的是哪種數據庫,本書中的概念都有意義,適用于你的數據庫設計項目。__eol__當我翻到第6章的開篇,看到如下建議時,我就知道這本書正是我想要的:__eol__不要將現有的數據庫框架作為新的數據庫框架的基礎。__eol__如果多年前,我剛剛踏上數據庫開發者之路時,有人如此忠告我,我定能省下大筆的時間!這就是我所看中的:Mike有多年為客戶設計數據庫的經驗;他花費了大量時間思考、閱讀、研究創造數據庫應用的正確方式。在本書中,他毫無保留地將一切呈獻給了大家。__eol__這本書充滿真知灼見,并用簡單易懂的例子加以闡釋。這并非是指本書中沒有涉及適當的數據庫設計的核心信息——書中自然是有這些信息的,但是這些內容是面向真正的程序開發人員的,而不是理論家。__eol__我花了不少時間和Mike討論數據庫設計。不管是喝咖啡時、開會時還是寫課件時,Mike對數據庫設計的熱忱始終未減。就像操作系統設計師追求極致完美的算法一樣,Mike一直在探尋解決數據庫設計的好方法,以及如何能恰當地解釋給別人——就如你在本書中會看到的一樣。多年來,我所掌握的數據庫設計知識中,有很多是從Mike處學得,而且我確信此書定能教給我更多。本書簡潔翔實地展示了開發專業數據庫所需掌握的信息,我也確信你在讀過這本書之后,會有同感。__eol__——肯蓋茨(Ken Getz),MCW技術公司(KenG@mcwtech.com)__eol____eol__前言__eol____eol____eol____eol__生命,一如所有最古老的暗喻所認為的,是一段旅程。__eol__——Jonathan Raban__eol__For Love and Money__eol____eol__路線也許會變更,方向也許需要調整,但是旅途會繼續……__eol__——Micheal J. Hernandez__eol__《數據庫設計凡人入門》(第二版)__eol__顯然,從本書的第二版問世9年以來,科技領域,尤其是數據庫管理方面的變化之巨,翻天覆地都不足以形容。如今,掌上設備的存儲和處理能力,相當于過去幾個房間大的大型機。今天,掌上設備無處不在,許多人視之為理所當然——尤其是年輕一代。(我的小侄子可能永遠無法理解,我第一次為自己的IBM計算機買了一塊40MB的擴展卡時的激動心情。不過,這又是另一回事了。)如今,數據庫管理系統能夠處理數TB的數據,現在人們也很重視存儲、管理和利用云端的數據。__eol__那么,現在是否還需要你手上拿的這本書?當然!無論數據庫管理變得多么復雜,始終需要關于數據庫設計基礎的書籍。要理解事物運行的工作方式和原理,就必須掌握基礎知識。許多其他的專業領域亦是如此,無論是技術類學科,如建筑設計、工程學,還是藝術類學科,如音樂、烹飪,無一例外。__eol__近些年,我的人生踏上了新的、全然不同的道路,而我非常享受所做的一切。最近,我寫東西比較多,因此覺得是時候出本書的第三版了。我會分享在此過程中學到的一些新知識。也許,我還會進一步厘清我對這個主題的一些看法。現在我已經完成了這部作品,迫不及待地想知道這趟旅程接下來會帶我到哪里。__eol__讀者請注意:參閱本書中引用的其他內容,請登錄Informit.com/titles/ 0321884493。__eol____eol__致謝__eol____eol____eol____eol__不管你聽說過哪些寫作心得,寫作其實需要的是協作。我很感激一直樂于提供幫助的編輯、同事、朋友和家人一路上給我的支持。他們給我帶來勇氣,讓我能專注于手頭的工作,所以我想對他們致以最誠摯的謝意。__eol__首先,我要感謝我的好編輯瓊默里(Joan Murray)給我重寫一版的機會。我們花了好幾年的時間討論此事,是她的毅力、耐心、善良和領導力幫助我下定決心開始這項工作,并圓滿完成。我還要感謝出版編輯卡羅琳塞奈(Caroline Senay)熟練地指導審校,還有校對編輯奧德麗多伊爾(Audrey Doyle)對本書內容精確、詳盡的審校。同時,我要特別感謝約翰富勒(John Fuller)以及他的制作人員——你們做得一如既往地出色!我一直和Addison-Wesley團隊保持著良好的關系,我幾乎不能想象我怎么可能會愿意為其他出版社寫作技術書籍。__eol__其次,我想感謝杰出的技術審校團隊:特雷西桑頓(Tracy Thornton)、托尼威金斯(Tony Wiggins)還有西奧多理查森(Theodor Richardson)。他們毫無保留地奉獻出了他們的時間、精力和專業知識,給我提出了眾多的寶貴意見和建議。毫無疑問,本書受益于他們的付出。我想再一次感謝你們每一個人的付出,讓第三版的水平超出了我的預期。__eol__非常感謝肯蓋茨(Ken Getz)再一次為本書作序,肯是一位備受尊敬的專家,同時也是我的同事、好友。真高興能在本書開篇加上他的想法和評論。__eol__我還要感謝讀者朋友們把他們關于本書的想法和評論反饋給我。大家給予的贊揚和支持讓我受寵若驚,我要特別感謝讀者提出的建設性批評意見,讓我得以在新一版中完善相關內容。我還要感謝所有的學術機構、政府組織和商業組織,感謝你們采用我的作品,當作數據庫初學者的“標準讀物”。它們對本書的肯定,讓我備感榮幸。__eol__最后,我想感謝我的妻子,感謝她在我創作此書的過程中給予我的無盡的耐心。她的幫助和支持何其珍貴,我欠她的太多。我可以清楚地告訴大家我有多愛她,但是她討厭任何公開示愛的行為。因此,我只能為她獻上桂冠,緊緊地握住她的手。__eol____eol__引言__eol____eol____eol____eol__平凡的廚子做不好普通的菜。__eol__——Countess Morphy __eol__過去,數據庫設計的工作由信息技術(IT)部門人員和專業的數據庫開發者履行。他們通常具備數學、計算機科學或者系統設計背景,往往有使用大型機數據庫的經驗。其中很多人編程經驗豐富,已經編寫過大量由數千行代碼的數據庫應用程序。(他們因其工作的性質和重要性,通常都會工作過度。)__eol__那時,設計數據庫系統的人員必須有過硬的學歷背景,因為他們開發的大部分系統都將在全公司范圍內運用。由于編程語言和他們所采用的數據庫應用程序異常復雜,即便只是為公司內部的一個部門或者一個小公司開發數據庫,數據庫設計師仍然需要進行全面的正規訓練。然而,隨著技術進步,教育背景要求也在變化。__eol__自20世紀80年代以來,數據庫軟件取得了長足發展。許多供應商都開發出了能運行在臺式機上的軟件,相比大型機軟件,這些產品收集、存儲和管理數據更見簡易。隨著計算處理能力的增強,以及對復雜度的要求提升,供應商還開發出了能在各種不同環境下讓許多人訪問和共享集中數據的軟件,例如在局域網(LAN)和廣域網(WAN)連接的計算機上運行的用戶/服務器架構。公司或組織機構內部人員不再嚴格依賴大型機數據庫或由中央IT部門來滿足他們的信息需求。__eol__筆記本電腦的出現和廣泛應用,以及互聯網的普及也推動了數據庫軟件的發展。筆記本電腦已經變得非常強大,擁有數GB的內存和存儲容量以及飛速的處理能力。在很多地方,筆記本電腦已經非常普及,甚至完全取代了臺式電腦。這也使得人們在咖啡屋、餐館和機場等常見的地方能夠連上互聯網。(我甚至無須提及各色能連上互聯網的設備——這當有別的書來另行討論。)如此,軟件供應商和企業雙雙推動在互聯網上運營和管理數據庫,以讓更多的人能夠隨時隨地訪問到他們的應用程序和數據。看看未來幾年這種想法的進展如何,將十分有趣。__eol__供應商不斷地在他們的數據庫軟件中添加新功能,增強工具集,這使得數據庫開發人員能夠創建更強大、更靈活的數據庫應用。他們也在不斷地提升軟件的易用性,使更多人能夠創建自己的數據庫應用。當下的數據庫軟件大大簡化了創建高效的數據庫結構和直觀的用戶界面的過程。__eol__大部分程序都提供示例數據庫結構,讓用戶根據自身的特定需求來復制或修改。雖然用戶一開始可能認為,以這些示例結構為基礎建立新數據庫十分方便,但現在你應當停下來,重新思考一下這一舉動。為什么?因為你有可能在不知不覺中創建出一個不當、低效、不完整的設計。最終可能會在一個自認為可信賴的數據庫設計上遇到問題。當然,這就提出了一個問題:“我會遇到什么類型的問題呢?”__eol__數據庫中出現的大部分問題可以歸為下面兩類:應用問題和數據問題。應用問題包括數據輸入/編輯表單有問題、令人困惑的菜單和工具欄、令人難以理解的對話框和煩瑣的任務順序。這些問題主要是因為數據庫開發人員經驗不足、不熟悉良好的應用設計方法或者不了解用來實現數據庫的軟件。這類問題很常見,妥善解決這類問題很重要,不過,這不在本書的討論范圍之內。__eol__注意:解決遇到的許多應用問題的一個好方法就是,購買并研讀一本第三方“開發者”寫的涉及你采用的軟件的書。這類書籍探討了應用設計問題、高級編程技術以及可以用來改善優化一個應用的各種技巧和竅門。具備了這些新技能,就能改善和微調數據庫應用程序,使之能正確、平穩和有效地運行。__eol__另一方面,數據問題包括諸如數據缺失、數據不正確、數據不匹配以及信息不精準。糟糕的數據庫設計通常是造成這類問題的根源。如果一個數據庫結構不合理,就沒法滿足一個組織機構的信息需求。雖然出現糟糕的設計通常是由于數據庫開發者未掌握良好的數據庫設計原則,但是這并不能表明開發者水平低。很多人,包括經驗豐富的程序員和數據庫開發人員,很少或從未接受過任何形式的數據庫設計方法方面的指導。很多人甚至從未意識到存在設計方法。數據問題和糟糕的設計是本書將解決的問題。__eol__第三版中的新變化__eol__筆者修訂了這一版,提升了可讀性,更新和擴展了已有內容,增加了新內容,提高了本書的教學價值。第三版中的一些新變化如下:__eol__ 重寫了部分文字,使意思更加清晰,便于讀者理解。__eol__ 修訂了圖表內容,增強實用性。__eol__ 更新了對數據類型的討論。__eol__ 推薦閱讀書目中涵蓋了書籍的最新版本和各書的國際標準書號(ISBN)。__eol__ 增加了關于規范化的附錄。這一部分簡明地解釋了規范化這一概念,以及如何融入到本書所討論的設計過程之中。__eol__參閱本書中引用的其他內容,請訪問網址:informit.com/titles/0321884493。__eol__讀者群體__eol__閱讀本書,不需要擁有數據庫設計背景。因為讀者拿起本書,就是為了學習如何恰當地設計數據庫。如果你初涉數據庫管理領域,正在考慮開發一個自己的數據庫,那本書就有價值。從一開始就掌握正確的數據庫創建方法,比通過反復試驗試錯來學習要好得多。相信我,后者需要的時間長得多。__eol__如果你和數據庫編程打過一段時間的交道了,正打算為公司或企業開發新數據庫,那么應該讀一讀本書。也許你心里大致有數,優良的數據庫結構應該是個什么樣子,但不是很確定數據庫開發人員要如何實現有效的設計。也許你是一個程序員,按照一些基本原則,已經創建過不少的數據庫,但是總免不了要編寫大量的程序代碼,才能讓數據庫正常運行。如果你屬于這種情況,那么本書也值得一讀。__eol__即使你已經有了數據庫設計方面的背景,最好也能讀一讀本書。也許你大學時學過數據庫設計方法,或者上過數據庫相關課程,課上討論過數據庫設計,但已記不清細節,或沒有理解某些設計過程。不過,只要學習并理解了本書中講述的設計過程,那些曾經困惑之處都將豁然開朗。__eol__本書也適用于經驗豐富的數據庫開發人員和程序員。雖然你可能已經了解了書中講述的設計過程的諸多方面,但是讀下去就可能發現一些以前從未遇到或考慮過的問題。通過閱讀此書,可能受到啟發,產生一些關于如何設計數據庫的新想法,因為本書從不同的角度闡釋了許多你所熟知的設計過程。至少,本書可當作一本不錯的數據庫設計復習教程。__eol__本書的目的__eol__總體來說,整個數據庫開發過程分為三個階段。__eol__1.段邏輯設計:涉及定義表及其字段、建立主鍵和外鍵、建立表之間的關系,并確定和建立各級數據完整性。__eol__2.物理實現:涉及建表、建立主鍵字段和表之間的關系,并使用恰當的工具來實現各級數據完整性。__eol__3.應用開發:涉及創建一個應用,能讓單個用戶或群組用戶利用存儲在數據庫中的數據。此階段本身又可劃分為多個獨立的步驟,譬如確定終端用戶任務和適當的序列、確定輸出報告的信息需求,以及為應用導航創建一個菜單系統。__eol__始終應該先從邏輯設計階段著手,并盡可能徹底地執行所做的設計。在建立了健全的結構之后,就能應用到所選的任何數據庫軟件中了。在物理實現階段,可能會需要根據自身所選軟件的利弊和優劣,適當調整數據庫結構。甚至可能會為了提升數據處理性能而調整數據庫結構。首先進行邏輯設計可確保在確定數據庫結構時,做出有意識的、有條理的、清晰明智的決策。如此一來,也有助于減少在物理實現和應用開發階段進一步調整數據庫結構的次數。__eol__本書只涉及整體開發過程中的邏輯設計階段。本書的重點是,在擯棄絕大部分數據庫設計書籍采用的高深、正統的方法論的前提下,闡釋關系數據庫的設計過程。筆者盡量避開這些復雜的方法論,轉而呈現一種相對簡單明白的設計方法。筆者也采用了一種簡單直接的數據建模方法作為此設計方法的輔助,以盡可能清晰的語言、盡量少的技術術語,講述整個設計過程。__eol__市面上的許多數據庫設計相關書籍都包含在特定的數據庫產品中實現數據庫的章節。有些書籍甚至會將設計和實現階段混為一體。(筆者非常不贊成這種做法,而且一直堅持認為一個數據庫開發者應當將邏輯設計和實現階段分開,以確保最大程度的集中、高效。)這類書籍的主要缺陷是,如果讀者沒有使用書中提到的特定數據庫軟件或編程語言,就很難從有關數據庫實現的章節中獲得任何有用或相關的信息。因此,筆者才決定編寫一本專注于數據庫邏輯設計的書籍。__eol__相比同一主題的其他書籍,本書可能更易讀。市面上的許多數據庫設計相關書籍技術性很強,可能難于理解吸收。筆者認為,如果沒有讀過計算機科學專業,不是一個數據庫理論家或者是有經驗的數據庫開發人員,這些書絕大部分讓人困惑,望而生卻。本書中的設計原則易于理解、記憶,書中所采用的示例也非常常見,具有通用性,適用于各種情況。__eol__筆者在全美巡講的時候,碰到的大部分人都表示,他們想學習創建合理的數據庫結構的方法,而不用掌握范式和高等數學理論。相比在特定數據庫軟件應用程序中實現一種結構,很多人更關注如何優化他們的數據庫結構和實施數據完整性。在本書中將學習如何創建高效的數據庫結構、如何實施多層數據完整性,以及如何用幾近無限量的方式將表關聯在一起以獲取信息。不必驚慌,這沒你想象的那么難。通過了解一些關鍵術語、學習和使用一組特定的常見技巧和概念,就能做到這一切。__eol__同時,讀者將學習如何分析和利用現有數據庫、確定信息需求,以及確定和實施業務規則。這些話題都很重要,因為許多人也許會沿用舊的數據庫,需要利用通過閱讀此書所學到的東西來改進。不過,就算從頭開始創建一個數據庫,這些話題照樣很重要。__eol__讀完本書,也就掌握了創建一個優良的關系數據庫結構所必不可少的知識和工具。筆者堅信,這整套方法將對多數數據庫開發人員和他們要創建的數據庫都有效。__eol__如何閱讀本書__eol__不管你是新手還是專業人士,強烈推薦按順序從頭讀到尾。如此一來,就不會脫離上下文語境,避免困惑——疑惑通常是由于一開始沒能看到本書的全局造成的。此外,在重點研讀某個章節之前,先整體了解整個過程,不失為一個好主意。__eol__當然,如果讀本書是為了復習設計技巧,那么也可以只讀那些感興趣的章節。雖然筆者已經盡可能地讓每一章能獨立成篇,但仍然推薦讀者能將整本書通讀一遍,以確保不會錯過任何至今為止你從未想到過的、有關數據庫設計的新思想或新點子。__eol__本書的組織結構__eol__下面是本書各個部分和各個章節所述內容的簡單概述。__eol__第1部分:關系數據庫設計__eol__該部分介紹數據庫、數據庫設計的基本思想,以及一些為了學習和理解本書所講述的設計過程所需熟知的術語。__eol__第1章 關系數據庫__eol__本章簡單地討論了數據庫類型、常見的數據庫模型和關系數據庫的發展簡史。__eol__第2章 設計目標__eol__本章探討了需要關注設計的原因,指出了優良設計的目標和優點,并簡單介紹了規范化和范式。__eol__第3章 術語__eol__本章涵蓋了為了學習和理解本書中所講述設計方法所必須掌握的術語。__eol__第2部分:設計過程__eol__該部分詳細論述了數據庫設計過程的方方面面,包括創建表結構、指定主鍵、設立字段說明、建立表間關系,以及建立視圖和各種不同層次的數據完整性。__eol__第4章 概念性概述__eol__本章概述了設計過程,闡釋了設計過程的各個部分是如何銜接在一起的。__eol__第5章 大幕開啟__eol__本章介紹了如何定義數據庫的宗旨和任務目標,并且兩者都是數據庫創建初始階段的重心。__eol__第6章 分析現有數據庫__eol__本章涵蓋了現行數據庫存在的問題。探討了為什么要分析現行數據庫、如何看待收集和呈現數據的現有方法、為何和如何與用戶和管理人員交談,以及如何編寫初始字段列表。__eol__第7章 建立表結構__eol__本章涉及的內容包括諸如界定數據庫該記錄什么內容,將字段與表聯系起來,以及精簡表結構。__eol__第8章 鍵__eol__本章涉及內容包括鍵的概念以及其對設計過程的重要性,還有如何為每個表定義候選鍵和主鍵。__eol__第9章 字段說明__eol__本章探討了一個眾多數據庫開發人員容易忽略的問題。字段說明除了指示每個字段如何創建之外,還決定了每個字段取值的特性。本章涉及的內容包括字段說明的重要性、說明特性的類型和如何定義數據庫中每個字段的說明。__eol__第10章 表關系__eol__本章闡釋了表間關系的重要性、關系類型、設立關系和建立關系特征。__eol__第11章 業務規則__eol__本章講述了業務規則的類型、確定和設立業務規則,以及使用驗證表。業務規則對任何數據庫都非常重要,原因在于它決定了一個方面的數據完整性。__eol__第12章 視圖__eol__本章探討了視圖的概念及其重要的原因,介紹了視圖類型以及如何確定和建立視圖。__eol__第13章 評審數據完整性__eol__本章對前面章節所定義和討論過的各個層次的數據完整性做了評審。讀者應該認識到,評審數據庫結構的最終設計,能有效確保數據完整性盡可能完善。__eol__第3部分:其他數據庫設計事項__eol__該部分討論了在設計過程中如何避免設計不當以及打破規則的問題。__eol__第14章 設計不當——禁忌事項__eol__本章涵蓋了應避免出現的設計問題類型,比如平面文件設計和電子表格設計。__eol__第15章 打破規則__eol__本章討論了一些需要對設計過程的技巧和概念進行適當調整的特例,介紹了何種情況下應考慮放寬規則,以及如何進行調整。__eol__第4部分:附錄__eol__附錄部分提供了一些對了解數據庫過程和開發數據庫時有用的信息。__eol__附錄A 思考題答案__eol__本部分中包含了從第1章到第12章所有思考題的答案。__eol__附錄B 數據庫設計過程中的示意圖__eol__本部分提供了整個設計過程所使用的示意圖。__eol__附錄C 設計指南__eol__本部分列出了本書中出現的各種設計指南,以便讀者查閱。__eol__附錄D 文檔形式__eol__本部分提供了字段說明、業務規則規范、視圖規范表的空白表格,以便讀者使用。__eol__附錄E 數據庫設計示意圖符號__eol__本部分包含了本書中出現過的所有示意圖符號,以便讀者查閱。__eol__附錄F 設計樣本__eol__本部分介紹了一些數據庫設計樣本,讀者可以從中借鑒一二。__eol__附錄G 關于規范化__eol__本部分介紹了作者是如何將規范化融入本書的設計方法中的。__eol__附錄H 推薦書目__eol__本部分列出了讀者深入學習數據庫技巧所應閱讀的一些書籍。__eol__術語表__eol__本部分為本書中用到的所有術語給出了簡明的定義。__eol__注意:務必閱讀本部分!__eol__關于本書中的示例和技巧__eol__本書中運用了大量示例。筆者在選擇示例時,也盡量確保它們普遍通用、切中主題。不過,讀者難免還是會發現一些示例過于簡單、不夠完整甚或有時是錯誤的。無論讀者相信與否,筆者確實是有意為之。__eol__之所以運用了一些存在錯誤的示例,是為了將特定概念或技巧闡述清楚。缺少這些示例,讀者就無法理解如何使用對應概念或技巧,也無法看到預料中的結果。一些示例過于簡單,同樣是因為重點在于對應技巧或概念,而非示例本身。例如,設計一個跟蹤訂單的數據庫有很多種方法。但是,本書中使用的訂單跟蹤數據庫示例的結構卻比較簡單,原因是重點僅在于設計過程,而不是建立一個詳盡的訂單跟蹤數據庫系統。__eol__所以,筆者在此力圖真正強調的是:__eol__重點在于概念或技巧及其預期結果,而非所使用的示例。__eol__新的學習方法__eol__下面介紹一種學習設計過程(或者任何相關的知識)的非常有用的新方法,這是筆者在自己開設的數據庫設計課上發現的。__eol__把設計過程中用到的所有技巧當作一套工具,每個工具(或技巧)都有特定的用途。這里的想法就是,一旦掌握了一個工具的一般用途,就可以在任意情況下使用該工具。原因在于,每種情況下使用該工具的方式都是一樣的。__eol__就拿活動扳手來說。一般說來,活動扳手用來擰開或擰緊螺釘。調整扳手頭部的調校螺絲,讓活動扳手的開口尺寸套上給定的螺母。現在,既然已經清楚了它的用法,就找幾個螺釘嘗試一下。比如,戶外椅的椅腿、發動機的風扇皮帶罩、空調室外機的側板或鐵門的鉸鏈板。是否發現,無論在哪遇到螺栓和螺母,始終能用相同的方法緊固和擰開螺母?__eol__設計數據庫所用的工具也是如此。一旦懂得了一個工具的一般用法,無論遇到怎樣的情況,都能奏效。例如,想想分解字段值的工具(或技巧)。在CUSTOMERS表中有一個Address值,這個表包含了特定顧客的街道地址、城市、州以及郵編的信息。你會發現很難在數據庫中使用這個字段,因為它包含了多個數據項。無疑,檢索特定城市的信息或通過特定郵編對信息分類會非常困難。__eol__解決這一難題的方法是將Address字段分解成更小的字段。先識別組成該字段值的各個項,再將每個項當作一個獨立的字段,問題就迎刃而解了。就是這么簡單!這個過程中包含了一個“工具”,現在可以將它應用到任何包含多個不同數據項的字段中,比如下面的字段樣本。下列表中展示了分解過程的結果。__eol____eol____eol____eol__當前字段名 實例值 新字段名__eol__Address 7402 Kingman Dr.. Seattle.__eol__WA98012 Street Address. City.__eol__State. Zip Code__eol__Phone (2006)555-5555 Area Code. Phone Number__eol__Name Michael J. Hernandez First Name. Middle Initial. Last Name__eol__EmployeeCode ITDEV2516 Department, Category.__eol____eol__注意:第7章“建立表結構”中對分解字段值做了更為詳細的介紹。__eol__可以用相同的方式使用本書的設計過程中呈現的所有技巧(“工具”)。無論需要創建什么類型的數據庫,使用這些技巧,都能設計出完善的數據庫結構。但是要切記:__eol__重點在于概念或技巧及其預期結果,而非所使用的示例。
內容簡介:

理解數據庫類型、模型、設計,以及設計的術語;發現良好的數據庫設計能為你帶來什么好處,以及為什么不好的數據庫設計會給你帶來痛苦;為你的數據庫設定目標,并將其付諸實際的設計;分析一個現有的數據庫,以便于你掌握改進它的方法;創建表結構和表關系,設定主鍵,設置字段說明,并設定視圖;確保每一個應用有恰當水平的數據完整性;明確和建立業務規則。

目錄:

目錄



第1部分 關系數據庫設計 1
第1章 關系數據庫 2
本章內容 2
數據庫的類型 3
早期數據庫模型 4
層次數據庫模型 4
網狀數據庫模型 7
關系數據庫模型 10
檢索數據 12
關系數據庫的優勢 13
關系數據庫管理系統 14
后關系模型 16
未來將會如何 17
最后一點 17
小結 18
思考題 19
第2章 設計目標 20
本章內容 20
為什么要關注數據庫設計 21
理論的重要性 22
學習優秀設計方法學的益處 23
優秀設計的目標 24
優秀設計的好處 25
數據庫設計方法 25
傳統設計方法 25
本書中所呈現的設計方法 27
規范化 27
小結 29
思考題 30
第3章 術語 31
本章內容 31
術語為何重要 32
關于值的術語 33
數據 33
信息 33
空值(null) 34
Null的值 35
Null所帶來的問題 36
關于結構的術語 38
表 38
字段 40
記錄 41
視圖 42
鍵 43
索引 45
關于關系的術語 45
關系 45
關系類型 46
一對一關系 47
一對多關系 47
多對多關系 48
參與的類型 50
參與度 51
關于完整性的術語 52
字段說明 52
數據完整性 52
小結 53
思考題 54
第2部分 設計過程 57
第4章 概念性概述 58
本章內容 58
完成設計過程的重要性 59
明確宗旨和任務目標 60
分析現有數據庫 60
創建數據結構 61
確定和建立表關系 62
確定和定義業務規則 63
確定和定義視圖 63
審核數據完整性 64
小結 65
思考題 66
第5章 大幕開啟 67
本章內容 67
開展訪談 68
參與者指南 69
采訪者指南 70
案例分析:邁克自行車行 73
明確宗旨 74
優良的宗旨 74
制訂宗旨 75
案例分析:為邁克自行車行制訂宗旨 77
明確任務目標 78
優秀的任務目標 78
制訂任務目標 79
案例分析:為邁克自行車行制訂任務目標 82
小結 83
思考題 83

第6章 分析現有數據庫 85
本章內容 85
了解現有數據庫 85
紙質數據庫 87
遺留數據庫 88
開展分析 89
了解如何收集數據 89
了解如何呈現信息 92
開展訪談 95
基本訪談技巧 96
開始訪談之前 100
用戶訪談 101
評審數據類型和用途 101
評審樣本 102
評審信息要求 106
管理人員訪談 112
評審當前信息要求 112
評審附加信息要求 113
評審未來信息要求 113
評審總體信息要求 114
編輯完整字段列表 115
初始字段列表 115
計算字段列表 120
案例分析 121
小結 126
思考題 126
第7章 建立表結構 128
本章內容 128
定義初始表列表 129
確定隱含主題 129
使用主題列表 130
使用任務目標 134
定義最終表列表 136
改進表名稱 137
指明表類型 140
編輯表描述 141
字段對應入表 145
精簡字段 147
改進字段名稱 147
使用理想字段解決異常現象 150
消除復合字段 152
消除多值字段 154
精簡表結構 159
談談冗余數據和重復字段 159
參照理想表精簡表結構 160
建立子集表 166
案例分析 170
小結 175
思考題 176
第8章 鍵 178
本章內容 178
鍵為何重要 179
為每個表建立鍵 179
候選鍵 179
主鍵 185
替換鍵 190
非鍵 191
表層次完整性 191
評審初始表結構 191
案例分析 192
小結 197
思考題 198
第9章 字段說明 199
本章內容 199
字段說明為何重要 200
字段級完整性 201
字段說明之剖析 202
一般元素 204
物理元素 209
邏輯元素 213
使用獨特、通用和可復制的字段說明 219
定義每個字段的字段說明 225
案例分析 226
小結 228
思考題 229
第10章 表關系 231
本章內容 231
關系為何重要 232
關系的類型 233
一對一關系 234
一對多關系 235
多對多關系 237
自聯結關系 244
識別現有關系 247
建立關系 255
一對一和一對多關系 255
多對多關系 260
自引用關系 265
評審表結構 269
改進所有外鍵 270
外鍵的要素 270
建立關系特征 275
為每個關系定義刪除規則 275
識別每個表的參與類型 279
識別每個表的參與度 281
與用戶和管理人員驗證表關系 283
結語 284
關系層次完整性 284
案例分析 284
小結 289
思考題 290
第11章 業務規則 292
本章內容 292
什么是業務規則 293
業務規則類型 295
業務規則的分類 297
字段特有業務規則 297
關系特有業務規則 298
定義和建立業務規則 299
與用戶和管理人員合作 299
定義和建立字段特有業務規則 300
定義和建立關系特有業務規則 307
驗證表 312
什么是驗證表 313
使用驗證表支持業務規則 313
評審業務規則規范表 318
案例分析 318
小結 324
思考題 325
第12章 視圖 326
本章內容 326
什么是視圖 326
視圖之剖析 328
數據視圖 328
聚合視圖 332
驗證視圖 335
確立視圖 336
與用戶和管理人員合作 336
定義視圖 337
評審每個視圖的文檔記錄 345
案例分析 345
小結 349
思考題 350
第13章 評審數據完整性 351
本章內容 351
為什么要評審數據完整性 352
評審和改進數據完整性 352
表層次完整性 353
字段級完整性 353
關系層次完整性 353
業務規則 354
視圖 354
匯編數據庫文檔 355
大功告成 356
案例分析——總結 356
小結 356
第3部分 其他數據庫設計事項 357
第14章 設計不當——禁忌事項 358
本章內容 358
平面文件設計 359
電子表格設計 360
摒棄電子表格視圖思維定式 361
基于數據庫軟件設計數據庫 362
最后一點想法 363
小結 364
第15章 打破規則 365
本章內容 365
何種情況下可以打破規則 365
設計分析型數據庫 366
提升處理性能 366
提升性能首選其他方式 367
記錄行動 368
小結 369
結束語 370
第4部分 附錄 373
附錄A 思考題答案 374
附錄B 數據庫設計過程中的示意圖 392
附錄C 設計指南 409
附錄D 文檔形式 417
附錄E 數據庫設計示意圖符號 421
附錄F 設計樣本 423
附錄G 關于規范化 430
附錄H 推薦書目 437
術語表 439
參考文獻 452
序: