这两个表都可以描述“状态”常量,比如星期这个字段可能有星期一、星期二...星期N,那数据字典和枚举应该如何挑选呢?哪些“状态”描述应该使用数据字典,哪些状态描述应该选择枚举?
经过这么多年,多个项目中的体验,得出了自己的一个理解:
- 如果“状态”和业务完全无关,仅仅描述用例的一种状态,且后期会改变。比如说性别为男、女,系统内只是标注一下,不会因为性别为男,就会产生其他的业务,这种就适合用数据字典保存,持久化在数据库中;
- 如果“状态”和业务有关,比如订单的状态为计划、审批、下发,但是每种状态的业务逻辑不一样,且后期可能会新增加入其它的状态,那这种就适合枚举类型存储;
- 枚举类型和代码相关,枚举状态版本和代码版本一一对应,不会应该数据库内容改变就改变,非常适合某些耦合性较强的业务;
如果基础数据字典分布式系统会共用,那该如何使用呢?
思路如下:
- 数据字典微服务(各应用内缓存)
- 统一配置中心