问答 / 7 / 51 / 创建于 3年前 / 更新于 3年前
整型,然后注释 比如:0:新增订单、 1:已派单、3:已完成还是直接用字符型:New、Complete这样呢?
开发自己的项目,没啥流量的用字符串varchar,比较容易查看;公司的用tinyint ,写 java时 用 enum
几乎都是 0 1 2 3 吧,省空间,
0:新增订单、 1:已派单、3:已完成
枚举:created, distributed,finished
写enum多香。相当于直接存字符串,数据库帮你处理成数字,还不占地方。
数字
字符串
0,1,2 然后写枚举,推荐扩展包 github.com/BenSampo/laravel-enum
0,1,2
我都是用整型数字。然后字段注释写上各个数字的含义
推荐这个包 github.com/spatie/laravel-enum
我都是分开的,比如:是否支付is_pay、是否发货is_send....
用数字 0 1 2 字段默认0 用数字的好处,有些字段还可以用按位运算符来计算叠加状态。 比如基础状态是1-未发货 2-已发货 4-已取消 ,那么数据库存入5,表示未发货已取消;存入6表示已发货已取消 。用位运算& 和 | 就能处理。比较方便,不用定义那么多状态
尽量使用数字类型,这是主流,至于理由不用多说。至于释义可以用枚举进行转换。还有建议不用【0】作为状态值,在业务逻辑处理会有一定打麻烦。咱做研发的,还是向规范靠近比较好。
用的tinyint至于原因我忘了
tinyint
如果你的订单类型是新增订单又是已派单类型的,你会怎么存
全部用 tinyint
除了‘是否’ 字段用 0/1, 其他多状态字段都是字符串,因为 navicat 查看表数据的时候清晰明了
订单几千万个的时候,筛选这种状态的订单,用整型一般会比字符串快吧
以前用 TP 就存 tinyint加表注释, 现在用 Laravel 就是 tinyint 配合枚举
bensampo/laravel-enum
还是用数字吧,对状态排序的时候可以直接用
可以看一下这篇 博客:关于 MySQL enum 类型的一些测试
你要是愿意,也可以定义一个状态表。状态id,状态信息,状态分类,等等。然后存入缓存。
用数字,但我觉得尽量不要用0这个数字
我们一直用的tinyint
tinyint enum,提交前后端校验
我见 芸众商城里 存的是布尔
tinyint 在model里定义好方便阅读 譬如
class Order{ const STATUS_CONFIRM = 1; const STATUS_PAID = 2; ... }
0作为状态值,在后台页面的下拉框中 0 和 '' 是一样的,要用全等于才可以区分
数据库存数字 0,1,2,3 代码里创建配置文件 设置常量
用 tinyint,存 1、2、3、4、5。查询效率快,后期好维护
CONSTANT
使用字符串,因为状态这个字段相对来说使用的频率比较高,一眼就能很直观的看出来数据的状态是什么; 使用数字的话,就不能那么直观看出来了。
以前是内存不够用,现在是内存都过剩了,语意化的词我觉得更好。数字可读性太差 以前created_at 都是存的时间戳,现在都没啥人存时间戳了一样的道理,基本上不差这一点内存
数据库tinyint类型,让后定义资源文件config对应状态
string : a,b,c,d 并且不加备注,加个todo,这样我的代码才能更不容易被人重构,才可以生存的更久 :1
我要举报该,理由是:
开发自己的项目,没啥流量的用字符串varchar,比较容易查看;公司的用tinyint ,写 java时 用 enum
几乎都是 0 1 2 3 吧,省空间,
枚举:created, distributed,finished
写enum多香。相当于直接存字符串,数据库帮你处理成数字,还不占地方。
0,1,2
然后写枚举,推荐扩展包 github.com/BenSampo/laravel-enum我都是用整型数字。然后字段注释写上各个数字的含义
推荐这个包 github.com/spatie/laravel-enum
我都是分开的,比如:是否支付is_pay、是否发货is_send....
用数字 0 1 2 字段默认0 用数字的好处,有些字段还可以用按位运算符来计算叠加状态。 比如基础状态是1-未发货 2-已发货 4-已取消 ,那么数据库存入5,表示未发货已取消;存入6表示已发货已取消 。用位运算& 和 | 就能处理。比较方便,不用定义那么多状态
尽量使用数字类型,这是主流,至于理由不用多说。至于释义可以用枚举进行转换。还有建议不用【0】作为状态值,在业务逻辑处理会有一定打麻烦。咱做研发的,还是向规范靠近比较好。
用的
tinyint
至于原因我忘了如果你的订单类型是新增订单又是已派单类型的,你会怎么存
全部用
tinyint
除了‘是否’ 字段用 0/1, 其他多状态字段都是字符串,因为 navicat 查看表数据的时候清晰明了
订单几千万个的时候,筛选这种状态的订单,用整型一般会比字符串快吧
以前用 TP 就存 tinyint加表注释, 现在用 Laravel 就是 tinyint 配合枚举
还是用数字吧,对状态排序的时候可以直接用
可以看一下这篇 博客:关于 MySQL enum 类型的一些测试
你要是愿意,也可以定义一个状态表。状态id,状态信息,状态分类,等等。然后存入缓存。
用数字,但我觉得尽量不要用0这个数字
我们一直用的tinyint
tinyint enum,提交前后端校验
我见 芸众商城里 存的是布尔
tinyint
tinyint 在model里定义好方便阅读 譬如
0作为状态值,在后台页面的下拉框中 0 和 '' 是一样的,要用全等于才可以区分
数据库存数字 0,1,2,3 代码里创建配置文件 设置常量
用
tinyint
,存 1、2、3、4、5。查询效率快,后期好维护CONSTANT
使用字符串,因为状态这个字段相对来说使用的频率比较高,一眼就能很直观的看出来数据的状态是什么; 使用数字的话,就不能那么直观看出来了。
以前是内存不够用,现在是内存都过剩了,语意化的词我觉得更好。数字可读性太差 以前created_at 都是存的时间戳,现在都没啥人存时间戳了一样的道理,基本上不差这一点内存
数据库tinyint类型,让后定义资源文件config对应状态
string : a,b,c,d 并且不加备注,加个todo,这样我的代码才能更不容易被人重构,才可以生存的更久 :1