我有一个数据库设计问题,我希望得到一些意见。
环境是MS SQL Server,使用ASP.NET WEB API构建API(尽可能使用实体框架)
这个概念是有几个不同的应用程序将利用API。每个应用程序的功能和数据都大不相同。但是,每个应用程序中都有几个不同的(查找)数据。当然,一种解决方案是拥有一个具有许多表的巨大数据库,这当然可以保持参照完整性,但只是感觉到了#34;我错了,因为每个应用程序的目的都不同。
另一种选择是设置几个不同的DB。一个用于每个应用程序的特定数据,然后是用于共享(查找)数据的数据库。这当然会将引用完整性抛到窗外。这可能并不重要,而且那只是老人"在我身上。
我意识到"数据存储在哪里"对于客户端应用程序来说真的不是问题,因为他们将利用API。但是API将关注数据存储。在这一点上,我试图就如何最好地构建数据库以符合RDBMS系统的现代最佳实践获得一些意见。
感谢您提出的所有建议。
-c
答案 0 :(得分:0)
(评论太大了):
如果您定义每个应用程序之间的逻辑边界(在实践中,而不是理论上),您可能会发现您已经回答了自己的问题。参照完整性仅影响相关表,因此如果每个应用程序数据不同,那么这应该不是问题。
如果为每个应用程序使用EF上下文,则共享查找的上下文是一种方法。 Julie Lerman在这个MSDN article中解释了EF Bounded Contexts(不要使用一个大规模的EF上下文,将其分解),但最终一个实用的规范化关系数据库应该可以满足您的要求。