日期:2014-05-17  浏览次数:20452 次

在设计数据库的时候,实际生产过程中,会用到 位与的方式来标示吗
假如说有个表记录人物的信息
username  age sex ····

现在我想有个字段 state (int 类型 )标示一些状态

我想用state二进制位
第一位1表示某种状态(如 被隐藏) 
第二位1表示另外一种状态,
  
   这样可以有叠加状态,而不需要另外一个表来专门来描述这些状态信息,(避免了查询的时候总是要 联合查询)
 
二进制查询
   select * from usertable where  (usertable .currentStatus&1)=1 提取了被隐藏的
如果专门的有状态信息表
  就要联合查询
 select * from usertable left join stateinfo on a.username =  b.usrename where  statehide =1

我想知道这二进制的方式 在实际生产过程中用的多吗,还是说为了表结构的清晰状态开辟用户状态表
数据库 二进制

------解决方案--------------------
我用过,当时的情景是一个功能,可以多选,由于选项很多,18个左右,所以用了一个int类型,并设定当一位为1时,证明对应的选项选中了。0没选上。一个int32位可以存放32种,当然没做的太复杂。然后根据位运算算出这个功能一共选了多少项。