mysql状态设计字段_Mysql数据库表字段设计优化(状态列)
一、传统用户状态设置
传统的数据库表中,涉及到状态的字段时,通常都会第一反应就是将其设置为0和1来表示。比如需求是,设计一张表来检查用户状态(绑定邮箱,绑定手机,实名认证,是否已经开通VIP),我以前会这样设计Java类。
UserInfo
@Getter
@Setter
public class UserInfo extends baseDomain{
private boolean realAuth;
private boolean bindPhone;
private boolean bindEmail;
private boolean vip;
}
如果是用0和1来表示,咋看起来挺合理的,但是仔细想想,是否真的能够满足我们的需求?(也不符合我们作为完美主义者的追求)
二、使用二进制来表示状态
我们使用二进制来表示状态看看效果。首先给每一个状态指定分配一个二进制,如
boolean realAuth 0001;
boolean bindPhonge 0010;
boolean vip 1000;
boolean bindEmail 0100; 那还有一个问题,就是在数据库中,使用int类型还是long类型?
诚然,初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
