我正在开发基于多租户 SaaS 的应用程序,并使用共享数据库在 TenantId 列的帮助下存储所有租户记录。
现在的问题是我有一些查找记录列表需要为所有租户共享。例如游戏列表。
游戏桌
Id
GameName
还有另一个表用于仅存储租户特定记录
租户游戏
Id
TenantId
GameName
基本需求是我想使用两个表数据并获取必要的详细信息(Game_Name),同时与另一个事务表(如 UserGames)连接。我怎样才能用这个设计来实现这个目标?这里的 Game_Name 可以从 Games Shared 表或 TenantSpecificGames 表中引用
是否有任何其他数据库设计允许我将公共主数据和租户主数据与 JOIN 混合?
基本要求是保留通用数据,并允许租户自定义(如果他们想要添加任何新项目)。
这就是我接下来要使用的设计。
Games
Id
GameName
IsTenantSpecific
SomeGameSpecificColumn
租户游戏
GameId
TenantId
SomeTenantSpecificColumn
AnotherTenantSpecificColumn
然后您可以在连接中查询该表:
...
FROM
Games
INNER JOIN UserGames ON
UserGames.GameId = Games.Id
LEFT JOIN TenantGames ON
TenantGames.GameId = Games.Id
WHERE
TenantGames.TenantId = @tenantId OR
(
TenantGames.TenantId IS NULL AND
IsTenantSpecific = 0
)
游戏特定字段可以放入游戏表中。可以将特定于租户的字段添加到 TenantGames 表中,如果不是特定于租户的自定义,这些字段将为 NULL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)