有一张单,然后这张单可见性有以下几种情况
1。可以指定某个区域下的处理员可见
2。可以指定某个区域下的某个镇区的处理员可见
3。可以指定只允许某一个或多个人可见因为单量较大,查询一批单的时候每张单都要对登录用户进行可见性查检。所以大虾们的设计最好能让sql语句的效率高点。

解决方案 »

  1.   

    像linux的文件访问权限一样,对每种情况定义一个值,例如都可见为777,某个区域下的处理员+某个区域下的某个镇区的处理员可见为677等等,然后数据库中每张单加入此属性。
    单某个用户登录的时候,先校验用户角色,然后找出此角色拥有的访问权限,例如某个区域下的处理员访问权限是777和677,然后在where子句中通过单号和访问进行筛选得到数据。
      

  2.   

    你的意思是不是要加入用户对那些单可以访问?如果是这样的话,那么除了一个存放单的表之后,岂不是还要有一张表保存一些单号,以确认那个用户有权限.感觉这样有点冗余.且不好维护.
    不是很理解你的意思,能够把具体的表和sql语句写出来么?
    Order(name,area,...)
    User(name,pwd..)select ..... where....
      

  3.   

    Order(name,area,...,Permissions)
    User(name,area,...,Roleid)
    Role(Roleid,permissions)
    select roleid form user where name==??select permissions form role where roleid=roleidselect * from order where  permissions in Permissions
      

  4.   

    谢谢楼上的回复
    能说明一下order里面的permissions 字段的具体设计么?
    因为permisssions都是取多值的(A区,B区,a用户),如果用in的话好像不行