为基于 SAAS 的模型的标准和用户特定记录设计数据模型。
在我的基于 SAAS 的应用程序中,我有用户及其关联的(一对一)角色。租户可以创建自己的特定于其公司的角色并分配给他们的用户。并且 SYSTEM 提供了一些标准角色供租户使用。SYSTEM 定义的标准角色对所有租户都是通用的。
我的 ROLE 和 COMPANY 表如下:
表:公司
COMPANY_ID | COMPANY_NAME
100 | Acme Inc.
101 | E Technologies.
表:角色
ROLE_ID | COMPANY_ID | ROLE_NAME | IS_STANDARD_ROLE
1 | | ADMINISTRATOR |Yes
2 | |MANAGER |Yes
3 | 100 |MyAdmin |No
4 | 100 |MySpecialist |No
5 | 101 |Supervisor |No
这里我有 ROLE.COMPANY_ID 引用 COMPANY.COMPANY_ID
我试图找出在同一个表中同时容纳标准角色和用户定义角色的最佳方法,并让带有注释的 Hibernate 3.0 可以轻松提取。
这是我现有的替代方案。
我可以在上面的同一个表中同时拥有标准和客户定义的角色,并将 ROLE.COMPANY_ID 字段留空(如果 mysql 允许)作为标准。但挑战是 hibernate3.0 拉 ROLE.COMPANY_ID=100 或 ROLE.COMPANY_ID=
我可以在 company 表中定义一个名为 SYSTEM 的虚拟公司,并将所有标准/SYSTEM 记录引用到名为 SYSTEM 的公司。同样的挑战是在hinernate 3.0 中使用或使用aootations 提取记录。不确定,如何在没有自定义 HQL 的情况下使用注释在休眠 3.0 上执行此 OR 子句?有些方法,团队不喜欢数据库中的虚拟公司记录的想法。
我可以为每个租户创建标准记录的副本并将它们分配给他们自己的 company_id。但是这里的问题是,我将为每个租户至少有 80 条标准记录,如果我预计有 1000 个免费试用租户,我最终将分配 80,000 条记录空间。这个设计有什么想法吗?不是三叶草选项,但选择这个没有任何选项。
相反,我更愿意拥有一份标准记录,所有租户都可以共享,因为它们是系统记录。
对完美先生在可编程性、维护性、用于 SAAS 启动的数据库空间方面的设计有何想法?