小编Rey*_*ldi的帖子

多租户 SQL Server 数据库中的复合主键

我正在使用 ASP Web API、实体框架和 SQL Server/Azure 数据库构建多租户应用程序(单一数据库、单一架构)。此应用程序将被 1000-5000 名客户使用。所有的表都会有TenantId(Guid / UNIQUEIDENTIFIER) 字段。现在,我使用单字段主键,即 Id (Guid)。但是通过仅使用 Id 字段,我必须检查用户提供的数据是否来自/用于正确的租户。例如,我有一个SalesOrder包含CustomerId字段的表。每次用户发布/更新销售订单时,我都必须检查它CustomerId是否来自同一个租户。情况变得更糟,因为每个租户可能有多个网点。然后我必须检查TenantIdOutletId。这真的是一个维护噩梦,对性能不利。

我想添加TenantId主键沿Id。也可能添加OutletId。所以SalesOrder表中的主键将是:IdTenantId、 和OutletId。这种方法的缺点是什么?使用复合键会严重影响性能吗?复合键顺序重要吗?我的问题有更好的解决方案吗?

index sql-server physical-design multi-tenant design-pattern

20
推荐指数
1
解决办法
5077
查看次数