N个状态在数据库中的简便使用定义方式
2015-09-07 19:05
246 查看
我们在做项目的时候(比如做一个消息的状态,它有:已发送,已阅读,已删除,已回复等等),像这样的情况的时候,我们一般的做法是在数据库中加入N个字段来存放它的状态。
但是如果我们需要增加一个状态的时候怎么办呢,继续去修改数据库吗?这样明显不行,这里我向大家推荐一种方式:
使用一个字段来存所有状态。
首先我们这个状态应该是个什么样子呢,朋友向我推荐了一种方式:二进制。
为什么是二进制呢,因为像这种状态的字段我们一般都是用一个Ture/False去判断吧,这样就说的通了,我们先用二进制来试试。而且使用二进制我们将它转换为Int的数值的时候,只要一种状态发生变化,那么它的结果就完全不一样。
具体怎么实现呢:
首先我们先定义一个枚举类型,这个枚举类里面存放的都是一些状态,将需要的状态=1就可以了。
然后我们怎么去区别这个状态,比如我们枚举里有一个状态:删除 如果它是已删除的状态那么我们在数据库中写上一个1,如果不是则写成0。这样就可以区别了,然后我们再加一个状态:已读 加了之后我们的枚举类里面的状态就出现了这样:00 10 11 01 四个状态,我们再写入数据库,这样我们判断的时候只需要将这个枚举类中的二进制转换为数值再和数据库中的二进制来对比,直接将结果写入数据库就可以了。
但是如果我们需要增加一个状态的时候怎么办呢,继续去修改数据库吗?这样明显不行,这里我向大家推荐一种方式:
使用一个字段来存所有状态。
首先我们这个状态应该是个什么样子呢,朋友向我推荐了一种方式:二进制。
为什么是二进制呢,因为像这种状态的字段我们一般都是用一个Ture/False去判断吧,这样就说的通了,我们先用二进制来试试。而且使用二进制我们将它转换为Int的数值的时候,只要一种状态发生变化,那么它的结果就完全不一样。
具体怎么实现呢:
首先我们先定义一个枚举类型,这个枚举类里面存放的都是一些状态,将需要的状态=1就可以了。
然后我们怎么去区别这个状态,比如我们枚举里有一个状态:删除 如果它是已删除的状态那么我们在数据库中写上一个1,如果不是则写成0。这样就可以区别了,然后我们再加一个状态:已读 加了之后我们的枚举类里面的状态就出现了这样:00 10 11 01 四个状态,我们再写入数据库,这样我们判断的时候只需要将这个枚举类中的二进制转换为数值再和数据库中的二进制来对比,直接将结果写入数据库就可以了。
相关文章推荐
- 数据库无限分级(分类表)
- redis集群部署搭建
- mysql 中创建存储过程 FAQ 行转列,游标,循环,字符连接,长度
- redis 学习路线
- ios Sqlite数据库增删改查基本操作
- 清空memcache缓存的一些资料
- redis linux安装 [adlist.o] Error jemalloc/jemalloc.h: No such file or directory
- 一次插入多条记录 [mysql]
- dede Unknown column 'uname' in 'field list' 数据库出错!
- 在Ubuntu 14.04 64bit上安装redis 3.0.3
- Mac 下 PostgreSQL 的安装与使用
- oracle解析xml完成版第二次修改
- mongodb的查询操作符
- MongoDB start
- sql语句中的数字不需要用引号,会影响效率
- oracle 实现多字段匹配一个关键字查询语句
- ORACLE expdp/impdp导出实例
- 数据库资料下载大全
- 使用mysqlbinlog工具通过日志文件恢复数据
- LINQ to SQL SqlMethods操作