2010-02-16 41 views
0

你有一個用戶羣的網站。你想讓一些用戶比別人做得更多。你會如何設計數據庫來支持它?設計一個數據庫來存儲用戶的能力

難道是使用像一張桌子一個可怕的想法:
用戶(ID,姓名... can_add_comments,can_edit_comments,can_add_items ...)

回答

3

我會爲用戶建議一個表格,一個角色表格以及一個用於將用戶與角色相關聯的表格。

您可以擁有一個授權活動表,然後是一個將角色關聯到授權活動的表,但是您也可以脫離處理應用程序中的角色和/或授予/拒絕角色表中的特定活動。

我想象一個擁有大量個人授權的應用程序需要一個與授權活動相關的角色表(您不希望爲每個個人用戶覈對30多個權限)。

1

你可以定義可分配給用戶的角色。然後定義允許每個角色的操作。它可以從這裏變得更加奇特,例如組或角色級別的角色,該組中的所有用戶自動獲得執行組角色操作的權限。

1
create table permission(id int primary key, desc varchar(64) not null) 
create table user_permission(pid int primary key, uid int, permissionid int) 

外鍵留給讀者。

或者,閱讀Drupal的源代碼以查看實例。

這裏的要點是,您不想將自己綁定到一組固定的權限。你可能會在下週發明一個新的。

1

是的。每次添加新功能時,都必須添加一個新列,併爲系統中已有的每個用戶分配默認值。如何使用一點標準化將用戶與功能分開?

相關問題