我正在处理的应用程序存在遗留问题,其中2个表创建了ADULT和CHILD,其中oracle 11g dB。 这导致了许多相关的表,它们同时具有ADULT和CHILD没有应用FK的字段。 这种错误已经出现,可怜的发展已经将关系映射到了错误的领域。
我们的技术架构师计划将ADULT和CHILD表合并到一个新的ADULT_CHILD表中,并创建物化视图来代替表。计划是创建一个新的id值并替换所有关联表中的I'值,这样即使plsql / apex代码映射到错误的字段,数据映射仍然是正确的。
这个解决方案背后的原因并不是要求我们更改任何其他代码。
我认为这是一个软糖,但我更像是一个Java / .NET OO。
我可以用什么论据来说服建筑师这是错误的而不是真正的解决方案。我担心我们正在创建一个更复杂的解决方案,性能将成为一个问题。
感谢您的任何指示
答案 0 :(得分:1)
虽然它可能是一个必要的解决方案,但也可能会产生新的问题。如果您确实需要始终使用最新的MV,则需要进行提交刷新,这反过来会使所有更新顺序进行。这意味着写入它的所有进程都会等待更新表提交的进程。不是,表,而不是行。
因此,用实际负载测试方法是明智的。为什么它必须成为一张桌子?他们可以不分开,添加一个FK?如果您需要对更新进行更多控制,请对其进行重命名,并使用替代触发器放置视图。