这是BestPractice问题(或者至少我希望是这样)。一对多或多对多?
编辑:这个例子只是为了澄清问题。它可能是Person,Office,ContactInformation。
问题:
有3个表:
RightsSet
(
ID,
CanView,
CanEdit,
ObjectTypeID,
ObjectID
)
User
(
ID,
Username,
Password,
ProfileID
)
ProfileID
(
ID,
Name,
Description
)
用户和资料可以有多个RightsSets。 RightsSet必须属于1(且仅有1个)用户或配置文件。
如何实现这一目标? 我应该创建附加表
UserRightsSets
(
UserID,
RightsSetID
)
ProfileRightsSets
(
ProfileID,
RightsSetID
)
的问题是这样的: 如何确保当ProfileRightsSet被删除,RightsSet也被删除(因为RightsSet属于形象,并单独配置文件)? 如何确保RightsSet仅属于配置文件而不属于配置文件和用户?
或者,我可以修改RightsSet表
RightsSet
(
ID,
CanView,
CanEdit,
ObjectTypeID,
ObjectID,
UserID,
ProfileID
)
的问题,这...那好吧,如果多个对象共享RightsSet? (好吧,我想不出任何例子,但我敢肯定有有效的场景中2种以上的实体份额一种实体。)
整个事情似乎相当糟糕的想法 - 为什么不做大多数权限系统做什么,并使用角色可以分配给任何数量的用户? –
嗯......这真的不是关于用户和配置文件的问题......它是关于3个实体之间的关系,其中2个实体可以具有3个倍数,但是3个必须正好属于1. –