出版時間:2009-11 出版社:人民郵電出版社 作者:Louis Davidson,Kevin Kline,Kurt Windisch,Scott Klein 頁數(shù):560 字數(shù):1040000 譯者:程樺,張緒業(yè)
Tag標簽:無
前言
數(shù)據(jù)庫設(shè)計是Louis和我都熱衷的事情。今年秋季,我將幸運地和我的朋友Louis Davidson登上同一個舞臺。我們將在DevLink會議上演講,地點是Louis的家鄉(xiāng)Nashville,然后,在西雅圖的PASS上我們也將同臺演講。在這兩次演講中,我們都將針對數(shù)據(jù)庫設(shè)計這個題目開展討論和辯論,并探討對以數(shù)據(jù)為中心的應(yīng)用來說數(shù)據(jù)庫設(shè)計有多關(guān)鍵。數(shù)據(jù)庫設(shè)計是門科學(xué)也是門藝術(shù)。規(guī)范化應(yīng)該說是門科學(xué),而確定實體的范圍則是一門藝術(shù),需要具有與各種數(shù)據(jù)庫打交道的經(jīng)驗才能學(xué)到手。優(yōu)雅的解決方案都有一種簡單的美。Louis不止是位作者和數(shù)據(jù)庫設(shè)計人員,也是一位大師級技師。在本書中,你會發(fā)現(xiàn)字里行間都隱藏著作者的呼吁——改善你的技能,精心雕刻出能夠經(jīng)受時間考驗的數(shù)據(jù)庫,創(chuàng)造一個能讓開發(fā)人員充分施展拳腳的、虛擬的數(shù)據(jù)世界。數(shù)據(jù)庫設(shè)計是每個以數(shù)據(jù)為中心的應(yīng)用的基石。一個優(yōu)雅的數(shù)據(jù)庫設(shè)計使得數(shù)據(jù)一目了然、容易查詢,并且使用有效的、基于集的查詢將開發(fā)人員武裝起來,使他們獲得成功。但是,如果數(shù)據(jù)庫設(shè)計就很糟糕,則無論多少代碼也無法補償,也無法為數(shù)據(jù)庫加上缺失的功能。對任何以數(shù)據(jù)為中心的應(yīng)用來說,沒有什么角色比數(shù)據(jù)建模人員這個角色更為重要。用戶界面換來換去,但是,即使經(jīng)歷了好幾代應(yīng)用編程語言,數(shù)據(jù)仍然存在著。數(shù)據(jù)庫架構(gòu)上犯下的錯誤遲早會被未來的程序員詛咒,即使他現(xiàn)在還未出生,即使他用的是現(xiàn)在還沒發(fā)明的語言和工具。在我的好朋友Louis的指導(dǎo)下,多花一點時間來潤色你的數(shù)據(jù)庫設(shè)計,絕對是件值得的事。因此,歡迎你閱讀本書,這是Louis針對軟件世界最重大的工作所寫的戰(zhàn)地指南的第三版。能夠為本書作序我感到無比愉快。
內(nèi)容概要
本書深入淺出地介紹了目前世界上最受歡迎的數(shù)據(jù)庫管理系統(tǒng)之一——SQL Server。全書共分三個部分:第一部分闡釋了數(shù)據(jù)庫的基本概念,講解了數(shù)據(jù)庫建模語言;第二部分展示了從概念建模到在SQL Server 2008上真正實現(xiàn)數(shù)據(jù)庫的過程;第三部分深入探討了SQL Server若干方面的技術(shù)細節(jié),如數(shù)據(jù)保護、索引、并發(fā)訪問等。通過將理論融入數(shù)據(jù)庫實踐,清晰地講解了關(guān)系型數(shù)據(jù)庫的設(shè)計原則,完整地展示了如何進行良好的關(guān)系型數(shù)據(jù)庫設(shè)計,深入揭示了SQL Server 2008的技術(shù)細節(jié)?! ”緯鴿饪s了作者作為SQL Server數(shù)據(jù)庫架構(gòu)師多年來豐富的實踐經(jīng)驗,適合各類數(shù)據(jù)庫開發(fā)和管理人員學(xué)習(xí)參考。
作者簡介
作者:(美國)戴維森(Louis Davidson) (美國)Kevin Kline (美國)Scott Klein 等 譯者:程樺 張緒業(yè) 等Louis Davidson,作為企業(yè)數(shù)據(jù)庫開發(fā)人員和架構(gòu)師,他擁有超過15年的工作經(jīng)驗。目前他是田納西州Nashville的Christian廣播網(wǎng)絡(luò)和NorthStar工作室的數(shù)據(jù)架構(gòu)師。對于Louis而言,他全部的職業(yè)經(jīng)驗幾乎都與微軟的SQL Server有關(guān),從早期版本一直到當前最新版本的Beta版。Louis是一本講數(shù)據(jù)庫設(shè)計的書的4個版本的主要作者。Louis主要的興趣領(lǐng)域是數(shù)據(jù)庫架構(gòu)和用T-SQL編碼,并且,他設(shè)計過許多數(shù)據(jù)庫,在這許多年中編寫過數(shù)以千計的存儲過程和觸發(fā)器。關(guān)于特約作者Kevin Kline,是Quest軟件公司SQL Server解決方案的技術(shù)戰(zhàn)略經(jīng)理。Kevin從2004年開始就是微軟的SQL Server MVP,他是國際SQL Server專家聯(lián)盟(PASS)創(chuàng)立委員會的成員和上一屆總裁。他獨自寫作或參與合著了好幾本書,包括SQLin a Nutshell(O'Reily,2004)、Pro SQL Server 2005 Database Design andOptimization(hpress,2006)以及Database BenchmarMng:Practical Methodsfo,Oracle & SQL Server(Rampant,2007)。Kevin給SQLServerMagazine和DatabaseTrends and Applications雜志供稿,他的博客可以在SQLBlog.com和SQLMag.com上找到。在世界范圍內(nèi)的會議上,比如微軟的Tech Ed、PASS社區(qū)峰會、微軟IT論壇、DevTeach以及SQL Connections,Kevin也是人氣最高的演講者。從1986年開始Kevin就活躍在IT工業(yè)中。Scott Klein,是一位獨立咨詢師,對SQL Server、.NET和XML相關(guān)的所有知識都充滿熱情。他是幾本書的作者,這包括ProfessionalSQLServer2005XML(Wrox,2006)和ProfessionalLINQ(Wrox,2008),他還為SQL PASS Community Connector寫每兩周一次的特輯文章。他也為好幾個網(wǎng)站供稿,這包括Wrox(http:llwww.wrox.com)和TopXML(http://www.topxml.com)。他經(jīng)常同佛羅里達附近的SQLServer和.NET用戶群體交流。Scott在佛羅里達的Wellington,當他不坐在計算機前時,你會發(fā)現(xiàn)他和自己的家人在一起,或者騎著他的雅馬哈摩托車轟鳴在當?shù)氐哪ν熊囋揭百愘惖郎?。你可以通過ScottKlein@SqlXml.com聯(lián)系他。Kurt Windisch,是Levi,Ray,and Shoup,Inc.公司內(nèi)部IT部門的應(yīng)用程序監(jiān)管,該公司是一家技術(shù)方案的全球供應(yīng)商,總部位于伊利諾伊州的springfield。Kurt在ITI業(yè)中的經(jīng)驗超過了17年。他在SQLServer專家聯(lián)盟的董事會中服務(wù)了5年,為很多SQL Server雜志供過稿,也在討論SQL Server數(shù)據(jù)庫編程的國際會議上發(fā)過言。
書籍目錄
第1章 數(shù)據(jù)庫概念簡介 1.1 數(shù)據(jù)庫設(shè)計階段 1.1.1 概念階段 1.1.2 邏輯階段 1.1.3 實現(xiàn)階段 1.1.4 物理階段 1.2 關(guān)系數(shù)據(jù)結(jié)構(gòu) 1.2.1 數(shù)據(jù)庫和模式 1.2.2 表、行和列 1.2.3 信息原則 1.2.4 域 1.2.5 元數(shù)據(jù) 1.2.6 鍵 1.2.7 未顯式賦值的項(NULL) 1.3 實體之間的關(guān)系 1.3.1 二元關(guān)系 1.3.2 非二元關(guān)系 1.4 數(shù)據(jù)訪問語言(SQL) 1.5 理解依賴性 1.5.1 函數(shù)依賴性 1.5.2 判定 1.6 總結(jié)第2章 數(shù)據(jù)建模語言 2.1 數(shù)據(jù)建模介紹 2.2 實體 2.3 屬性 2.3.1 主鍵 2.3.2 替代鍵 2.3.3 外鍵 2.3.4 域 2.3.5 命名 2.4 關(guān)系 2.4.1 識別性關(guān)系 2.4.2 非識別性關(guān)系 2.4.3 角色名字 2.4.4 關(guān)系基數(shù) 2.4.5 動詞短語(關(guān)系名字) 2.5 描述信息 2.6 其他建模方法 2.6.1 信息工程 2.6.2 Chen ERD 2.6.3 Visio 2.6.4 Management Studio數(shù)據(jù)庫關(guān)系圖 2.7 最佳實踐 2.8 總結(jié)第3章 概念階段數(shù)據(jù)建?!?.1 理解需求 3.2 文檔化過程 3.3 需求收集 3.3.1 客戶訪談 3.3.2 要回答的問題 3.3.3 現(xiàn)存的系統(tǒng)和原型 3.3.4 其他類型的文檔 3.4 識別對象和過程 3.4.1 識別實體 3.4.2 實體間關(guān)系 3.4.3 識別屬性和域 3.5 識別業(yè)務(wù)規(guī)則和業(yè)務(wù)過程 3.5.1 識別業(yè)務(wù)規(guī)則 3.5.2 識別基礎(chǔ)業(yè)務(wù)過程 3.6 完成概念模型 3.6.1 識別明顯的、額外的數(shù)據(jù)需求 3.6.2 和客戶一起評審 3.6.3 重復(fù)以上步驟直到客戶同意你的模型 3.7 最佳實踐 3.8 總結(jié)第4章 規(guī)范化過程 4.1 為什么要規(guī)范化 4.1.1 消滅重復(fù)數(shù)據(jù) 4.1.2 避免編寫不必要的代碼 4.1.3 給表瘦身 4.1.4 最大化聚集索引的使用 4.1.5 降低每張表中索引的數(shù)量 4.2 規(guī)范化應(yīng)該走多遠 4.3 規(guī)范化過程 4.4 實體和屬性的形式:第一范式 4.4.1 所有屬性必須是原子的 4.4.2 實體的所有實例必須包含相同數(shù)量的值 4.4.3 實體中出現(xiàn)的所有實體類型都必須不同 4.4.4 第一范式所避免的不規(guī)則編程 4.4.5 當前設(shè)計不符合第一范式的線索 4.5 屬性間的關(guān)系 4.5.1 第二范式 4.5.2 第三范式 4.5.3 Boyce-Codd范式 4.6 實體中的多值依賴 4.6.1 第四范式 4.6.2 第五范式 4.7 非規(guī)范化 4.8 最佳實踐 4.9 總結(jié) 4.10 額外的例子 4.11 本書迄今為止所講述的故事第5章 實現(xiàn)基礎(chǔ)的表結(jié)構(gòu) 5.1 評審邏輯設(shè)計 5.2 變換設(shè)計 5.2.1 選擇名字 5.2.2 處理子類型 5.2.3 決定樹的實現(xiàn)方式 5.2.4 選擇鍵的實現(xiàn)方式 5.2.5 決定域的實現(xiàn)方式 5.2.6 設(shè)置模式 5.2.7 評審“最終的”實現(xiàn)模型 5.3 實現(xiàn)設(shè)計 5.3.1 創(chuàng)建基本表結(jié)構(gòu) 5.3.2 添加唯一性約束 5.3.3 構(gòu)建默認約束 5.3.4 添加關(guān)系(外鍵) 5.3.5 處理排序規(guī)則和排序 5.3.6 計算列 5.3.7 實現(xiàn)用戶定義的數(shù)據(jù)類型 5.3.8 文檔化你的數(shù)據(jù)庫 5.3.9 處理依賴信息 5.4 最佳實踐 5.5 總結(jié)第6章 保護數(shù)據(jù)的完整性 6.1 最佳實踐 6.2 自動數(shù)據(jù)保護 6.2.1 聲明性數(shù)據(jù)保護 6.2.2 基本語法 6.2.3 基于簡單表達式的CHECK約束 6.2.4 基于函數(shù)的CHECK約束 6.2.5 約束引起的錯誤 6.2.6 DML觸發(fā)器 6.2.7 處理來自觸發(fā)器和約束的錯誤 6.3 手動數(shù)據(jù)保護 6.4 更多最佳實踐 6.5 總結(jié)第7章 模式與查詢技術(shù) 7.1 預(yù)計算值 7.1.1 序列表 7.1.2 日期計算 7.2 二進制大型對象(BLOB) 7.3 存儲用戶自定義數(shù)據(jù) 7.3.1 一長串通用列 7.3.2 實體-屬性-值(EAV) 7.3.3 往表中增加列 7.4 通用實現(xiàn)對象 7.5 反模式 7.5.1 多用途鍵域 7.5.2 通用鍵引用 7.5.3 對非結(jié)構(gòu)化數(shù)據(jù)的過度使用 7.6 總結(jié) 7.7 回顧與展望第8章 數(shù)據(jù)訪問安全 8.1 安全主體與安全對象 8.2 數(shù)據(jù)庫安全概述 8.2.1 模擬 8.2.2 權(quán)限 8.2.3 控制對象訪問 8.2.4 角色 8.2.5 模式 8.3 通過T-SQL編程對象控制對象訪問 8.3.1 存儲過程和標量函數(shù) 8.3.2 對象內(nèi)模擬 8.3.3 跨數(shù)據(jù)庫邊界 8.3.4 不同的服務(wù)器(分布式查詢) 8.4 視圖與表值函數(shù) 8.4.1 一般用法 8.4.2 使用視圖實現(xiàn)可配置的行級安全 8.5 數(shù)據(jù)混淆 8.6 監(jiān)視與審核 8.6.1 服務(wù)器與數(shù)據(jù)庫審核 8.6.2 使用DML觸發(fā)器查看表的變更歷史 8.6.3 DDL觸發(fā)器 8.6.4 分析器日志 8.7 最佳實踐 8.8 總結(jié)第9章 表結(jié)構(gòu)與索引 9.1 數(shù)據(jù)庫物理結(jié)構(gòu) 9.1.1 文件與文件組 9.1.2 分區(qū)與頁 9.1.3 頁中的數(shù)據(jù) 9.1.4 分區(qū) 9.2 索引概覽 9.3 基本索引結(jié)構(gòu) 9.4 索引類型 9.4.1 聚集索引 9.4.2 非聚集索引 9.4.3 聚集表上的非聚集索引 9.5 索引創(chuàng)建的基本方法 9.6 基本的索引使用模式 9.6.1 使用聚集索引 9.6.2 使用非聚集索引 9.6.3 使用唯一索引 9.7 高級的索引使用案例 9.7.1 外鍵索引 9.7.2 索引視圖 9.8 最佳實踐 9.9 總結(jié)第10章 并發(fā)編程 10.1 什么是并發(fā) 10.2 查詢優(yōu)化的基礎(chǔ)知識 10.3 操作系統(tǒng)與硬件因素 10.4 事務(wù) 10.4.1 事務(wù)語法 10.4.2 已編譯的SQL Server代碼 10.5 SQL Server并發(fā)控制 10.5.1 鎖 10.5.2 隔離級別 10.6 完整性與并發(fā)性編程 10.6.1 悲觀鎖定 10.6.2 實現(xiàn)單線程代碼塊 10.6.3 樂觀鎖定 10.6.4 基于行的鎖定 10.6.5 邏輯工作單元 10.7 最佳實踐 10.8 總結(jié)第11章 數(shù)據(jù)訪問策略 11.1 即席SQL 11.1.1 優(yōu)點 11.1.2 缺陷 11.2 存儲過程 11.2.1 封裝性 11.2.2 動態(tài)存儲過程 11.2.3 安全性 11.2.4 性能 11.2.5 缺陷 11.2.6 觀點 11.3 T-SQL與CLR(公共語言運行時) 11.3.1 選擇T-SQL的準則 11.3.2 選擇.NET的準則 11.3.3 CLR對象類型 11.4 最佳實踐 11.5 總結(jié)附錄A Codd的RDBMS十二法則附錄B 標量數(shù)據(jù)類型參考索引
章節(jié)摘錄
插圖:第1章 數(shù)據(jù)庫概念簡介這下她明白了,敵人如魔鬼般的狡詐,正在于給謊言摻入一點真話,如此一來,謊言就更以假亂真?!都{尼亞傳奇:最后的戰(zhàn)役》,C.S.Lewis著作為數(shù)據(jù)架構(gòu)師的職業(yè)生涯中,從最開始到昨天為止(不管你什么時候看到這些句子,我這句話基本上都不可能會變化),我無數(shù)次遭遇一個完全難以克服的現(xiàn)實。向一個以墻上的鐘點考評所有項目的管理體系兜售“做對事情”的概念從來都不輕松。不光如此,通常情況下,實現(xiàn)功能的程序員人數(shù)往往比做數(shù)據(jù)庫的多若干倍,他們邊等著用數(shù)據(jù)庫,邊對管理層抱怨說,不到數(shù)據(jù)庫設(shè)計完成或至少開始實現(xiàn),他們什么事都干不了。如果這還不夠,現(xiàn)在介紹一下項目組的思維定勢,具體用詞可能略有偏差:“數(shù)據(jù)庫設(shè)計不那么重要?!边@話往往并非明確地用這些詞說出來(雖然也確實有這樣說的時候)。一般說來,在人們大談用戶界面(UI)應(yīng)該如何顯示某個東西,以及某按鈕應(yīng)該放到哪兒的時候,類似的話就混雜于其中。系統(tǒng)設(shè)計從一開始就讓人感覺像是追求“照片般真實”的藝術(shù)家在畫一幅畫,而不是在進行一個需要遵循堅實工程實踐的項目,先回答“需要做什么”再回答“如何做''的問題。更糟糕的是,由于數(shù)據(jù)庫是幾乎所有軟件項目的骨干成分,這使得情況更加復(fù)雜且不易看清,往往快到項目開發(fā)階段結(jié)束時,事情才暴露出猙獰的真面目。如果你在參與數(shù)據(jù)庫設(shè)計,那么非常重要的是,你需要知道如何回答一個基本問題:“為什么?”這樣來看問題:你愿意開車在一座由某位不懂物理的工程師設(shè)計出來的橋上行駛嗎?或者,你愿意乘坐一架由某位不懂飛行基本原理的人士所設(shè)計出來的飛機嗎?聽起來非?;闹?,是不是?那么,你愿意把自己的重要數(shù)據(jù)存放在一個由某位不懂數(shù)據(jù)庫設(shè)計基本原理的人士所設(shè)計出來的數(shù)據(jù)庫中嗎?本書的前4章致力于討論關(guān)系數(shù)據(jù)庫設(shè)計的不同階段,以及如何有效地執(zhí)行每個階段的工作,從而能夠獲得一個良好的最終設(shè)計,既能滿足業(yè)務(wù)需求又能保證數(shù)據(jù)庫中數(shù)據(jù)的完整性。然而,在滿腔熱情地投入設(shè)計過程之前,需要探討幾個核心的關(guān)系數(shù)據(jù)庫概念。因此,本章討論如下主題。
媒體關(guān)注與評論
“跟本書的2005版一樣,我認為Louis的這本書寫得非常好,信息量極其豐富而且實踐性強。閱讀過程中,你會覺得是在跟作者討論問題。我喜歡這本書,還因為它有自己的觀點,而非從在線圖書中照搬過來……” —— Amazon讀者評論
編輯推薦
《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》:資深數(shù)據(jù)庫專家的心血力作,SQL Server設(shè)計思想的獨到解析,關(guān)系數(shù)據(jù)庫實現(xiàn)的通關(guān)寶典?!禨QL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》是關(guān)系型數(shù)據(jù)庫設(shè)計與開發(fā)方面一本不可多得的好書。作者十年磨一劍,最早以SQL Server 2000為藍本。其后經(jīng)歷了2005,再到2008,作品一版再版。不斷推陳出新,內(nèi)容也日益精煉、翔實,成為一本深得讀者好評的經(jīng)典著作。《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》雖然著眼于SQL Server 2008,但體現(xiàn)的是關(guān)系數(shù)據(jù)庫設(shè)計的思想與理念。從業(yè)務(wù)人員可以理解的邏輯設(shè)計,到利用SQL Server進行物理實現(xiàn)的方方面面,《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》貫穿始終的是融會關(guān)系數(shù)據(jù)庫思想、設(shè)計高效率可伸縮的數(shù)據(jù)庫。基于對關(guān)系數(shù)據(jù)庫設(shè)計開發(fā)的“最佳實踐”及相應(yīng)理論的透徹理解,作者還闡述了怎樣使用SQL Server做出優(yōu)雅的設(shè)計,為充分利用寶貴的業(yè)務(wù)數(shù)據(jù)打下堅實的基礎(chǔ)。通觀全書,其寫作思路清晰,觀點簡明實用,常能一針見血地指出要點。《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》是SQL Server開發(fā)者的必讀書,對其他數(shù)據(jù)庫開發(fā)者也有借鑒意義。對初級程序員來說,《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》是數(shù)據(jù)庫設(shè)計基礎(chǔ)的完備教程。有經(jīng)驗的開發(fā)人員也可從《SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》中學(xué)到很多數(shù)據(jù)庫開發(fā)的實用技巧?!禨QL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn)》要點:●如何借助面談和客戶文檔,為客戶數(shù)據(jù)建立概念模型?!袢绾螌?shù)據(jù)模型應(yīng)用范式,以增強可伸縮性,并長期使用寶貴的數(shù)據(jù)?!袢绾螌⒏拍钅P娃D(zhuǎn)化為高性能的關(guān)系數(shù)據(jù)庫?!袢绾蝿?chuàng)建高效的索引以優(yōu)化查詢的性能?!袢绾纬浞掷肧QL Sewer的新特性,如空間數(shù)據(jù)類型、XML支持、透明數(shù)據(jù)加密等。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
SQL Server 2008數(shù)據(jù)庫設(shè)計與實現(xiàn) PDF格式下載