答案 0 :(得分:3)
我建议最终数据库重构(规范化)可能是有序的。您可以使用重构和使用视图来为遗留应用程序提供与数据库接口一致的接口。也就是说,例如,将employees表分解为employee_info,employee_contact_info,employee_assignments,然后为遗留应用程序提供名为employee的视图,该视图在这三个表之间进行连接(如果逻辑是,则可能是基于表的函数)更复杂)。这可能会让您继续使用完全基于ORM的解决方案,这是我更喜欢的解决方案,让您的遗留应用程序感到满意。我不会继续使用ORM / direct SQL的混合解决方案,尽管您可以通过提供一些实体类来扩充ORM,这些实体类提供相同数据的不同视图(例如,跨几个表的连接以进行只读显示)。
答案 1 :(得分:2)
“目前我们不能分解表格。由于端口的大小,遗留应用程序仍然需要存在多年,而且.NET代码不是in-3 -years-release类型的项目,但将在发布过程中分阶段进行。因此,遗留系统和.NET代码都需要使用相同的表。“
两个词:物化观点。
您有几种“正常化”的方法。
物化视图,a / k / a索引视图。这是源表的规范化克隆。
从旧表到新表的显式复制。 “Ick”你说。但是,请考虑您将逐步从旧应用程序中删除功能。这意味着您将在新的规范化表中使用某些功能,并且可以优雅地忽略旧表。
明确的双向同步。这很难,但并非不可能。您可以通过复制从旧表到正确设计的表进行规范化。您可以 - 作为临时解决方案 - 使用存储过程和触发器将事务克隆到旧表中。然后,您可以在转换过程中淘汰这些kludges。
你最幸福的是在两个绝对不同的模式中做到这一点。由于旧数据库可能没有设计良好的模式,因此新数据库将具有一个或多个命名模式,以便您可以对定义维护一些版本控制。
答案 2 :(得分:0)
虽然我没有使用过这种特殊的ORM,但在某些情况下,视图在提供较轻的对象以便在这些类型的数据库中显示和报告时非常有用。根据他们的文档,他们确实支持这样一个概念:XPView Concepts