數(shù)據(jù)庫重構(gòu)

出版時間:2011-6  出版社:機(jī)械工業(yè)出版社  作者:(加)安布勒 等著,王海鵬 等譯  頁數(shù):219  譯者:王海鵬  
Tag標(biāo)簽:無  

內(nèi)容概要

  本書首次專門討論數(shù)據(jù)庫重構(gòu),向數(shù)據(jù)專業(yè)人員展示了如何運用重構(gòu)、測試驅(qū)動及其他敏捷技術(shù)進(jìn)行演進(jìn)式數(shù)據(jù)庫開發(fā)。書中通過許多實際例子,詳細(xì)說明了數(shù)據(jù)庫重構(gòu)的過程、策略以及部署。
  本書前5章介紹了演進(jìn)式數(shù)據(jù)庫開發(fā)的基本思想和技術(shù),后6章詳細(xì)描述了每一類重構(gòu),包括結(jié)構(gòu)、數(shù)據(jù)質(zhì)量、參照完整性、架構(gòu)、方法的重構(gòu);另外還描述了不屬于重構(gòu)范疇的轉(zhuǎn)換技術(shù)。
  書中的示例代碼是用java、hibernate和oracle代碼編寫的,代碼都很簡單,讀者可以毫無困難地將它們轉(zhuǎn)換成c#、c++或visual
basic代碼。

作者簡介

  ScottcW.cAmbler國際知名的軟件過程改進(jìn)顧問,技術(shù)領(lǐng)頭人,敏捷建模、敏捷數(shù)據(jù)、企業(yè)統(tǒng)一過程、敏捷統(tǒng)一過程方法學(xué)的創(chuàng)始人,Scott經(jīng)常在SoftwareDeveloPment、JavaOne、OOPSLA和DAMA等會議上進(jìn)行主題演講,他寫作(或與他人合著)出版的書還包括《AgilecModeling》、《AgilecDatabaseTeehnique》、《ThecObieetcPrimer,ThirdcEdition》、《ThecElementscofcUMLcUML2.0cStyle》和《ThecEntercPrisecUnifiedcProcess》等。
  cPramodcJ.cSadalagecThoughtworks公司的顧問,在1999年用XP方法開發(fā)一個大型J2EE應(yīng)用時,他就率先實踐了演進(jìn)式數(shù)據(jù)庫設(shè)計和數(shù)據(jù)庫重構(gòu)的過程,他目前正在進(jìn)行有關(guān)演進(jìn)式項目中的數(shù)據(jù)庫管理以及在數(shù)據(jù)庫設(shè)計和管理中使用演進(jìn)式過程等主題的寫作和演講。

書籍目錄

對本書的贊譽(yù)

前言
致謝
第1章演進(jìn)式數(shù)據(jù)庫開發(fā)
 1.1數(shù)據(jù)庫重構(gòu)
 1.2演進(jìn)式數(shù)據(jù)庫建模
 1.3數(shù)據(jù)庫回歸測試
 1.4數(shù)據(jù)庫工件的配置管理
 1.5開發(fā)者沙盒
 1.6演進(jìn)式數(shù)據(jù)庫開發(fā)技術(shù)的障礙
 1.7本章小結(jié)
第2章數(shù)據(jù)庫重構(gòu)
 2.1代碼重構(gòu)
 2.2數(shù)據(jù)庫重構(gòu)
 2.2.1單應(yīng)用數(shù)據(jù)庫環(huán)境
 2.2.2多應(yīng)用數(shù)據(jù)庫環(huán)境
 2.2.3保持語義
 2.3數(shù)據(jù)庫重構(gòu)的分類
 2.4數(shù)據(jù)庫味道
 2.5數(shù)據(jù)庫重構(gòu)在開發(fā)中的位置
 2.6使數(shù)據(jù)庫schema的重構(gòu)更容易
 2.7本章小結(jié)
第3章數(shù)據(jù)庫重構(gòu)過程
 3.1驗證數(shù)據(jù)庫重構(gòu)是否合適
 3.2選擇最合適的數(shù)據(jù)庫重構(gòu)
 3.3讓原來的數(shù)據(jù)庫schema過時
 3.4前測試、中測試和后測試
 3.4.1測試數(shù)據(jù)庫schema
 3.4.2檢驗數(shù)據(jù)遷移的有效性
 3.4.3測試外部訪問程序
 3.5修改數(shù)據(jù)庫schema
 3.6遷移源數(shù)據(jù)
 3.7重構(gòu)外部訪問程序
 3.8運行回歸測試
 3.9對工作進(jìn)行版本控制
 3.10宣布此次重構(gòu)
 3.11本章小結(jié)
第4章部署到生產(chǎn)環(huán)境
 4.1在沙盒之間有效地部署
 4.2采用數(shù)據(jù)庫重構(gòu)包
 4.3制定部署時間窗口進(jìn)度計劃
 4.4部署系統(tǒng)
 4.5移除已過時的schema
 4.6本章小結(jié)
