4、数据库重构实例

  “余额Balance”列实际上描述的是“账户Account”实体,而不是“顾客Customer”实体。

  因此如图所示,需要把“余额Balance”列从“顾客Customer”表移出,加入到“账户Account”表中。

  重构的迭代活动如下:

  (1)验证数据库重构是否合适;

  这个重构有意义吗?变更真的需要现在进行吗?值得这样去做吗?

  (2)选择合适的数据库重构技术;

  真正需要重构的是“使用正式数据源”

  (3)让原来的数据库Schema过时;

  需要一个转换期,即“过时期”

  (4)前测试、中测试和后测试;

  要能够轻易验证数据库在变更之后仍能与应用一起工作,有信心对数据库Schema进行变更,做到这一点的途径是采用测试驱动开发TDD的方式。

  TDD方式中,编写一个测试,编写足够代码,通常是使用数据定义语言DDL,来完成该测试。继续以这种方式工作,直到数据库重构完全实现。

  (4.1)测试数据库Schema;

  数据库重构会影响数据库Schema,故需编写面向数据库的测试。可以从许多方面来检查数据库Schema:

  ● 存储过程和触发器

  ● 参照完整性RI

  ● 视图定义

  ● 缺省值

  ● 数据不变式

  数据库测试工具:管理测试数据的工具DBUnit;测试存储过程的工具SQLUnit;还有针对数据测试的商业工具。