【发布时间】:2016-07-12 21:25:43
【问题描述】:
我正在 Postgres/MySQL 之上构建一个多租户应用程序:
- 单数据库;
- 单一架构;
- 在每个表上使用 tentant_id。
我很困惑如何让租户之间共享数据,例如信用卡品牌等默认数据。 所有租户都会看到这个默认的信用卡品牌。但是,他们可以删除其帐户中的特定品牌。
所以,我有桌子:
- 租户
- credit_card_brands
我提出的可能解决方案:
- credit_card_brands的默认值可以是tenant_id = NULL,但是如何删除tenant? (使用tenant_excludes 字段?)
- 创建另一个表(数据透视表),tenant_credit_card_brand 与它的关系
我担心的是会因为重复数据而逃跑,并且易于维护。示例:如果我必须为所有租户添加一个新的默认值,我只插入一个表。
我的问题:如何创建这个架构?租户可以查看默认数据,可以删除它们(仅在他们的帐户中),以及插入/删除特定数据(在他们的帐户中)。
非常感谢!
【问题讨论】:
-
这很容易,但现在模式太模糊了。因此,一个人所能做的就是高谈阔论,这有多大帮助?
标签: mysql database postgresql database-design multi-tenant