SqlServer位运算 权限设计

http://www.cnblogs.com/sycdirdir/archive/2010/06/01/1748891.html  

*

用2的n次方标识单个的权限 如

0 无权限
1 可读(read)
2 可新增(insert)
4 可修改(update)
8 可删除(delete)
16 可审核
...
权限的组合

read +insert = 1+2=3
read +insert +delete = 1+2+8=11
read + update+delete =1+4+8=13


(value = 2的n次方)
增加权限
power = power | value

删除权限
power = power &~ value

btw:  可以一次增加或删除多个权限的组合
power = power | 13   同时增加 read + update+delete
power = power &~ 3   同时删除 read + insert


判断权限
可以同时判断单个权限,也可以同时判断多个组合权限

power & value = value

 

*/

 

 

评论

1839418
#1楼 2010-06-01 13:28 为之则易      

比较通过的做法,但也是有一些细节问题的
1.SqlServer中binary类型不能直接进行与/或运算,需转换成int型,转换后再进行Sql语句查询或者将数据判断转移到应用程序中来判断。
2.可以将类型直接设置为bigInt类型,但该类型最多也就2的63次方,也就是最多也就60多种权限,常见权限一般不会超出60种,但设计时应该考虑到容许超出这个范围。
 回复 引用 查看   

#2楼[楼主] 2010-06-03 09:09 老宋点滴      

呵呵,
1,一般的mis系统 查1,插2,改4,删8,审16 tinyint也够了。2,分组或功能结构树的功能一般是用左右值法做个树结构。
 回复 引用 查看   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值