数据库中 “状态” 字段大家一般都怎么存?

整型,然后注释 比如:0:新增订单、 1:已派单、3:已完成
还是直接用字符型:New、Complete这样呢?

你的代码应该是写给下一个开发者的情书。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 51

开发自己的项目,没啥流量的用字符串varchar,比较容易查看;公司的用tinyint ,写 java时 用 enum

2年前 评论

几乎都是 0 1 2 3 吧,省空间,

2年前 评论

0:新增订单、 1:已派单、3:已完成

枚举:created, distributed,finished

2年前 评论
thebestxt

写enum多香。相当于直接存字符串,数据库帮你处理成数字,还不占地方。

2年前 评论
滚球兽进化 2年前
aab 2年前
Rache1 2年前
猿来是你 2年前

我都是用整型数字。然后字段注释写上各个数字的含义

2年前 评论
2年前 评论
raybon 2年前

我都是分开的,比如:是否支付is_pay、是否发货is_send....

2年前 评论
xiaopi

用数字 0 1 2 字段默认0 用数字的好处,有些字段还可以用按位运算符来计算叠加状态。 比如基础状态是1-未发货 2-已发货 4-已取消 ,那么数据库存入5,表示未发货已取消;存入6表示已发货已取消 。用位运算& 和 | 就能处理。比较方便,不用定义那么多状态

2年前 评论
helloStar 2年前
xiaopi (作者) 2年前

尽量使用数字类型,这是主流,至于理由不用多说。至于释义可以用枚举进行转换。还有建议不用【0】作为状态值,在业务逻辑处理会有一定打麻烦。咱做研发的,还是向规范靠近比较好。

2年前 评论

用的tinyint至于原因我忘了

2年前 评论

如果你的订单类型是新增订单又是已派单类型的,你会怎么存

2年前 评论
thebestxt 2年前
SammlHui (作者) 2年前
thebestxt 2年前
SammlHui (作者) 2年前
xiaopi 2年前

除了‘是否’ 字段用 0/1, 其他多状态字段都是字符串,因为 navicat 查看表数据的时候清晰明了

2年前 评论
chowjiawei

订单几千万个的时候,筛选这种状态的订单,用整型一般会比字符串快吧

2年前 评论
小李世界 2年前

以前用 TP 就存 tinyint加表注释, 现在用 Laravel 就是 tinyint 配合枚举

bensampo/laravel-enum
2年前 评论
Complicated

还是用数字吧,对状态排序的时候可以直接用

2年前 评论
xstoop 2年前
leo
2年前 评论

你要是愿意,也可以定义一个状态表。状态id,状态信息,状态分类,等等。然后存入缓存。

2年前 评论

用数字,但我觉得尽量不要用0这个数字

2年前 评论
sumell10 2年前
pan_zoe 2年前

我们一直用的tinyint

2年前 评论

tinyint enum,提交前后端校验

2年前 评论
playmaker

我见 芸众商城里 存的是布尔

2年前 评论

tinyint 在model里定义好方便阅读 譬如

class Order{
  const STATUS_CONFIRM = 1;
  const STATUS_PAID = 2;
  ...
}
2年前 评论
chowjiawei 2年前

0作为状态值,在后台页面的下拉框中 0 和 '' 是一样的,要用全等于才可以区分

2年前 评论

数据库存数字 0,1,2,3 代码里创建配置文件 设置常量

2年前 评论

tinyint,存 1、2、3、4、5。查询效率快,后期好维护

2年前 评论
陈先生

CONSTANT

2年前 评论

使用字符串,因为状态这个字段相对来说使用的频率比较高,一眼就能很直观的看出来数据的状态是什么; 使用数字的话,就不能那么直观看出来了。

2年前 评论

以前是内存不够用,现在是内存都过剩了,语意化的词我觉得更好。数字可读性太差 以前created_at 都是存的时间戳,现在都没啥人存时间戳了一样的道理,基本上不差这一点内存

2年前 评论
MArtian 2年前
九霄道长

数据库tinyint类型,让后定义资源文件config对应状态

2年前 评论

string : a,b,c,d 并且不加备注,加个todo,这样我的代码才能更不容易被人重构,才可以生存的更久 :1

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!