首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是数据库设计还是授权/权限责任

问这是数据库设计还是授权/权限责任
EN

Stack Overflow用户
提问于 2011-01-11 14:28:10
回答 2查看 334关注 0票数 1

我正在考虑我的项目的权限系统,但我无法决定如何组织我的权限系统。在简短的抽象形式中,我将我的问题描述为:

我应该为每个用户创建共享实体(行)并应用权限,还是创建单独的实体(行)副本?

我的情况:我有两个实体

代码语言:javascript
复制
Company
{
   [PK]
   Id,
   Name, 
   Contacts, 
   OwnerUser
}, 
Contact
{
   [PK]
   Phone,
   ContactPerson
}

它们具有多对多关系。允许用户修改自己创建(拥有)的单位主体。

我的问题: Contact entity(row)可以在属于不同用户的公司之间共享,并且假设两个用户都想将Contact.ContactPerson编辑为不同的值(例如,一个用户声称电话号码属于John,而另一个用户声称它是Tom的号码),如果我为每个公司(也就是用户)创建单独的联系人副本,则可以解决这种情况,但是我的业务规则不允许具有相同电话号码的重复联系人,并且除了电话号码之外,还必须共享(根据我的业务规则)其他联系人属性。

如何解决这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-12 14:22:12

最后,您必须创建一个策略。您可以将策略应用于发生冲突时的合并(如在版本控制中),也可以应用严格的策略,只有联系人的创建者可以编辑,或者只要联系人在她的公司,任何人都可以编辑联系人,或者使用评级(积分)来获得编辑权限的复杂策略,如stackoverflow :P。

而这个问题只能通过直接询问客户,他想要应用什么策略来解决。

票数 1
EN

Stack Overflow用户

发布于 2011-01-11 14:45:17

听起来你的业务逻辑在那里有冲突。一方面,您说两个用户可能不同意一个号码是谁的电话号码(如果两个人共用一张桌子/电话,这是完全有效的)。另一方面,您说您的业务逻辑不允许重复的电话号码。

为什么你的逻辑坚持电话号码是唯一的?在我看来,你已经创建了一个不能保证是唯一的PK,因此并不适合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4654836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档