2013-04-05 49 views
1

我有帳戶,組和項目的表。現在我想描述賬戶和項目的賬戶和項目的訪問權限。對於項目來說,讀取,寫入和不訪問,而對於賬戶只有訪問和不訪問。MySQL表關係佈局(多對多模糊)

說來我首先想到的解決方案是創建一個訪問表用這個佈局:

INT accessed_account_or_project_id 
INT accessor_account_or_group_id 
BOOLEAN accessed_is_project 
BOOLEAN accessor_is_group 
BOOLEAN canWrite 

這是一個很好的結構,或者我應該創建項目和帳戶的訪問權限,甚至可能2個獨立的表4爲不同的訪問器?

我發現了一些關於多對多關係的一般性建議,但在這種情況下,我不確定是否因爲含糊不清和canWrite

回答

1

你不應該有一列代表兩個不同的數據集_or_,所以我建議你去一個四表解決方案的帳戶/項目/組權限映射的可能組合。這應該很容易強制約束來防止權限衝突。

表中存在條目可以指示訪問,但projects具有其他訪問級別。只要你不認爲後面會介紹更多的訪問級別,我認爲兩個項目表上的canWrite列是好的。否則,您可以使用一組權限類型鏈接到另一個表。