设计一张表的状态位的时候,用一个叫 status 的字段来表示,类型为 tinyint。
假定这张业务表需要走流程,流程的状态有五种:暂停、取消、进行中、审批中、完成。
起初的时候,我把它设计成:
0 - 进行中
1 - 暂停
2 - 取消
3 - 审批中
4 - 完成
貌似合理。
轮到设计查询条件的时候,发觉许多业务要求不需要返回暂停和取消的记录。也就是说,除暂停、取消以外的记录。
于是,查询条件设计为:(status != 1) && (status !=2)。多别扭啊!
转念一想,还有一种比较优化的设计方式:
1 - 暂停
2 - 取消
3 - 进行中
4 - 审批中
5 - 完成
这时候,查询条件就可以设计为: (status>2)。这是不是简洁优雅多了!
如果你问我,为什么原来是从0排起,现在从1排起?
那是因为,我得保留一个位置,让突发的情况可以插入。
所以,小小的状态位,也蕴含着学问。看来设计一个状态位,顺序的编排也是需要考究的。
303

被折叠的 条评论
为什么被折叠?



