我们为一个案例管理系统提供了一个数据库,该系统早就应该对几个核心表进行重构,以便根据这些列所涉及的业务区域将它们分开。
所有的关系将继续是1:1,我们只想避免EF模型必须引用这些巨大的表,因为有一种动力,能够部署系统的某些领域独立于其他领域,这是目前不可行的,因为数据库的结构。
表1有案例数据和415列,表2有个人数据和564列。
它们都有10个以上的复杂触发器,它们都由传统的Delphi前端、Winform项目和其他使用EF的.NET项目直接引用。由于这个原因,我一直试图想出一个解决方案,允许我独立于更新系统的所有前端来重构表。
我已经完成了一半的计划:
将视图创建为(从表1选择*)(使用SCHEMABINDING以确保定义保持不变)对引用该表的所有现有视图进行
我的绊脚石是原始表上已经存在的复杂触发器,这些触发器具有包括联接在内的更新,这些更新不再与带有替代触发器的视图兼容。如果我禁用这些,我的概念证明是有效的,据我所知,我们的Delphi和EF都与新视图无缝工作。
我的问题是:我这样做是完全走错了路,还是值得坚持重写/删除那些麻烦的现有触发器?
当有那么多独立的前端代码直接引用数据库结构时,是否存在重构数据库的已知策略?我看不出有一种方法可以引入数据层来从数据库中抽象,而不会意外地丢失位置。
发布于 2020-06-18 18:14:43
我不会打扰现有的桌子。相反,创建新表(按需要)并将前端更改为指向新表。然后将数据迁移到新的表中。这将是一个顺利的过程。
https://stackoverflow.com/questions/62454779
复制相似问题