首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用大量引用重构大型SQL表

用大量引用重构大型SQL表
EN

Stack Overflow用户
提问于 2020-06-18 16:26:52
回答 1查看 129关注 0票数 0

我们为一个案例管理系统提供了一个数据库,该系统早就应该对几个核心表进行重构,以便根据这些列所涉及的业务区域将它们分开。

所有的关系将继续是1:1,我们只想避免EF模型必须引用这些巨大的表,因为有一种动力,能够部署系统的某些领域独立于其他领域,这是目前不可行的,因为数据库的结构。

表1有案例数据和415列,表2有个人数据和564列。

它们都有10个以上的复杂触发器,它们都由传统的Delphi前端、Winform项目和其他使用EF的.NET项目直接引用。由于这个原因,我一直试图想出一个解决方案,允许我独立于更新系统的所有前端来重构表。

我已经完成了一半的计划:

将视图创建为(从表1选择*)(使用SCHEMABINDING以确保定义保持不变)对引用该表的所有现有视图进行

  • 更改定义,查看从步骤1到表1的将新视图重命名为Table 1

  • Create视图的

  • 更改定义,将所有现有视图的更改定义指向Table 1

  • Create而不是多表的新view

  • Refactor Table_1_legacy

  • Alter视图上的触发器,查看新的重构表

  • Alter而不是更新/插入到新重构表的触发器,更改所有前端以删除对表1的引用,并以对新的、较小的重构表的引用替换.

我的绊脚石是原始表上已经存在的复杂触发器,这些触发器具有包括联接在内的更新,这些更新不再与带有替代触发器的视图兼容。如果我禁用这些,我的概念证明是有效的,据我所知,我们的Delphi和EF都与新视图无缝工作。

我的问题是:我这样做是完全走错了路,还是值得坚持重写/删除那些麻烦的现有触发器?

当有那么多独立的前端代码直接引用数据库结构时,是否存在重构数据库的已知策略?我看不出有一种方法可以引入数据层来从数据库中抽象,而不会意外地丢失位置。

EN

回答 1

Stack Overflow用户

发布于 2020-06-18 18:14:43

我不会打扰现有的桌子。相反,创建新表(按需要)并将前端更改为指向新表。然后将数据迁移到新的表中。这将是一个顺利的过程。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62454779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档