N个状态在数据库中的简便使用定义方式

我们在做项目的时候(比如做一个消息的状态,它有:已发送,已阅读,已删除,已回复等等),像这样的情况的时候,我们一般的做法是在数据库中加入N个字段来存放它的状态。

但是如果我们需要增加一个状态的时候怎么办呢,继续去修改数据库吗?这样明显不行,这里我向大家推荐一种方式:

使用一个字段来存所有状态。

首先我们这个状态应该是个什么样子呢,朋友向我推荐了一种方式:二进制。

为什么是二进制呢,因为像这种状态的字段我们一般都是用一个Ture/False去判断吧,这样就说的通了,我们先用二进制来试试。而且使用二进制我们将它转换为Int的数值的时候,只要一种状态发生变化,那么它的结果就完全不一样。

具体怎么实现呢:

  首先我们先定义一个枚举类型,这个枚举类里面存放的都是一些状态,将需要的状态=1就可以了。

  然后我们怎么去区别这个状态,比如我们枚举里有一个状态:删除 如果它是已删除的状态那么我们在数据库中写上一个1,如果不是则写成0。这样就可以区别了,然后我们再加一个状态:已读 加了之后我们的枚举类里面的状态就出现了这样:00 10 11 01 四个状态,我们再写入数据库,这样我们判断的时候只需要将这个枚举类中的二进制转换为数值再和数据库中的二进制来对比,直接将结果写入数据库就可以了。

时间: 2024-08-25 18:41:05

N个状态在数据库中的简便使用定义方式的相关文章

开发技巧----------项目中常量类的定义方式

问题: 有开发经验的同学都知道,常量类是一个最常用的定义数据字典的方式.但是随着项目的开发时间和开发团队的变化经常会出现2中特别苦逼的情况.第一种情况是项目中到处都能看到各种各样的常量类:第二种情况是一个常量类里定义非常多的常量,甚至有的超过100了.这两种情况的缺点估计大家都非常的清楚,第一种代码离散.冗余.维护难:第二种也是维护难,更痛苦的时候用ide的时候很难找到自己需要的常量. 解决办法: 1.使用静态内部类对常量进行分组(可以多级分组,但是建议最多3级) 2.外部文件(这里不讨论) 3

ECSHOP的订单状态在数据库中的表现(order_status, shipping_status, pay_status)

echop的订单状态都是在ecs_order_info表中的字段里. 订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 shipping_status 0 0 0 0 3 1 2 0 pay_status 0 0 0 2 2 2 2 0

Oracle数据库中,通过function的方式建立自增字段

Oracle数据库无自增字段设置,可以通过function的方式设置字段自增来作为ID. 1.创建表tSequence来存储各表的next ID. 2.创建function类似如下: 1 CREATE OR REPLACE FUNCTION "FUNC_NEXTID" 2 (tablename in varchar2) return number is 3 4 nextid number(12); 5 begin 6 begin 7 select nvl(max(id),-1) int

数据库中的异常(预定义,非预定义,用户自定义)

DECLARE --预定义 异常信息 不声明异常 v_empno emp.empno%TYPE :=&empno; v_sal emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno=v_empno; IF v_sal<=1500 THEN UPDATE emp SET sal=sal+100 WHERE empno=v_empno; DBMS_OUTPUT.PUT_LINE('编码为'||v_empno||'员工工资已更

PLSQL插入数据库中的中文乱码解决方式

1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.AL32UTF82.执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样.如果不是,需要设置环境变量.否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.3.设置环境变量计算机->属性->高级系统设置

从数据库中修改zabbix的验证方式 0 内置 1 LDAP 2 HTTP

1 MariaDB [zabbix]> select authentication_type from config ; 2 +---------------------+ 3 | authentication_type | 4 +---------------------+ 5 | 2 | 6 +---------------------+ 7 1 row in set (0.00 sec) 8 9 MariaDB [zabbix]> update config set authentica

云硬盘error、error deleting、deleting状态(数据库基本操作小记)

起因是发现云硬盘显示删光了,但还是创建不了新的云硬盘,在api节点上用cinder list可以看到已经没有硬盘了,但是创建硬盘时,还是会提示配额满了,这是因为数据库里的记录没有更新,对数据库的操作记录如下,以便以后参考: 登录50数据库节点(需要登录主节点,可以在mysql数据库中输入show master status;或者show slave status;来查看,比如show master status;这个命令,如果返回了一个表,那么证明就是主了.目前L版中50.51.52都是主.)

数据库中的三级模式结构

模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,又称概念模式或概念视图.视图可理解为一组记录的值,用户或程序员看到和使用的数据库的内容. 模式处于三级结构的中间层,它是整个数据库实际存储的抽象表示,也是对现实世界的一个抽象,是现实世界某应用环境(企业或单位)的所有信息内容集合的表示,也是所有个别用户视图综合起来的结果,所以又称用户共同视图. 所谓模式是指用数据描述语言精确定义的数据模型.数据模式的三个层次:外部层.概念层和内部层,构成数据库系统的三级模式结构,不管数据库管理系统的功

Oracle12c之 CDB数据库中数据字典架构

数据字典就是元数据的集合,比如创建的表,列,约束,触发器等等这些都是元数据,需要保存到数据库中.除此之外,Oracle自身的一些数据库对象,如目录,PL/SQL代码等等这些都是元数据,都需要存放在数据字典中.随着12c 容器数据的普及,Oracle数据字典发生了哪些变化呢,下文即是具体描述. 一.数据字典及其形成 1.数据字典 数据字典是元数据的集合,从逻辑上和物理上描述了数据库及内容,存储于SYSTEM与SYSAUX表空间内的若干段. SYS用户拥有所有的数据字典表,数据字典基本一般以结尾,如