我们正在设计一个多租户系统,我们想使用共享数据库、共享模式、共享数据表。
因为我们的租户可能是州(美国各州)、县或个人组织。下图描述了一个高级视图。(其中 O1,O2.. 是组织,U1,U2.. 是用户)
- 一个州下可以有许多组织。
- 一个组织将在其下拥有一个或多个用户。
- 一个组织下可以有一个或多个组织(子组织)。
- 一个组织的用户不能属于另一个组织。
- 每个租户都有自己的管理员,可以对组织/用户执行 CRUD (例如创建组织并将用户分配给组织)
- 超级管理员(来自我们公司)将能够激活/停用任何租户。
下面是一个高级ER图。由于表在租户之间共享,因此我们在所有表中都有一个tenant_id列。
由于一个组织可以嵌套在一个组织下,我正在考虑有一个带有Discriminator Column的自引用表。
我正在寻找优化/纠正此 ER 图的输入,在任何人开始对 ER 大喊大叫之前,我想提一下,我是一名程序员,而不是数据库专家 :)。