2013-08-30 49 views
0

我有一個定義的組織,用戶和組的幾個表:
- 組織(ID,姓名)
- 用戶(ID,姓名,組織)
- 集團(ID,姓名,組織)
如何用用戶和組的限制來建模用戶/組成員必須是同一組織?

我難倒嘗試添加GroupMembership表用戶和組之間的約束時:
- GroupMembership(ID,用戶,組)

我想對數據庫執行,在GroupMembership表中的所有記錄有User.Organization == Group.Organziation。從概念上講,用戶可以是由其相關組織定義的任何/所有組的成員。

有沒有這樣的設計模式?

+1

看到這個問題:[多對多和弱實體](http://dba.stackexchange.com/questions/34040/many-to-many-and-weak-entities/34050#34050) –

回答

2

如果您不想通過程序邏輯強制執行此規則,則可以將organization添加到主關鍵字GroupUser。這會將Organization傳播到您的會員交叉表。這使您可以使用聲明性參照完整性來施加此限制。

就我個人而言,我會考慮在這個特定規則中使用DRI。它可以完成,但解決方案的副作用可能比原始問題更糟糕。