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

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

字典类型表

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

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

浅谈通用的字典表结构设计相关推荐

  1. 浅谈CSS重构样式表性能

    什么情况下重构 结合代码的上下文重构代码会更加的容易.所以,如果是修复bug,或者开发新的功能时用到了已有的代码,觉得有可变动的空间,能更好的为项目所用,重构是最好的选择.顺带的重构不至于会把项目搞乱 ...

  2. mysql表空间大小_浅谈mysql中各种表空间(tablespaces)的概念

    mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...

  3. mysql表空间_浅谈mysql中各种表空间(tablespaces)的概念

    mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...

  4. 浅谈支付业务的分表方案

    在互联网相关的业务场景中,为了解决数据存储层面的扩展问题,满足线上的并发性能需求,经常会对数据库(如mysql)进行分库分表操作.常见的分表方案都是基于水平拆分,如基于range分段拆分,或者基于ha ...

  5. 浅谈数据库优化方案--表和SQL

    1.数据类型的选择 1.字段最好设置为非空.若字段为char(8),即便是NULL也会现有8个字符的空间. 2.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能, ...

  6. php隐藏表单提交表单提交表单_浅谈php提交form表单

    处理GET请求 实现的功能是输入姓名后页面显示"Hello XXX" 创建html文件hello.html: 欢迎 创建PHP文件hello.php: /** * Created ...

  7. 吉米_王:浅谈链表和顺序表

    最近在给班里学生串讲前面学的数据结构知识: 在串讲过程中暴露不少问题,例如:顺序表和链表在操作复杂度方面,出现很多学生不能理解的情况,特别在秘密花园再梳理一下,此篇博文仅送给有缘人: 链表部分:时间关 ...

  8. 用户数据表设计借鉴 浅谈数据库用户表结构设计,第三方登录 基于 Token 的身份验证

    最近对用户数据表的设计比较感兴趣,看到了两篇比较好的文章. 浅谈数据库用户表结构设计,第三方登录 转载于: https://www.cnblogs.com/jiqing9006/p/5937733.h ...

  9. 第三方登录mysql表_浅谈数据库用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

最新文章

  1. 神经网络通过研究任意单个星系,揭示整个宇宙的组成
  2. ExecutorService(任务调度器)详解
  3. GitHub热门教程:100天搞定机器学习(中文版)
  4. 【大学课程】高数基础知识点
  5. 宏基笔记本4740 Linux,宏基4740g拆机【教程详解】
  6. 微信小程序研发问题梳理:翻页:下拉:缓存:canvas:富文本:分享
  7. Android之TrafficStats实现流量实时监测
  8. python csv文件读取行列_使用Numpy读取CSV文件,并进行行列删除的操作方法
  9. spring 通过id 查询数据_Spring 数据初始 H2 后进行数据查询提示 Schema not found 错误...
  10. 2014025675 《嵌入式系统程序设计》第七周学习总结
  11. [ZT]用CSC.exe来编译Visual C#的代码文件,解释CSC参数和开关的具体作用
  12. 软件测试技术案例教程 李海生 cd 源码 source,软件测试技术案例教程
  13. 检察机关认定河北涞源反杀案为正当防卫 决定不起诉女生父母
  14. es java 模糊查询_java使用elasticsearch进行模糊查询之must使用-项目中实际使用
  15. 3.0-LAB1-C1 实验
  16. vue3的组件传递之子传父(项目实操)
  17. C++经典算法题-排列组合
  18. 如何用Python检验线性回归的假设是否满足
  19. 没想到,错误的单例写法,让 RabbitMQ 大量超时导致程序挂死!
  20. mysql my.cnf 不生效_MySQL修改my.cnf配置不生效的解决方法

热门文章

  1. Java高级框架——Spring学习
  2. http协议之response响应详解
  3. 网络营销人应具备的五大思维
  4. P93-好玩游戏的物品清单
  5. dw实现html实时更新,DW在HTML5 响应式代码实现完成
  6. 262-Trips and Users
  7. [转] 使用 DHTML 与 XML 制作 Ajax 幻灯片
  8. linux三剑客试题,Linux三剑客(grep、sed、awk)详解
  9. 车载网络测试 - UDS诊断篇 - 诊断RID/IOID($2F/$31)
  10. 【2020年4月9我和小峰子的聊天】