2

我正在处理的应用程序有一个遗留问题,其中在 oracle 11g dB 中创建了 2 个表 ADULT 和 CHILD。这导致了许多相关的表都具有 ADULT 和 CHILD 的字段,没有应用 FK。在不良开发将关系映射到错误字段的情况下,就会出现错误。

我们的技术架构师计划将 ADULT 和 CHILD 表合并到一个新的 ADULT_CHILD 表中,并创建物化视图来代替这些表。该计划还创建一个新的 id 值并替换所有关联表中的 Id 值,因此即使 plsql/apex 代码映射到错误的字段,数据映射仍然是正确的。

该解决方案背后的原因是它不需要我们更改任何其他代码。

我的观点是这是一个软糖,但我更像是一个 Java/.NET OO。

我可以用什么论据来说服架构师这是错误的,而不是真正的解决方案。我担心我们正在创建一个更复杂的解决方案,性能将是一个问题。

感谢您的任何指点

4

1 回答 1

1

虽然它可能是一个需要的解决方案,但它也可能会产生新的问题。如果您确实需要始终使用最新的 MV,则需要提交刷新,这反过来又会使所有更新按顺序进行。这意味着所有写入它的进程都会排队等待更新表的进程提交。不是,表,不是行。

因此,谨慎的做法是使用实​​际负载测试该方法。为什么一定要变成单表?他们不能保持分开,添加一个FK吗?如果您需要对更新进行更多控制,请重命名它们并使用而不是触发器放置视图。

于 2012-11-13T21:50:58.533 回答