第5章數(shù)據(jù)庫重構(gòu)策略
 5.1小的變更更容易進(jìn)行
 5.2唯一地標(biāo)識每一次重構(gòu)
 5.3通過許多小變更實現(xiàn)一次大變更
 5.4建立數(shù)據(jù)庫配置表
 5.5觸發(fā)器優(yōu)于視圖或批量同步
 5.6選擇一個足夠長的轉(zhuǎn)換期
 5.7簡化數(shù)據(jù)庫變更控制委員會策略
 5.8簡化與其他團(tuán)隊的協(xié)商
 5.9封裝對數(shù)據(jù)庫的訪問
 5.10能夠容易地建立數(shù)據(jù)庫環(huán)境
 5.11不要復(fù)制sql
 5.12將數(shù)據(jù)庫資產(chǎn)置于變更控制之下
 5.13注意機(jī)構(gòu)中的政治斗爭
 5.14本章小結(jié)
 5.15在線資源
第6章結(jié)構(gòu)重構(gòu)
 6.1實現(xiàn)結(jié)構(gòu)重構(gòu)時的常見問題
 6.2刪除列
 6.3刪除表
 6.4刪除視圖
 6.5引入計算列
 6.6引入替代鍵
 6.7合并列
 6.8合并表
 6.9移動列
 6.10列改名
 6.11表改名
 6.12視圖改名
 6.13用表取代lob
 6.14取代列
 6.15用關(guān)聯(lián)表取代一對多關(guān)系
 6.16用自然鍵取代替代鍵
 6.17拆分列
 6.18拆分表
第7章數(shù)據(jù)質(zhì)量重構(gòu)
 7.1實現(xiàn)數(shù)據(jù)質(zhì)量重構(gòu)時的常見問題
 7.2增加查找表
 7.3采用標(biāo)準(zhǔn)代碼
 7.4采用標(biāo)準(zhǔn)類型
 7.5統(tǒng)一主鍵策略
 7.6刪除列約束
 7.7刪除缺省值
 7.8刪除不可空約束
 7.9引入列約束
 7.10引入通用格式
 7.11引入缺省值
 7.12使列不可空
 7.13移動數(shù)據(jù)
 7.14用屬性標(biāo)識取代類型代碼
第8章參照完整性重構(gòu)
 8.1增加外鍵約束
 8.2為計算列增加觸發(fā)器
 8.3刪除外鍵約束
 8.4引入層疊刪除
 8.5引入硬刪除
 8.6引入軟刪除
 8.7為歷史數(shù)據(jù)引入觸發(fā)器
第9章架構(gòu)重構(gòu)
 9.1增加crud方法
 9.2增加鏡像表
 9.3增加讀取方法
 9.4用視圖封裝表
 9.5引入計算方法
 9.6引入索引
 9.7引入只讀表
 9.8從數(shù)據(jù)庫中移出方法
 9.9將方法移至數(shù)據(jù)庫
 9.10用視圖取代方法
 9.11用方法取代視圖
 9.12使用正式數(shù)據(jù)源
第10章方法重構(gòu)
 10.1接口變更重構(gòu)
 10.1.1增加參數(shù)
 10.1.2方法參數(shù)化
 10.1.3刪除參數(shù)
 10.1.4方法改名
 10.1.5參數(shù)重排序
 10.1.6用明確的方法取代參數(shù)
 10.2內(nèi)部重構(gòu)
 10.2.1合并條件表達(dá)式
 10.2.2分解條件
 10.2.3提取方法
 10.2.4引入變量
 10.2.5刪除控制標(biāo)記
 10.2.6消除中間人
 10.2.7參數(shù)改名
 10.2.8用表查找取代文字常量
 10.2.9用條件短語取代嵌套條件
 10.2.10拆分臨時變量
 10.2.11替換算法
第11章轉(zhuǎn)換
 11.1插入數(shù)據(jù)
 11.2引入新列
 11.3引入新表
 11.4引入視圖
 11.5更新數(shù)據(jù)
附錄uml數(shù)據(jù)建模表示法
詞匯表
參考文獻(xiàn)和推薦讀物
重構(gòu)和轉(zhuǎn)換列表

章節(jié)摘錄

