设计DB以存储用户功能

时间:2010-02-16 22:54:20

标签: database-design

您有一个拥有用户群的网站。您希望允许某些用户比其他用户做更多的事情。您将如何设计数据库来支持它?

使用如下表格会是一个可怕的想法:
用户(id,name ... can_add_comments,can_edit_comments,can_add_items ...)

4 个答案:

答案 0 :(得分:3)

我建议用户表,角色表和用户与角色相关的表。

您可以拥有一个可授权活动的表格,然后是一个将角色与授权活动相关联的表格,但您也可以放弃处理应用程序中的角色和/或授予/拒绝角色表中的特定活动。

我想,对于一个有大量个体permissoins的应用程序,会要求提供一个与授权活动相关的表格(您不希望为每个用户核对30多个权限)。

答案 1 :(得分:1)

您可以定义可分配给用户的角色。然后定义每个角色允许的操作。它可以从这里变得更加漂亮,例如组中的所有用户自动获得执行组角色操作的权限的组或帐户级角色。

答案 2 :(得分: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的来源以查看实例。

这里的要点是,您不希望将自己绑定到一组固定的权限。你可能会在下周发明一个新的。

答案 3 :(得分:1)

是。每次添加新功能时,都必须添加新列并为系统中已有的每个用户分配默认值。如何使用一点规范化将用户与功能分开?