文章目录
一、背景
不知道大家在IT系统建设过程中,有没有遇到过类似情况。流量明细表,有一个字段是流量入口。这个字段的枚举类型曾经为:00表示app启动弹框,01表示顶部banner,02表示中通广告位。后来这个月重新发版之后,新增了枚举——03表示筛搜广告位。
我们有一张流量统计报表,该报表可能有以下字段,流量入口中文名称、入口点击pv、入口点击uv……
在写这个报表可能会有类似的sql:
select
case when utm_source='00' then 'app启动弹框'
case when utm_source='01' then '顶部banner'
……
sql里可能有一段很长的case when需要维护。一但开发新增了枚举,做为数据rd的你,需要手工维护sql,你的报表没法自动感知数据,你疲于奔命。
二、治理方案
我上面讲的是一个很简单的例子,相信很多开发朋友都知道,需要一张表来维护这个枚举,我们一般称之为码表。
简单聊聊这个码表吧。
这个码表最重要的两个字段是code、code_cn,code存的是“00”,code_cn存的是“app启动弹框”。(我只是举个例子,命名不很优雅)
开发人员在定义枚举之前(如写Java Enum前),需先维护这张码表(很多企业可能会有一个叫元数据管理的模块,在该模块事先维护好相关枚举,并有相关的审核及审批流程)。
如果开发人员提交了Ja