2010-02-16 44 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

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

相关问题