首先,我想说这个问题非常难,你可能找不到完整的答案。
最近我一直在维护一个遗留的业务应用程序,它可能很快就会演变为一个新版本。维护包括解决错误、优化旧代码和新功能,这些功能有时无法轻松适应当前的应用程序架构。我们的应用程序的主要问题是它的文档记录很差,没有任何更改的痕迹,而且我们基本上是从事这个项目的第 5 个轮换团队(我们对它还很陌生)。
将外部细节放在一边(代码、层等),我将尝试解释一下我们当前如何管理数据库更改。
目前,我们有两条规则要遵循:
首先,旧代码(sql、存储过程、函数等)是否按原样工作并且应该保持原样,除非有这种情况(错误或功能更改),否则不要修改太多,当然,尝试记录它尽可能多地(尤其是诸如“WTF!,他为什么要那样做而不是那样做?”之类的问题)。
其次,每一个新特性的出现都应该使用目前已知的最佳实践,并且尽可能少地修改旧的数据库结构。这将引入一些数据库重构选项,例如在旧结构之上使用可编辑视图,为现有的扩展表引入新的扩展表,规范化结构并通过视图提供旧结构等。
此外,我们正在尝试编写尽可能多的单元测试,前提是业务分析师并肩工作并记录业务规则。
数据库重构是一个非常复杂的领域,需要简短回答。有很多书可以回答你所有的问题,其中一本 http://databaserefactoring.com/被指出在其中一个答案中。
稍后编辑:希望第二条规则也能回答对重大更改的处理。