如何使用用户和组的约束来建模用户/组成员身份必须是同一个组织?

时间:2013-08-30 13:03:45

标签: sql database-design

我有一些表定义组织,用户和组的表:
- 组织(身份证,姓名)
- 用户(id,name,Organization)
- 组(id,name,Organization)

在尝试添加具有用户和组之间约束的GroupMembership表时,我感到难过:
- GroupMembership(id,User,Group)

我希望数据库强制GroupMembership表中的所有记录都具有User.Organization == Group.Organziation。从概念上讲,用户可以是其关联组织定义的任何/所有组的成员。

这有设计模式吗?

1 个答案:

答案 0 :(得分:2)

如果您不想使用过程逻辑强制执行此规则,则可以将organization添加到GroupUser的主键。这会将Organization传播到您的会员交叉表。这允许您使用声明性参照完整性来强制实施此限制。

就个人而言,我会考虑将DRI用于此特定规则。可以这样做,但解决方案的副作用可能比原来的问题更糟糕。