合并两个数据库应用程序;我应该在什么水平上工作?

时间:2013-08-05 14:01:34

标签: asp.net-mvc nhibernate database-schema

我已经做了相当多的搜索,但我发现的大部分内容都与使用相同模式合并表格有关..如果这个问题太开放了,请告诉我,我会尝试提供更多细节。

我有两个独立的应用程序,每个应用程序都建立在相同的通用结构上:

  • ASP.NET MVC应用程序;
  • 基于NHibernate构建的对象模型;
  • 基于存储库的DAL;
  • MSSQL数据库。

数据库架构和对象模型不同,但存在一些业务级别的重叠;例如,两个应用程序都有一个Customer对象,但结构不同;有一些数据字段存在于一个而不是另一个数据字段中,并且主键以不同方式完成(一个具有自动递增数字字段,另一个具有GUID)。可能有十个表或类,如Customer,在每个应用程序中都有不同的实现。

我们正在合并这两个应用程序;最终目标是让应用程序1成为应用程序2中的区域,两个应用程序使用同一组客户等。

我的问题是,处理十个“共享”数据对象的最佳方法是什么?

  1. 在数据库/对象模型级别合并它们?我们可以将每个数据库中的Customer表合并到一个表中,组合对象模型类,并在需要时逐步进入视图模型。

  2. 尝试管理两组对象并同步它们?可以通过数据库中的触发器,也可以通过写入DAL中的两组表来实现。

  3. 还有别的吗?

  4. 这个(对我而言)是一个相当大的项目,有几百个表,以及许多很多控制器方法和视图。零单元测试,没有文档可言,所以它有点令人生畏;我倾向于第一种选择,但我觉得我所做的任何事情都会破坏事物。建议?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我的第一个想法是你应该保持简单并选择第二个选项:拥有2个对象模型并通过DAL“同步”它们(我不会使用触发器)。

但这意味着您将为这10个实体中的每个实体提供2组表,从维护角度来看这看起来很糟糕,但主要是因为您在数据库中会有重复数据。拥有2个数据库并不重要,数据在这两个数据库上仍然是重复的,如果将2 dbs合并为1,最好是花费在编写DAL代码以进行“同步”的时间。更模块化的解决方案。

我的第二个想法是你应该“合并”10个公共表并将它们放在一个数据库中。这将消除数据和同步DAL代码的重复。 (这样,对于这10个实体,您也将有1次调用db而不是2次。)

我的第三个想法是,当你在它时,将2 dbs合并为1.但是根据应用程序的复杂性,这更容易说完成了。

总结一下,我肯定会将10个公共表合并为1个db。您仍然可以在不同的应用程序中部分使用它们。在DAL中为这10个实体的CRUD操作创建抽象,并从特定应用程序调用特定实现。