最近在做权限模块,想实现数据权限,我是用单位,每个表中有带一单位id,然后sql语句用 select * from table where id in(单位1,单位2,单位3,..),后来发现,如果单位多,这样查询应该很慢,请高手指点,更好的思路?在此谢谢

解决方案 »

  1.   

    权限表的数据量应该不是很大,建表的id索引,优化表,应该很快的。where id in (....)这样的查询是效率低,如果不是必须,尽量别用
      

  2.   

    数据权限没有很好的解决方案,只能通过业务 SQL 去处理,因为业务是多变的,数据也是多变的,业务加数据那是双重多变。多变就已经没有通用的解决方案了,再不用说双重多变了。建议:尽量在表结构设计上增加一些冗余,以减少查询的复杂度。
      

  3.   

    是的!我设计数据权限时,每个业务表都有一个单位id,然后有这单位的数据权限就使用sql检索,from table where 单位id="单位1,单位12,...",不知道大家是否有更好的方式实现数据权限
      

  4.   

    我设计数据权限时,每个业务表都有一个单位id,然后有这单位的数据权限就使用sql检索,from table where 单位id in "单位1,单位12,...",不知道大家是否有更好的方式实现数据权限
      

  5.   

    我个人也觉得不同的角色,不同的用户登录有不同的权限。。
    还是这样做比较好些。。
    全部通过SQL语句去检索过去麻烦。
      

  6.   

    我设计时:用户对应角色,角色设置权限(功能权限,数据权限),功能权限没有问题,数据权限每个业务表都有一个单位id,然后有这单位的数据权限就使用sql检索,from table where 单位id in "单位1,单位12,...",是否还有更好方法
      

  7.   

    建议楼主集成spring安全框架,将权限放置在数据库中
      

  8.   

    能提供一下思路吗?我系统框架也是SSH
      

  9.   

    能提供一下思路吗?我系统框架也是SSH
      

  10.   

    如果用SSH 就用Spring里面的安全框架security
      

  11.   

    如果控制到单位就双表实现数据表
    id .....权限表
    id
    数据id
    单位id如果操作者多单位
    那就三表实现权限描述表
    id
    数据id
    单位id权限控制表
    id
    权限描述id
    userid