第1章 演进式数据库开发 1
1.1 数据库重构 2
1.2 演进式数据库建模 3
1.3 数据库回归测试 5
1.4 数据库工件的配置管理 6
1.5 开发者沙盒 6
1.6 演进式数据库开发技术的障碍 7
1.7 本章小结 8
第2章 数据库重构 9
2.1 代码重构 9
2.2 数据库重构 10
2.2.1 单应用数据库环境 11
2.2.2 多应用数据库环境 12
2.2.3 保持语义 13
2.3 数据库重构的分类 14
2.4 数据库味道 15
2.5 数据库重构在开发中的位置 16
2.6 使数据库schema的重构更容易 17
2.7 本章小结 18
第3章 数据库重构过程 19
3.1 验证数据库重构是否合适 21
3.2 选择最合适的数据库重构 22
3.3 让原来的数据库schema过时 22
3.4 前测试、中测试和后测试 24
3.4.1 测试数据库schema 24
3.4.2 检验数据迁移的有效性 25
3.d.3 测试外部访问程序 25
3.5 修改数据库schema 26
3.6 迁移源数据 28
3.7 重构外部访问程序 28
3.8 运行回归测试 29
3.9 对工作进行版本控制 29
3.10 宣布此次重构 30
3.11 本章小结 30
第4章 部署到生产环境 31
4.1 在沙盒之间有效地部署 32
4.2 采用数据库重构包 33
4.3 制定部署时间窗口进度计划 34
4.4 部署系统 35
4.5 移除已过时的schema 36
d.6 本章小结 36
第5章 数据库重构策略 37
5.1 小的变更更容易进行 38
5.2 唯一地标识每一次重构 38
5.3 通过许多小变更实现一次大变更 39
5.4 建立数据库配置表 39
5.5 触发器优于视图或批量同步 40
5.6 选择一个足够长的转换期 40
5.7 简化数据库变更控制委员会策略 41
5.8 简化与其他团队的协商 41
5.9 封装对数据库的访问 41
5.10 能够容易地建立数据库环境 42
5.11 不要复制SQL 42
5.12 将数据库资产置于变更控制之下 42
5.13 注意机构中的政治斗争 43
5.14 本章小结 43
5.15 在线资源 43
第6章 结构重构 44
6.1 实现结构重构时的常见问题 44
6.2 删除列 46
6.3 删除表 49
6.4 删除视图 50
6.5 引入计算列 52
6.6 引入替代键 55
6.7 合并列 59
6.8 合并表 62
6.9 移动列 66
6.10 列改名 73
6.11 表改名 73
6.12 视图改名 76
6.13 用表取代LOB 78
6.14 取代列 82
6.15 用关联表取代一对多关系 85
6.16 用自然键取代替代键 88
6.17 拆分列 91
6.18 拆分表 95
第7章 数据质量重构 99
7.1 实现数据质量重构时的常见问题 99
7.2 增加查找表 100
7.3 采用标准代码 102
7.4 采用标准类型 104
7.5 统一主键策略 109
7.6 删除列约束 111
7.7 删除缺省值 112
7.8 删除不可空约束 114
7.9 引入列约束 116
7.10 引入通用格式 118
7.11 引入缺省值 119
7.12 使列不可空 121
7.13 移动数据 123
7.14 用属性标识取代类型代码 125
第8章 参照完整性重构 131
8.1 增加外键约束 131
8.2 为计算列增加触发器 134
8.3 删除外键约束 137
8.4 引入层叠删除 138
8.5 引入硬删除 141
8.6 引入软删除 143
8.7 为历史数据引入触发器 146
第9章 架构重构 149
9.1 增加CRUD方法 149
9.2 增加镜像表 152
9.3 增加读取方法 155
9.4 用视图封装表 157
9.5 引入计算方法 159
9.6 引入索引 161
9.7 引入只读表 163
9.8 从数据库中移出方法 167
9.9 将方法移至数据库 170
9.10 用视图取代方法 172
9.11 用方法取代视图 174
9.12 使用正式数据源 177
第10章 方法重构 180
10.1 接口变更重构 180
10.1.1 增加参数 180
10.1.2 方法参数化 181
10.1.3 删除参数 181
10.1.4 方法改名 181
10.1.5 参数重排序 182
10.1.6 用明确的方法取代参数 184
10.2 内部重构 185
10.2.1 合并条件表达式 185
10.2.2 分解条件 185
10.2.3 提取方法 186
10.2.4 引入变量 189
10.2.5 删除控制标记 190
10.2.6 消除中间人 190
10.2.7 参数改名 191
10.2.8 用表查找取代文字常量 191
10.2.9 用条件短语取代嵌套条件 192
10.2.10 拆分临时变量 193
10.2.11 替换算法 193
第11章 转换 194
11.1 插入数据 194
11.2 引入新列 197
11.3 引入新表 198
11.4 引入视图 200
11.5 更新数据 203
附录 UML数据建模表示法 206
词汇表 210
参考文献和推荐读物 214
重构和转换列表 217