我目前正致力于一个项目,其最终目标是将遗留系统转换为真正的N层架构。项目的初始部分涉及将底层数据库转换为真正的关系设计。
底层数据库当前正在IBM iSeries上运行。这些表是使用DDS定义的,包含大量冗余数据,没有完整性检查和设计不良的密钥等。基本上将它们重构为完全标准化的设计是不可能的。
新表将从头开始设计。它们也将位于相同的iSeries上,但将使用DDL进行定义。这还将涉及在整个应用程序中重写任何插入或更新代码以使用新表。然而,有大量的遗留应用程序负责报告,显示等,此时不会重写,仍然会从原始表中读取。因此,我们需要将旧的旧表中的数据与新表数据保持同步。我想知道是否有人做过类似的事情或有任何建议吗?我目前正在考虑:
1)从新表A中插入,更新,删除的存储过程也将对匹配旧表B执行相同操作。在某些时候,需要修改存储过程以停止同步表B
2)在表A上放置触发器,同时修改表B.然后触发器将被删除......存储过程不需要更改,但这仍然适用于事务管理吗?
3)删除旧表B并将其重新创建为表A上的视图。不确定这是否可行,因为表B适用于键控访问,我相信视图不支持此操作?
有兴趣听听别人的想法吗?
干杯
答案 0 :(得分:2)
我赞成3号。我假设您将运行一些转换过程,该过程将从旧表B中获取现有数据并将其放入新表A(或者更可能是一组新表,因为它听起来像传统表B是非规范化的。)
如果负责报告,显示等的旧应用程序不需要进行任何更新,那么使用视图是理想的情况。我认为保留两个单独的数据副本(一个标准化,一个非规范化)将变得令人头疼,特别是当经理的TPS报告与他在新系统中输入的内容不匹配时。至少只有一个数据副本,您不必担心在两个地方执行数据修复。