我正在考虑我的项目的权限系统,但我无法决定如何组织我的权限系统。在简短的抽象形式中,我将我的问题描述为:
我应该为每个用户创建共享实体(行)并应用权限,还是创建单独的实体(行)副本?
我的情况:我有两个实体
Company
{
[PK]
Id,
Name,
Contacts,
OwnerUser
},
Contact
{
[PK]
Phone,
ContactPerson
}它们具有多对多关系。允许用户修改自己创建(拥有)的单位主体。
我的问题: Contact entity(row)可以在属于不同用户的公司之间共享,并且假设两个用户都想将Contact.ContactPerson编辑为不同的值(例如,一个用户声称电话号码属于John,而另一个用户声称它是Tom的号码),如果我为每个公司(也就是用户)创建单独的联系人副本,则可以解决这种情况,但是我的业务规则不允许具有相同电话号码的重复联系人,并且除了电话号码之外,还必须共享(根据我的业务规则)其他联系人属性。
如何解决这种情况?
发布于 2011-01-12 14:22:12
最后,您必须创建一个策略。您可以将策略应用于发生冲突时的合并(如在版本控制中),也可以应用严格的策略,只有联系人的创建者可以编辑,或者只要联系人在她的公司,任何人都可以编辑联系人,或者使用评级(积分)来获得编辑权限的复杂策略,如stackoverflow :P。
而这个问题只能通过直接询问客户,他想要应用什么策略来解决。
发布于 2011-01-11 14:45:17
听起来你的业务逻辑在那里有冲突。一方面,您说两个用户可能不同意一个号码是谁的电话号码(如果两个人共用一张桌子/电话,这是完全有效的)。另一方面,您说您的业务逻辑不允许重复的电话号码。
为什么你的逻辑坚持电话号码是唯一的?在我看来,你已经创建了一个不能保证是唯一的PK,因此并不适合。
https://stackoverflow.com/questions/4654836
复制相似问题