数据字典表设计「建议收藏」

为什么字典表?在实际项目开发过程中常遇到下面场景:某些变量在多个地方使用,而且一般是固定的,但是随着系统升级和后期变化,可能需要改变,如果这些变量写死在代码里面将会变得难以维护,所以要将其从代码中抽离出来。一般的业务系统客户端与用户交互的时候都会使用下拉框组件,对于某些比较固定的值的下拉组件的数据来源一般都是比较固定的一类数值。解决方案有的做法是使用枚举或者Constants常量类来实现,这种情况下在量少的前提是没问题的,而且一旦需要修改就得修改源码;随着系统的开发拓展,后期将无法维护,甚至命名困难

大家好,又见面了,我是你们的朋友全栈君。

为什么字典表?

在实际项目开发过程中常遇到下面场景:某些变量在多个地方使用,而且一般是固定的,但是随着系统升级和后期变化,可能需要改变,如果这些变量写死在代码里面将会变得难以维护,所以要将其从代码中抽离出来。
一般的业务系统客户端与用户交互的时候都会使用下拉框组件,对于某些比较固定的值的下拉组件的数据来源一般都是比较固定的一类数值。

解决方案

有的做法是使用枚举或者Constants常量类来实现,这种情况下在量少的前提是没问题的,而且一旦需要修改就得修改源码;随着系统的开发拓展,后期将无法维护,甚至命名困难等问题。
所以通常把字典放在数据库,这样后期的维护变更就比较简单,也可以在不用修改代码的情况下修改配置。还有,对于某些固定的数据字典(例如,星期,月份等)不允许修改。
但是,放在数据库又有着频繁访问数据库的问题,这不是我们希望的,这时候通常做法就是加缓存,降低访问数据库的频率。

具体设计

通常分成两张表来实现,一个是字典类型表,一个是字典表:
在这里插入图片描述

注意

  • 字典类型应该是不可编辑的,因为字典类型通常会和具体代码实现紧密耦合,如果非要进行编辑的话需要考虑到对代码的影响以及如何保证修改之后系统正常工作
  • 字典分可编辑与不可编辑,所以在提供字典管理的时候需要注意fixed字段,针对固定的字典不提供编辑功能
  • 字典与系统参数不要混为一谈,字典通常用于一类的数据,一组具有相同含义的数值(例如,供客户端下拉选择的枚举);而系统参数是针对某种配置或者某种系统常量的存在。

优化

数据字典数据应该存放在 redis 中,减少与数据库的交互次数,提高响应速度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127126.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • web服务:Nginx和Apache的区别

    web服务:Nginx和Apache的区别一、Nginx特点1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。  …

    2022年6月1日
    38
  • linux_c之ioctl的FIONREAD参数

    linux_c之ioctl的FIONREAD参数ioctl是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。FIONREAD就是返回缓冲区中有多少字节;ioctl(keyFd,FIONREAD,&b)得到缓冲区里有多少字节要被读取,然后将字节数放入b里面。接下来就可以用read了,read(keyFd,

    2022年7月23日
    19
  • js数组拼接的四种方法[通俗易懂]

    js数组拼接的四种方法[通俗易懂]vara=[1,2,3,4,5,6];varb=["foo","bar","fun"];最终的结果是:[1,2,3,4,5,6,"foo","bar","fun"]方法1:concatc=a.concat(b);c是新数组,此时内存使用有,c,a,b三个数组。方法2:

    2022年6月14日
    38
  • 我的“网管工具箱”「建议收藏」

    我的“网管工具箱”「建议收藏」还记得上次看了小王童鞋的博文,小王童鞋晒了一下他的网管工具箱。今天突发奇想,也来晒一下我的网管工具箱,不过和小王童鞋不一样的是,我晒的是“软件工具箱”,也就是日常必备的一些软件啦。       1.Windows清理助手       不得不说Windows清理助手做得非常棒,清理能力超强。其实早些时候我也用360安全卫士的,不过随着安全卫士越来越臃肿,还是舍弃了,用上了Wi

    2022年10月5日
    1
  • 自己搭建个人文件服务器_内网设置微信代理

    自己搭建个人文件服务器_内网设置微信代理背景:因为微信公众平台支持的后台服务器只允许为80端口,而本地服务器开发程序与在VPS上部署程序运行,每次无论是使用scp还是ftp进行文件传输无疑是低效的,因此需要一种方法可以方便的在本地服务器调试微信公众平台。有的使用,ngrok,此方法是通过ssh反向代理达到目的。1.在本地服务器通过命令:ssh–fNR8181:localhost:80user@host.com–p22–g达到…

    2022年8月21日
    9
  • 强化学习(Q-Learning,Sarsa)

    强化学习(Q-Learning,Sarsa)ReinforcementLearning监督学习–>非监督学习–>强化学习。监督学习:拥有“标签”可监督算法不断调整模型,得到输入与输出的映射函数。非监督学习:无“标签”,通过分析数据本身进行建模,发掘底层信息和隐藏结构。但是1.标签需要花大量的代价进行收集,在有些情况如子任务的组合数特别巨大寻找监督项是不切实际的。2.如何更好的理解数据,学习到具体的映射而不仅仅是数据的底…

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号