第一图书网

数据库重构

(加)安布勒 等著,王海鹏 等译 机械工业出版社
出版时间:

2011-6  

出版社:

机械工业出版社  

作者:

(加)安布勒 等著,王海鹏 等译  

页数:

219  

译者:

王海鹏  

Tag标签:

无  

内容概要

  本书首次专门讨论数据库重构,向数据专业人员展示了如何运用重构、测试驱动及其他敏捷技术进行演进式数据库开发。书中通过许多实际例子,详细说明了数据库重构的过程、策略以及部署。
  本书前5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。
  书中的示例代码是用java、hibernate和oracle代码编写的,代码都很简单,读者可以毫无困难地将它们转换成c#、c++或visual
basic代码。

作者简介

  ScottcW.cAmbler国际知名的软件过程改进顾问,技术领头人,敏捷建模、敏捷数据、企业统一过程、敏捷统一过程方法学的创始人,Scott经常在SoftwareDeveloPment、JavaOne、OOPSLA和DAMA等会议上进行主题演讲,他写作(或与他人合著)出版的书还包括《AgilecModeling》、《AgilecDatabaseTeehnique》、《ThecObieetcPrimer,ThirdcEdition》、《ThecElementscofcUMLcUML2.0cStyle》和《ThecEntercPrisecUnifiedcProcess》等。
  cPramodcJ.cSadalagecThoughtworks公司的顾问,在1999年用XP方法开发一个大型J2EE应用时,他就率先实践了演进式数据库设计和数据库重构的过程,他目前正在进行有关演进式项目中的数据库管理以及在数据库设计和管理中使用演进式过程等主题的写作和演讲。

书籍目录

对本书的赞誉

前言
致谢
第1章演进式数据库开发
 1.1数据库重构
 1.2演进式数据库建模
 1.3数据库回归测试
 1.4数据库工件的配置管理
 1.5开发者沙盒
 1.6演进式数据库开发技术的障碍
 1.7本章小结
第2章数据库重构
 2.1代码重构
 2.2数据库重构
 2.2.1单应用数据库环境
 2.2.2多应用数据库环境
 2.2.3保持语义
 2.3数据库重构的分类
 2.4数据库味道
 2.5数据库重构在开发中的位置
 2.6使数据库schema的重构更容易
 2.7本章小结
第3章数据库重构过程
 3.1验证数据库重构是否合适
 3.2选择最合适的数据库重构
 3.3让原来的数据库schema过时
 3.4前测试、中测试和后测试
 3.4.1测试数据库schema
 3.4.2检验数据迁移的有效性
 3.4.3测试外部访问程序
 3.5修改数据库schema
 3.6迁移源数据
 3.7重构外部访问程序
 3.8运行回归测试
 3.9对工作进行版本控制
 3.10宣布此次重构
 3.11本章小结
第4章部署到生产环境
 4.1在沙盒之间有效地部署
 4.2采用数据库重构包
 4.3制定部署时间窗口进度计划
 4.4部署系统
 4.5移除已过时的schema
 4.6本章小结
第5章数据库重构策略
 5.1小的变更更容易进行
 5.2唯一地标识每一次重构
 5.3通过许多小变更实现一次大变更
 5.4建立数据库配置表
 5.5触发器优于视图或批量同步
 5.6选择一个足够长的转换期
 5.7简化数据库变更控制委员会策略
 5.8简化与其他团队的协商
 5.9封装对数据库的访问
 5.10能够容易地建立数据库环境
 5.11不要复制sql
 5.12将数据库资产置于变更控制之下
 5.13注意机构中的政治斗争
 5.14本章小结
 5.15在线资源
第6章结构重构
 6.1实现结构重构时的常见问题
 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用关联表取代一对多关系
 6.16用自然键取代替代键
 6.17拆分列
 6.18拆分表
第7章数据质量重构
 7.1实现数据质量重构时的常见问题
 7.2增加查找表
 7.3采用标准代码
 7.4采用标准类型
 7.5统一主键策略
 7.6删除列约束
 7.7删除缺省值
 7.8删除不可空约束
 7.9引入列约束
 7.10引入通用格式
 7.11引入缺省值
 7.12使列不可空
 7.13移动数据
 7.14用属性标识取代类型代码
第8章参照完整性重构
 8.1增加外键约束
 8.2为计算列增加触发器
 8.3删除外键约束
 8.4引入层叠删除
 8.5引入硬删除
 8.6引入软删除
 8.7为历史数据引入触发器
