2014-01-15 213 views
0

哪個數據庫設計對於SaaS產品最有效,爲什麼?角色和權限,在角色表或多個角色權限記錄中存儲權限集?


設計1:三個表(標準的方式來設計自己的角色權限表)

ROLE 
Id 
Name 
Description 

PERMISSION 
Id 
Name 

ROLEPERMISSION 
Id 
RoleId 
PermissionId 

設計2:兩個表

ROLE 
Id 
Name 
Description 
PermissionSetData 


PERMISSION 
Id 
Name 

凡role.permissionsetdata列包含一個CVS存儲在角色記錄中的權限集。 (保存數據庫存儲空間,可能有助於提高性能?)

回答

0

解決方案1是唯一合適的設計。

  • 保存數據庫存儲空間在我看來幾乎總是一個有爭議的問題。當您可以以合理的價格購買TERA字節的空間時,爲什麼您會嘗試存儲幾個千字節字節? (每種解決方案所需的空間大致相同)。

  • 第二個設計中的多值列不遵循proper database design

  • 從實際的角度來看,檢索多值列中的數據比正確設計的數據庫大得多複雜和昂貴。例如,您無法正確編制CSV列索引,您無法輕鬆加入。