浅谈通用的字典表结构设计

应该绝大多数系统都需要字典表吧,或许不叫这个名字,值集,枚举表等等。当然,java中有枚举类,能够将一部分不涉及到更新的枚举值配置其中,但大部分涉及到维护的数据,或者是通用的数据,如国家省市值,这个表数据状态值,配置到字典表里面都是非常好的选择。

在这里,我们就使用比较有名的项目ruoyi提供的字典表DDL来简单分享一下。ruoyi有两张字典相关表,一个字典类型表,一个字典数据表,将字典定义和数据分开,我也非常赞同这种设计。当然,也有些系统就用一张表代替,第一层存字典类型,即定义,后一层存数据。

字典类型表
在这里插入图片描述
字典数据表
在这里插入图片描述两张表通过字典类型关联,字典数据表中有顺序字段,可调整枚举对应显示顺序,有键和值字段,页面显示值,数据库中存键。因为使用了字符类型的dict_type做父子表的关联字段,在类型表中增加了唯一索引,字典数据表中的类型字段也应该增加普通索引,毕竟数据表中的字段会比类型表中的数据多很多。
这里其实也可以通过字典类型的主键来进行父子表的关联。

另外,个人觉得字典数据表支持层级也是一个可以考虑的点。比如一级大类下有多个二级小类,增加一个parent_id可以在数据表中递归查询所有的层级数据。这样做的话,字典数据表中的字典类型字段就可以去掉,最顶层数据的parent_id存类型的id,并且类型数据的主键用雪花算法生成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿条秋裤到处跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值