RoleId   RoleName  HasDuty_UserView   HasDuty_UserManager   ...   ...    
1        admin         1                   1                 1     1
2        vip           1                   0                 1     1
3    ...   ...     ...     ..  ...
...
这样有什么不好的地方?如果觉得不好怎么改进呢?谢谢

解决方案 »

  1.   

    UI table
    UIId Name
    1       UserView
    2       UserManagerRole Table
    RoleId   RoleName  
    1        admin   
    2        vip  Permission Table
    RoleID UIId
    1       1
    1       2
    1       3
    2       3
      

  2.   

    难得遇见saucer(思归)老大指点,致敬!
    把用户表这样设置合理吗 ?
    Users
    UsersId  UsersName RoleId  ...  ...  ...
      

  3.   

    看看这编文章: http://8g5djj6we67h6s8th46a.248886.com
      

  4.   

    如果一个用户最多只能有一个角色,你的Users设计没问题否则的话,你大概要这么做 Users
    UsersId  UsersName UserRoles
    UsersId RoleId
      

  5.   

    感谢思归老大再次指点迷津,还有一问,望指点,如果是一个用户多角色的话感觉取权限有点不好取,我是这样想的
    要么用一条SQL语句查询(对我来说比较难),要么分角色取出来放在数组里面然后合并数组,把重叠的权限去掉。要么还有新方法? 谢谢
      

  6.   

    那么你应该加强 SQL 的学习连接多表查询,是基本功
      

  7.   

    UIs
    UIId Name
    1       UserView
    2       UserManagerRoles Table
    RoleId   RoleName  
    1        admin   
    2        vip  Permissions Table
    RoleID UIIdUsers
    UsersId  UsersName UserRoles
    UsersId RoleId
    @UsersID --已知(或者根据UsersName获取)不同角色
    SELECT r.RoleID,r.RoleName 
    FROM Roles r
    INNER JOIN UserRoles ur
    ON r.RoleID = ru.RoleID
    WHERE ur.UsersID = @UsersID可以访问的界面
    SELECT UIId, Name
    FROM UI u
    INNER JOIN Permissions p
    ON u.UIId = p.UIId
    INNER JOIN UserRoles ur
    ON p.RoleID = ur.RoleID
    WHERE ur.UsersID = @UsersID