第9章架构重构
 9.1增加crud方法
 9.2增加镜像表
 9.3增加读取方法
 9.4用视图封装表
 9.5引入计算方法
 9.6引入索引
 9.7引入只读表
 9.8从数据库中移出方法
 9.9将方法移至数据库
 9.10用视图取代方法
 9.11用方法取代视图
 9.12使用正式数据源
第10章方法重构
 10.1接口变更重构
 10.1.1增加参数
 10.1.2方法参数化
 10.1.3删除参数
 10.1.4方法改名
 10.1.5参数重排序
 10.1.6用明确的方法取代参数
 10.2内部重构
 10.2.1合并条件表达式
 10.2.2分解条件
 10.2.3提取方法
 10.2.4引入变量
 10.2.5删除控制标记
 10.2.6消除中间人
 10.2.7参数改名
 10.2.8用表查找取代文字常量
 10.2.9用条件短语取代嵌套条件
 10.2.10拆分临时变量
 10.2.11替换算法
第11章转换
 11.1插入数据
 11.2引入新列
 11.3引入新表
 11.4引入视图
 11.5更新数据
附录uml数据建模表示法
词汇表
参考文献和推荐读物
重构和转换列表

章节摘录

版权页:插图:我们的前提是,数据专家需要像开发人员一样,采用演进式技术。虽然你可以争辩说,在数据社区中开发人员应该回到“经检验正确”的传统开发方式,但是传统的方式不能很好地工作,这一点正变得越来越明显。CraigL,arman在他的著作(Larman,2004)的第5章Agile&IterativeDevelopment中总结了支持演进式开发的研究证据,以及信息技术(IT)社区中的领导者对演进式开发的压倒性支持。简单地说,与在数据社区中流行的传统技术相比,在开发社区中流行的演进式和敏捷技术工作得更好。数据专家也可以在他们工作的各个方面采用演进式技术,如果他们愿意的话。第一步是重新考虑你的IT组织中的“数据文化”,以反映现代IT项目团队的需要。敏捷数据(AD)方法(Ambler2003)正是这样做的,它描述了现代面向数据的活动中的一些原则和角色。这些原则反映出数据如何成为商业软件的诸多重要方面之一,暗示开发人员需要更擅长数据技术,数据专家需要学习现代的开发技术与技能。AD方法意识到每个项目团队都是独特的,需要遵守一个按照他们的情况进行剪裁的过程。超越你当前的项目而考虑整个企业的问题,这一点也得到了强调。因为像操作型数据库管理员和数据架构师这样的企业专家需要这样做,才能灵活地与采用敏捷方式的项目团队共同工作。第二步是针对数据专家的,特别是数据管理人员。他们要采用新的技术,确保他们能以一种演进式的方式工作。在本章中,我们简单地介绍了这些关键的技术。在我们看来,最重要的技术就是数据库重构,这就是本书关注的重点。演进式数据库开发技术包括:1.数据库重构。让现有的数据库schema每次演进一点,在不改变语义的情况下改善其设计质量。2.演进式数据建模。以迭代和增量的方式对系统的数据进行建模,就像对系统的其他方面进行建模时一样,从而确保数据库schema与应用的代码一起演进。3.数据库回归测试。确保数据库schema确实能工作。4.数据库工件的配置管理。你的数据模型、数据库测试、测试数据等都是重要的项目工件(artifact),应该像其他工件那样管理起来。5.开发者沙盒。开发者需要属于他们自己的工作环境,他们可以在其中修改正在构建的系统的一部分,使这部分修改能工作,然后再将他们的工作与其他团队成员的工作集成起来。让我们来仔细考虑一下每一种演进式数据库技术。1.1 数据库重构重构(Fowler1999)是一种训练有素的方式,对源代码进行小的改动以改进其设计,使代码处理起来变得更容易。重构的一个关键方面是,它保持了代码的行为语义——你在重构时既不添加东西也不减少东西,你只是改进代码的质量。重构的一个例子可以是将getPersons()操作改名为getPeople()。为了实现这一重构,你必须改变操作定义,然后改变应用代码中所有对这个操作的调用。直到所有的代码重新运行之后,重构才算完成。


编辑推荐

《数据库重构》是第17届Jolt生产力大奖获奖图书。

图书封面

图书标签Tags

广告

下载页面


数据库重构 PDF格式下载



对数据库重构的概念比较模糊,看看如何进行。


数据库重构


建议有很多经验的人再读此书。


实际上在设计阶段也比较实用


低于期望值,书比较薄,不过有参考价值


相关图书