9

字典表和枚举的取舍

 3 years ago
source link: https://www.oschina.net/question/4067080_2324575
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

字典表和枚举的取舍

osc4067080 发布于 昨天 17:58
阅读 206

数据库设置了字典表。里面有字典 sex:1男 2女

那么在假如说,在新增用户的时候,我需要做user.setSex(1)吗?

这不是魔法值吗?

我更期望以前的设置枚举,enum SEX{ MAN, WOMAN}

那么我新增的时候是user.setSex(SEX.MANxxx).

字典表该如何用好呢?

喜之郎
昨天 19:15

以前我也追求完美,想把所有的字典都定义对应枚举,多年的实践发现这样反而把事情搞复杂了。我感觉要做的是在数据库注释中和user.setSex(1)这句代码后面写好注释 //1代表什么,2代表什么即可。建议数据库中用“m”(male)代表男,“f”代表女,这样数据库中的数据更具有可读性。如果说要用枚举的话,mysql本身就支持枚举类型,但我也没见几个人用的。

魔力猫
今天 10:30
MySQL的枚举,有人举了8宗罪。总之设计看起来还好,但是现实糟糕。还不如按范式原则搞字典表。纯数据库领域,还是按规范来吧。枚举还是放在代码里面考虑比较好。唯一要考虑的就是,代码里面的枚举和数据库里面的值的对应转换问题。
sprouting
昨天 19:44

首先,存字典的作用是啥,一般用于哪里?当然是用于前端了,前端取值就从你的字典中来,前端将对应的数据传给你,你怎么需要再去字典中获取一次呢?

只有这个时候用到导入用户的需求,你需要做一次转换,这个时候,如果已经确定是保存在字典中了,就应该从字典获取,然后判断设置参数,全程根本不需要用到自定义的枚举。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK