受困于不再反映您的数据模型的遗留数据库模式是每个开发人员的噩梦。然而,在所有关于重构代码以实现可维护性的讨论中,我并没有听到太多关于重构过时的数据库模式的消息。
关于如何在不破坏所有依赖于旧模式的代码的情况下过渡到更好的模式的技巧有哪些?我将提出一个特定的问题,我必须说明我的观点,但请随时就已证明有用的其他技术提供建议——这些技术也可能会派上用场。
我的例子:
我公司接收和运送产品。现在产品收据和产品发货有一些非常不同的数据与之关联,因此最初的数据库设计者为收据和发货创建了一个单独的表。
在我使用这个系统的一年中,我意识到当前的模式没有一点意义。毕竟收据和发货基本上都是一种交易,它们都涉及更改产品的数量,本质上只是+/-符号不同。事实上,我们经常需要找出产品在一段时间内的变化总量,而这个设计对于这个问题是非常棘手的。
显然,适当的设计是有一个单一的 Transactions 表,其中 Id 是 ReceiptInfo 或 ShipmentInfo 表的外键。不幸的是,错误的模式已经投入生产多年,并且有数百个存储过程和数千行代码。那么我怎样才能将架构转换为正常工作呢?