接上一篇文章,《数据库重构探讨系列(1)》(见http://www.51testing.com/html/75/n-828475.html)。
4、数据库重构实例
“余额Balance”列实际上描述的是“账户Account”实体,而不是“顾客Customer”实体。
因此如图所示,需要把“余额Balance”列从“顾客Customer”表移出,加入到“账户Account”表中。
重构的迭代活动如下:
(1)验证数据库重构是否合适;
这个重构有意义吗?变更真的需要现在进行吗?值得这样去做吗?
(2)选择最合适的数据库重构技术;
真正需要重构的是“使用正式数据源”
(3)让原来的数据库Schema过时;
需要一个转换期,即“过时期”
(4)前测试、中测试和后测试;
要能够轻易验证数据库在变更之后仍能与应用一起工作,就有信心对数据库Schema进行变更,做到这一点的唯一途径就是采用测试驱动开发TDD的方式。
TDD方式中,编写一个测试,编写足够代码,通常是使用数据定义语言DDL,来完成该测试。继续以这种方式工作,直到数据库重构完全实现。
(4.1)测试数据库Schema;
数据库重构会影响数据库Schema,故需编写面向数据库的测试。可以从许多方面来检查数据库Schema:
● 存储过程和触发器
● 参照完整性RI
● 视图定义
● 缺省值
● 数据不变式
数据库测试工具:管理测试数据的工具DBUnit;测试存储过程的工具SQLUnit;还有针对数据测试的商业工具。