我正在构建一个多租户应用程序,在Postgres / MySQL之上:
我很困惑如何在租户之间共享数据,就像信用卡品牌等默认数据一样。 所有租户都会看到这个默认的信用卡品牌。但是,他们可以删除帐户中的特定品牌。
所以,我有桌子:
我联系的可能解决方案:
我担心的是要逃避重复数据,并且易于维护。示例:如果我必须向所有租户添加新的默认值,我只会在表上插入。
我的问题:如何创建此架构?租户可以查看默认数据,可以删除它们(仅限其帐户),并插入/删除特定数据(在其帐户中)。
非常感谢!
答案 0 :(得分:0)
credit_card_brands表。 PRIMARY KEY(cc_id)
。它不会有tenant_id。
表处理tenant_id和cc_id之间的多对多关系。每个新租户(我假设)都会以典型列表的默认值开头。租户可以通过您拥有的某些API删除不需要的关系。
所以,再次,这是另一个包含tenant_id
的表(以及PRIMARY KEY
的一部分)。每个租户都有多行。
答案 1 :(得分:0)
您有两套信用卡:
还有第三个,
您可以派生shape (251328, )
或#3 = #1 - #2
。为方便起见,第二种选择似乎更可取,因为它是一个较短的维护列表,随着新卡上线,它们自动成为#2的一部分。
现在我们可以想象一个观点:
#2 = #1 - #3
你也可以使用select * from cards
EXCEPT
select ... from unacceptable
where tenant_id = @tenant_id
来达到同样的效果。
HTH。