请问下项目经验丰富的大神们在项目中关于权限建表怎么建立,如:现在有个权限表,里面有权限1,权限2,权限3,权限4,分别对应的权限的编号是1,2,3,4,然后现在有个用户表,假设有一个用户拥有2,3,4的权限,我应该怎么创建这个用户表呢,我不可能在用户表里添加权限字段,然后对应的用户给它插入2,3,4然后用逗号隔开吧??应该怎么设计这个表最合理呢??
如果分类比较复杂 你可以再把分类表做一个无限极分类
我给你个最简单的商品表设计
goods(商品表)
id name type_id
1 宝石 5
2 礼物a 3
商品分类表type
id name pid
1 珠宝类 0
2 礼物类 0
3 生日礼物 2
4 金银首饰 1
5 节日礼物 2
商品分类表的设计你可以搜素下 无限极分类
上表就是一个多级的无限极分类设计 结构:
珠宝类
------金银首饰
礼物类
------生日礼物
------节日礼物
然后你再商品里面只保存分类id即可
查询的时候 select * from goods join type where goods.id = 2 结果就是 名称=>礼物a 类型名称=>生日礼物
权限多的话 你可以用rbac的方式 用户表里面存储这个用户的角色即可 这个你可以搜索下rbac 我这就不多讲了
权限少的话 比如就十几个权限 可以通过位运算的方式 如下:
首先把权限定义如下
权限名称 值
add 1
select 2
delete 4
update 8
每一个权限的值都是2的次方 第一个是0次方 第二个1次方 以此类推
比如这个用户有前三个权限 你在用户表里纪录下 前三个值的和 此处值为7 让后保存到用户表里
查询的时候 比如要看这个用户有没有update权限 update的值为8 你用用户保存值 7&8 得到的是false 证明没有
而其他3个 7&1 7&2 7&4 分别为 add update delete 都为false
rbac模式,你这个就像角色表和权限表关系差不多的,加一个中间表存角色id和权限id就行了
打错了 最后一句 应该是都为true 证明有这个权限