数据库中建一个权限表,存放操作。权限表rights
-------------
id     name
1       浏览
2       编辑
3       审核
用户组表usergroup
-------------
id     name
1       管理组
2       会员组
现在要把权限赋矛给用户组,怎么赋予呢?想到两种方法:第一种:
在用户组表中增加一个字段rights,将用户组拥有的权限id值以豆号分隔组成字符串存入。
如:
id     name     rights
1     管理组    1,2,3第二种:
按照三范式增加一个 用户组--权限 的关联表实现多对多的关联。该用哪种方式呢?

解决方案 »

  1.   

    建议使用位运算方式
    一个整型数 2字节 可容纳16个权限字
    一个长整型数 4字节 可容纳32个权限字 (php的int类型)
    mysql 的 set 类型字段可容纳64个权限字
    足够使用了
    浏览 1
    编辑 2
    审核 4
    管理组 1|2|4
    会员组 1|2
      

  2.   

    AdmiralMeng:
     2楼xuzuning的方法很好,实现容易,操作方便。优于你的两个方案,你的第1个方案优于第2个,虽然维护复杂点,但概念清晰通俗。
      

  3.   

    莫非是这样  ... (编号, 名字 , 权限组) -- 用户表
    1        job       管理员
    2        tom       审查员 
    3        bob      普通会员
    (编号, 职称, 浏览, 添加, 删除, 审核, 管理)  -- 角色表
    1        管理员   y        y      y       y       y
    2        审查员   y        y      n       y       n
    3        普通会员 y        n      n       n       n