为了账号安全,请及时绑定邮箱和手机立即绑定

在线等,挺急的!对于有多种状态值的字段,其状态值该如何管理求解答!

在线等,挺急的!对于有多种状态值的字段,其状态值该如何管理求解答!

犯罪嫌疑人X 2019-08-05 23:12:18
问题:对于有多种状态值的字段,其状态值该如何管理。举例:比如用户的状态(user_status)包括:1(已注册未激活),2(已激活),3(已锁定),4(已注销)在数据库里,会保存其对应的索引值(key)1,2,3,4,那么就需要有一个字典表,保存其对应的value(已注册未激活,已激活,已锁定,已注销)在一次前后台交互的过程中,除了返回给前端的用户信息外,还会把字典信息一并返回给前端,方便前端处理。但是考虑下面一种情景:用户注册接口,新注册的用户默认状态为,已注册,未激活。user.setUserStatus(1);但是,如果后台数据库的索引值变化了,已注册未激活的索引值变为了5,那么这个时候,就需要修改代码逻辑。如果涉及多段类似代码的修改,会很容易造成错误。请问:如何设计后台代码对这些字典信息的管理以及如何设计数据库字典表?
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

首先这个数字是自定义的,已注册未激活等于1还是等于5是没有意义的,数据库层面来说这两个没有太大关系.如果你的系统过于复杂,你可以做一个字典表(表里面id就是你的status,status_name就是你的已注册未激活),然后设计一个用户字典树关联表,真的需求出现的时候,你可以通过一个sql去批量更新.不过话说回来,大部分改数字的情况都是需求不合理或者设计不合理导致的.
                            
查看完整回答
反对 回复 2019-08-05
?
HUWWW

TA贡献1874条经验 获得超12个赞

可以考虑使用枚举将各个状态和值相关联,使用时就可以user.setUserStatus(UserStatus.LOCKED)之类的方式来尽可能的减少代码改动的范围。eg.
publicenumUserStatus{
LOCKED(3);//othersimilar
publicfinalBytecode;
privateUserStatus(intcode){
this.code=(byte)code;
}
}
不过这样做时需要注意的是数据库中已存的用户状态需要通过sql语句手动更新。(虽然这种需求本身就不是很合理)
                            
查看完整回答
反对 回复 2019-08-05
  • 2 回答
  • 0 关注
  • 302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信