2011-04-20 47 views
0

我们开发的服务是为每个客户端用户可以进行预约。 是否有战略 - 数据库中的表(MS SQL SERVER)为每个客户端将是正确的?每个客户端在数据库中的表格

我们认为这样的策略可以简化并排除复杂的表锁。

回答

0

听起来你正在尝试构建一个多租户应用程序。我不会为每个客户推荐一张桌子。相反,我会建议两种解决方案之一:

  1. 所有客户(承租人)的数据集成到同一个表和标识分离。换句话说,每个顶级表都会有一个名为“ClientId”或“TenantId”的外键,用于识别和分离每个客户的数据。这种方法的缺点是数据库的速度要快得多,大型数据库管理较小的数据库会更加复杂。另外,开发人员构建的查询可能会忘记在ClientId上进行过滤,而且一个客户端会看到另一个客户端的数据。

  2. 每个客户端一个数据库。一个更极端的解决方案,但是如果客户将托管他们自己的应用程序,每个客户数据的大小差异很大,或者客户需要绝对保证数据分离,那么这个解决方案就很有用。

+0

我认为与外键的情况是不适用的,因为从一个表中有限制高达256。另一方面,我们应该为每个客户存储一张包含数据的表格。因为在并行工作的情况下,许多用户(100-1000)可以访问一个表;如果每个客户端有一个表,它将是1-10个用户。 – Alexandr 2011-04-21 08:45:21

+0

@Alexandr - 咦?每个顶级表中都会有*一个*外键列来引用一个客户表。 – Thomas 2011-04-21 16:19:02

+0

@Alexandr - 我绝对不建议为每个客户添加一个FK列。这是没有意义的,并且不是标准化的,也是不必要的。相反,每个顶级表都将包含* all *客户端的数据,您可以将一个客户端的数据与另一个客户端的数据通过FK的单个列区分为客户端表。 – Thomas 2011-04-21 16:26:08

相关问题