我建议LZ建1个表
table1
项目ID 用户ID 权限
1 1 1
1 2 0
2 1 1
2 2 1
2 3 0
3
4
5
意思是这样的如果你想让这个用户有修改项目1的权限
就把 用户ID1 的权限设置为1
否则为0
这样你在选择的时候就可以这样、
sql = "select * from table where Uid = 1 and PRIVILEGE = 1";这样就是选出所有 用户ID为1的 全部所能看到的 修改的 项目了
不知道LZ觉得这样可好~~~
table1
项目ID 用户ID 权限
1 1 1
1 2 0
2 1 1
2 2 1
2 3 0
3
4
5
意思是这样的如果你想让这个用户有修改项目1的权限
就把 用户ID1 的权限设置为1
否则为0
这样你在选择的时候就可以这样、
sql = "select * from table where Uid = 1 and PRIVILEGE = 1";这样就是选出所有 用户ID为1的 全部所能看到的 修改的 项目了
不知道LZ觉得这样可好~~~
table1
项目ID 用户ID 权限
1 1 1
1 2 0
2 1 1
2 2 1
2 3 0
3
4
5权限位可以用位操作
1 读
2 写
4 删除
....
用户1有读权限,在相应位为1
有读写权限, 相应位为 3
有全部权限 相应位为7
三表结合起来?
如果我做查询的时候
select * from 文章表,权限表 where
文章表.用户ID = 权限表.用户ID
AND
文章表.部门ID = 权限表.部门ID
AND
文章表.项目ID = 权限表.项目ID 这样做.效率上如何~
一个表存~~~用户信息~~~以UID为主键一个表存~~~用户ID ,文章ID,权限问题
1 1 1
1 2 0
1 3 1
2 1 1
2 2 0
2 3 0
3 1 1
…… …… ……
然后其他的表你自己建设~~~当你要选则用户的时候
就一个 SELECT 把table1.UID = table2.UID and 权限=1或者权限=2就可以了
权限的1,2,3,4代表什么LZ自己定义就好~~~~
是不是清楚了LZ??
首先.由外界的用户发一个文章.
然后这篇文章需要后台管理员审核.
这篇文章在任意部门任意项目中.
(部门1-10,每个部门下面又细分为项目1-10,这样就有100个组合了)
然后管理员有若干个,每个管理员都有指定的权限.每个部门每个项目.
最大的权限就是10个部门每10个项目都可以操作,这样一来就有100个权限了.而当这个最大权限的管理员进入后台的审核页面,就要把他有权限的文章全LIST出来.
没权限的文章全部不显示.
我试着用SELECT WHERE IN()来写.但效率极低.里面IN了一百个...
T_T完全没在头绪
===
select * from `table` where 部门 and 项目
多权限无非是多几个and而已*加上AND不就是缩小查询范围了么? 多权限用OR(IN)的吧?