每个单独模块的唯一数据库或所有模块的一个数据库

时间:2018-04-11 14:50:48

标签: sql-server database database-design

我最近遇到this,其数据库应该有几个未连接的表,在同一个数据库中提供不同的功能。

让我提出一个假设的情况,帮助您更好地理解和回答这个问题。您正在建立一个需要Image数据库,RegisteredUser数据库和Shop数据库的网站。

以上链接的示例将它们全部存储在自己的小环境中的同一数据库中。换句话说,所有Image数据库相关数据都存储在与所有RegisteredUser数据库和Shop数据库相关数据相同的数据库中。 (所有表格的一个数据库 - 没有连接到图像表等的商店表格。)

所以我的问题是:

  • 首先,这是可行的吗?

  • 为每种需求提供多个不同的数据库会更好吗?

  • 我假设使用未连接的表创建数据库是不好的做法。这是真的吗?

  • 这两个选项之间的性能差异是什么?

编辑:我在ASP.NET MVC Web应用程序中使用Entity Framework。我的服务器管理软件是Microsoft SQL Server 2014 Management Studio。

Here is a diagram of what I'm trying to say

因此在图1中,三个表代表shop数据库,两个表代表user数据库。

在图2中,左边的第一个数据库代表shop数据库,右边的第二个数据库代表user数据库。

1 个答案:

答案 0 :(得分:0)

如果没有更多相关信息,我想告诉您为什么许多数据库对性能不利。

  • 我在很久以前遇到过这个问题,我尝试了多个数据库的性能,而不是一个数据库 在代码中,当您想要创建数据库时,您应该创建一个派生自DbContext上下文类。 所以你应该创建许多类,它将使用更多的存储。

  • 在第二种情况下,您希望访问数据库以进行插入,更新等。 对于每个数据库,您应该与数据库context类实例的对象建立连接,这样您就可以想象当应用程序想要打开与context的连接时将花费多少时间。

但所有这些原因都取决于您的应用程序,例如假设您拥有一个拥有1m用户的社交网络,您想创建1m数据库吗?有100万context class?!

以简单的方式管理哪一个:

  1. DATABASE包含 user_post user_pictures user_locations 的表,另一个用于社交网络上的每个用户(每个用户都有一个此数据库) )
  2. 为图片,帖子,userInfo等设置DATABASE,每个用户都有一个此表格
  3. 只有一个DATABASE与图片等等,每个用户都有一行
  4. 总结:

    • 这不可能
    • 正如我所说的那样,每个标题都有一些数据库

    编辑,据我所知,您同意第二种方式(拥有照片,商店,...数据库)