为基于SAAS的模型设计标准和用户专用记录的数据模型.
在基于SAAS的应用程序中,我有用户及其相关的(一对一)角色。租户可以创建自己的角色,特定于他们的公司和分配给他们的用户。该系统为租户提供了一定的标准角色。系统定义的标准角色对所有租户都是通用的。
我的角色和公司表如下:
表:公司
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可以在不太复杂的情况下拉动。
以下是我正在准备的替代方案。
相反,我更希望有一份标准记录的副本,所有租户都可以共享这些记录,因为它们是系统记录。
从可编程性、维护性、数据库空间等方面对完美先生的设计有何想法?
发布于 2014-03-29 14:50:32
我见过几个选择。
我喜欢有两个表,一个用于标准角色,一个用于客户定义的角色。这是很微妙的,但它们本质上是两个不同的实体:一个是所有租户共有的角色,另一个是租户自定义角色。它们可能最终会在属性和/或关系上有所不同。
另一种方法是在一个表中整理它们,就像在前两个建议中一样,这两个建议本质上是相同的解决方案。我不喜欢这样做的原因是,您重载了COMPANY_ID的定义,您几乎总是会后悔过度加载列定义。
无论哪种方法,我都会使用以下方法之一进行选择:
1)让Hibernate调用将这两个集合结合在一起的存储过程。
2)打两次电话,并在您的集合中集合。至少,您会缓存标准角色,因为它们是不稳定的。因此,这不会增加性能的影响。
发布于 2014-04-02 13:36:21
您可以向数据模型中添加一个角色类型实体,该实体对角色中的角色进行分类。我认为,这比在公司ID中使用空白要好得多。它还允许您构建一个角色层次结构(如果需要)--只需添加一个父角色属性和一个递归关系即可。
实体:公司(COMPANY_ID,NAME)角色(ROLE_ID,ROLE_TYPE_ID,COMPANY_ID,NAME) ROLE_TYPE (ROLE_TYPE_ID,PARENT_ROLE_TYPE_ID),NAME)
关系:公司对角色是1:M,ROLE_TYPE到角色是1:M,ROLE_TYPE到ROLE_TYPE是1:M
https://stackoverflow.com/questions/16154826
复制相似问题