业务建模:枚举字段的类型选择

来源:互联网 发布:数据可视化软件下载 编辑:程序博客网 时间:2024/06/05 23:57

选择合适的枚举值

在数据库建表的时候,经常会遇到建立状态、性别、类型等字段的业务需求。

这些字段有一个共同的特点,它们的业务含义通常就是这么几个取值。这样的字段我们可以称为枚举字段。

确定一个字段是否是枚举字段,得参考它所表达的业务含义。如果是在电商业务中,商品表有商品类型字段,一般的电商都是可以动态添加或者删除类型,也就是说,商品类型可能有无数个取值,那么它就不是枚举字段。

选择合适的存储方式

对于性别字段,我们可以使用0,1,2这样的数字值来表示,也可以使用‘M’,’F’,这样的类型来表示。
再说一个复杂的例子,订单状态,它可以有未支付,已付款,已出库,已送达等等的状态,我们可以使用0,1,2,3等等来表示,也可以使用UNPAY,PAY_SUCCESS,CLOSE这样的字符串来表示。

总的来说,可以用纯数字编码或者字符串编码来表示。

纯数字编码的优缺点

  • 在业务含义比较简单的情况下,比如说需要一个字段来表示是否启用这个业务含义,这个业务只有未启用,已启用这两个有业务含义,这时候使用0,1这样的纯数字来表示是比较合适的,也方便理解。
  • 在业务含义取值比较多的时候(n>2,n不是无限多哈),比如说需要一个字段来表示订单状态这个业务含义,这时候如果还使用0,1,2,3 这样的数字来表示的话,在业务上是不便于理解的。

字符串编码的优缺点

  • 接上面纯数字编码的缺点分析,如果订单状态这个业务含义使用UNPAY,PAY_SUCCESS,CLOSE字符串的方式的话在业务上面是比较直观的。
  • 使用字符串表示枚举的时候,有一个缺点就是可能字符串太长,在团队开发中容易出点小问题。比如订单状态已付款状态,有可能有人写pay_success,有人写pay-success。对于这种情况,要建立公共类统一处理,不允许自己拼写,避免出错的可能。
  • 当然,要控制枚举字符串的拼写规则,比如说只能使用全大写+下划线的方式,减少拼写错误的可能。

总结

总的来说,不管使用纯数字或者是字符串的方式来表示枚举字段,都要有一个原则,要方便明了地表示出该字段的业务含义。

0 0