我正在考慮我的項目的權限系統,我無法決定如何組織我的權限系統。簡而言之,我會將我的問題描述爲:
我應該爲每個用戶創建共享實體(行)並應用權限還是創建單獨的實體(行)副本?這是數據庫設計或授權/權限責任
我的情況:我有2個實體
Company
{
[PK]
Id,
Name,
Contacts,
OwnerUser
},
Contact
{
[PK]
Phone,
ContactPerson
}
其中有許多一對多的關係。用戶可以修改他們創建的公司實體(自己)。
我的問題:聯繫實體(行)可以由不同用戶擁有的公司之間共享,並且假設兩個用戶都希望將Contact.ContactPerson編輯爲不同的值(例如,一個用戶聲稱電話號碼屬於John ,以及其他人是湯姆的號碼),如果我爲每個公司(以及用戶)創建聯繫人的單獨副本,但是我的業務規則不允許具有相同電話號碼的重複聯繫人,並且其他聯繫人屬性除了電話號碼之外,必須共享(根據我的業務規則)。
如何解決這種情況?
電話是唯一且共享的,因爲它包含必須由擁有此電話號碼的所有公司共享的屬性。否則,當某些Phone屬性發生更改(假設某個標誌)時,我們將不得不在數據庫中查找所有Phone實例並更新此標誌\屬性。 – 2011-01-11 07:11:58