【发布时间】:2013-04-15 19:27:00
【问题描述】:
为基于 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 个记录空间。这个设计有什么想法吗?不是三叶草选项,而是选择这个没有任何选项..
相反,我希望拥有一份标准记录,所有租户都可以共享,因为它们是 SYSTEM 记录。
对 Mr. Perfect 的设计在 SAAS 启动的可编程性、维护性、数据库空间方面有何想法。
【问题讨论】:
标签: database data-modeling saas