2015-10-19 38 views
0

我有一个数据库设计问题,我希望得到一些意见。数据库设计支持几种不同的应用程序

环境是MS SQL Server中,使用ASP.NET WEB API(和实体框架尽可能)

的概念是,有一些将利用一个API几种不同的应用构建的API。每个应用程序在功能和数据上都有很大不同。但是,在每个应用程序中都有几个不同的(查找)数据。当然,一个解决方案是拥有一个拥有许多表格的巨大数据库,这当然可以保持参照完整性,但是由于每个应用程序的目的不同,我只是觉得“错”了。

另一种选择是设置几个不同的DB。一个用于每个应用程序的特定数据,然后是一个用于共享(查找)数据的数据库。这当然会把参照完整性扔出窗外。这可能并不重要,这只是我身上的“老家伙”。

我意识到“存储数据的位置”对于客户端应用程序来说确实不是问题,因为它们将利用API。但是API将关注数据存储。在这一点上,我试图就如何最好地构建数据库以符合RDBMS系统的现代最佳实践提出一些意见。

感谢您的任何和所有建议。

-c

回答

0

(太大评论):

如果你定义了每个应用程序之间的逻辑边界(在实践中,不是理论),你可能会发现你已经回答了你自己的问题。参照完整性仅影响相关表格,因此如果每个应用程序数据不同,则不应该成为问题。

如果为每个应用程序使用EF上下文并且共享查找的上下文是一种方法。 Julie Lerman在此MSDN article中解释了EF有界上下文(不要使用一个庞大的EF上下文,将其分解),但最终实用规范化的关系数据库应该可以很好地满足您的要求。

+0

是的大部分数据对每个应用程序都是唯一的。但是有几条信息是共享的。例如,客户表格代表我们的客户之一由每个应用及其功能提供服务。一个应用程序是一个采购应用程序,另一个是人事应用程序。我想避免在每个数据库中都有一个Customer表。但我还想避免一个拥有200个表的巨大数据库(因为我们将其他应用程序联机)。所以通用数据库中的Customer表格更有意义。但不是如果这是一个糟糕的设计决定。谢谢 – cra

+0

我经常有数百个数据库的表,因为我仍然认为它比管理多个数据库(它肯定更便宜)更简单。为了得到更具体的建议,我认为你需要提供预期数量的应用程序,每个数据库将有多大,你如何托管数据库,恢复计划等。这恐怕超出了我的技能范围 - 但可能有帮助你会得到你正在寻找的答案 –

相关问题