我与我们的 DBA 讨论了如何更改数据库模式。他的观点是,所有的变化都必须是可逆的。例如:
- 过时的表/列一旦变得多余就不应被删除。相反,它们应该至少保留几个版本。
- 不要重命名表/列,而是创建一个新表/列并将内容从旧的复制到新的
- 当需要修改名为“foo”的存储过程/触发器时,保留原始存储过程/触发器并创建一个名为“foo2”的新存储过程/触发器。当然,这意味着必须更新对存储的 proc/trigger 的所有引用以引用新名称
这种方法的好处是,如果(例如)发布失败并且需要恢复到应用程序的以前版本,数据库可以切换到以前的版本。如果只是删除表和列,这是不可能的。
我对这种方法的智慧有自己的看法,但我暂时将它们保密,以免引起反应的偏见。如果有什么不同,环境是一家开发社交网络应用程序的初创公司。