版權(quán)頁:插圖:我們的前提是,數(shù)據(jù)專家需要像開發(fā)人員一樣,采用演進(jìn)式技術(shù)。雖然你可以爭辯說,在數(shù)據(jù)社區(qū)中開發(fā)人員應(yīng)該回到“經(jīng)檢驗正確”的傳統(tǒng)開發(fā)方式,但是傳統(tǒng)的方式不能很好地工作,這一點正變得越來越明顯。CraigL,arman在他的著作(Larman,2004)的第5章Agile&IterativeDevelopment中總結(jié)了支持演進(jìn)式開發(fā)的研究證據(jù),以及信息技術(shù)(IT)社區(qū)中的領(lǐng)導(dǎo)者對演進(jìn)式開發(fā)的壓倒性支持。簡單地說,與在數(shù)據(jù)社區(qū)中流行的傳統(tǒng)技術(shù)相比,在開發(fā)社區(qū)中流行的演進(jìn)式和敏捷技術(shù)工作得更好。數(shù)據(jù)專家也可以在他們工作的各個方面采用演進(jìn)式技術(shù),如果他們愿意的話。第一步是重新考慮你的IT組織中的“數(shù)據(jù)文化”,以反映現(xiàn)代IT項目團(tuán)隊的需要。敏捷數(shù)據(jù)(AD)方法(Ambler2003)正是這樣做的,它描述了現(xiàn)代面向數(shù)據(jù)的活動中的一些原則和角色。這些原則反映出數(shù)據(jù)如何成為商業(yè)軟件的諸多重要方面之一,暗示開發(fā)人員需要更擅長數(shù)據(jù)技術(shù),數(shù)據(jù)專家需要學(xué)習(xí)現(xiàn)代的開發(fā)技術(shù)與技能。AD方法意識到每個項目團(tuán)隊都是獨特的,需要遵守一個按照他們的情況進(jìn)行剪裁的過程。超越你當(dāng)前的項目而考慮整個企業(yè)的問題,這一點也得到了強(qiáng)調(diào)。因為像操作型數(shù)據(jù)庫管理員和數(shù)據(jù)架構(gòu)師這樣的企業(yè)專家需要這樣做,才能靈活地與采用敏捷方式的項目團(tuán)隊共同工作。第二步是針對數(shù)據(jù)專家的,特別是數(shù)據(jù)管理人員。他們要采用新的技術(shù),確保他們能以一種演進(jìn)式的方式工作。在本章中,我們簡單地介紹了這些關(guān)鍵的技術(shù)。在我們看來,最重要的技術(shù)就是數(shù)據(jù)庫重構(gòu),這就是本書關(guān)注的重點。演進(jìn)式數(shù)據(jù)庫開發(fā)技術(shù)包括:1.數(shù)據(jù)庫重構(gòu)。讓現(xiàn)有的數(shù)據(jù)庫schema每次演進(jìn)一點,在不改變語義的情況下改善其設(shè)計質(zhì)量。2.演進(jìn)式數(shù)據(jù)建模。以迭代和增量的方式對系統(tǒng)的數(shù)據(jù)進(jìn)行建模,就像對系統(tǒng)的其他方面進(jìn)行建模時一樣,從而確保數(shù)據(jù)庫schema與應(yīng)用的代碼一起演進(jìn)。3.數(shù)據(jù)庫回歸測試。確保數(shù)據(jù)庫schema確實能工作。4.數(shù)據(jù)庫工件的配置管理。你的數(shù)據(jù)模型、數(shù)據(jù)庫測試、測試數(shù)據(jù)等都是重要的項目工件(artifact),應(yīng)該像其他工件那樣管理起來。5.開發(fā)者沙盒。開發(fā)者需要屬于他們自己的工作環(huán)境,他們可以在其中修改正在構(gòu)建的系統(tǒng)的一部分,使這部分修改能工作,然后再將他們的工作與其他團(tuán)隊成員的工作集成起來。讓我們來仔細(xì)考慮一下每一種演進(jìn)式數(shù)據(jù)庫技術(shù)。1.1 數(shù)據(jù)庫重構(gòu)重構(gòu)(Fowler1999)是一種訓(xùn)練有素的方式,對源代碼進(jìn)行小的改動以改進(jìn)其設(shè)計,使代碼處理起來變得更容易。重構(gòu)的一個關(guān)鍵方面是,它保持了代碼的行為語義——你在重構(gòu)時既不添加?xùn)|西也不減少東西,你只是改進(jìn)代碼的質(zhì)量。重構(gòu)的一個例子可以是將getPersons()操作改名為getPeople()。為了實現(xiàn)這一重構(gòu),你必須改變操作定義,然后改變應(yīng)用代碼中所有對這個操作的調(diào)用。直到所有的代碼重新運行之后,重構(gòu)才算完成。

編輯推薦

《數(shù)據(jù)庫重構(gòu)》是第17屆Jolt生產(chǎn)力大獎獲獎圖書。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    數(shù)據(jù)庫重構(gòu) PDF格式下載


用戶評論 (總計5條)

 
 

  •   對數(shù)據(jù)庫重構(gòu)的概念比較模糊,看看如何進(jìn)行。
  •   數(shù)據(jù)庫重構(gòu)
  •   建議有很多經(jīng)驗的人再讀此書。
  •   實際上在設(shè)計階段也比較實用
  •   低于期望值,書比較薄,不過有參考價值
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7