场景
数据库表中出场率非常高的一类字段就是状态(如status、state等),现在我正在设计一个数据库表,状态字段有“正常”和“注销”两种状态值。通常会出现以下两种使用方式:
0:正常,1:注销
0:注销,1:正常
有些人用第一种,有些人用第二种,有区别吗?
- 使用第一种方式的蜀黍,我不知道你们怎么想的。
- 我猜(瞎猜的不一定对)使用第二种方式的小哥哥,想到了boolean类型0表示假、1表示真,所以0代表注销、1代表正常,逻辑非常严谨一致。
剧情发展
就在这千钧一发的时刻,系统迭代过程中增加了几个状态,比如:锁定、过期、拉黑,再比较一下两种方式:
0:正常,1:注销,2:锁定,3:过期,4:拉黑
0:注销,1:正常,2:锁定,3:过期,4:拉黑
这时候,是不是看到一点区别了,有没有发现第一种方式更优雅? 为什么呢?
因为「幸福的家庭都是相似的,不幸的家庭各有各的不幸」?
正常状态只有一种用0表示,1、2、3等分别代表不同的异常情况。好像有点道理啊,更何况还有意外收获,可以用 status > 0 检索所有异常状态。
胡言乱语
再提醒一下上边逻辑严谨一致的那位小哥哥,此处字段名是status而且是数值类型,与boolean类型没有任何瓜葛。如果你的字段名是是is_deleted,我认为你用0代表非、1代表是,那才真是逻辑严谨。
以上就是我的一些胡言乱语,如果你们觉得有点道理,希望帮到你们,如果有说错的地方希望和大家撕逼,哈哈,谢谢!