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

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

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

为什么字典表?

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

解决方案

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

具体设计

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

注意

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

优化

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

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

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

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


相关推荐

  • HTML5:移动端开发入门[通俗易懂]

    HTML5:移动端开发入门[通俗易懂]HTML5:移动端开发入门一、前言常见的移动端开发分为移动版网站和响应式设计。移动端开发可以让技术人员专注于移动端的页面优化,而无需在意桌面版的兼容,但页面一旦改动内容,维护成本就翻倍了;响应式设计让开发人员只需维护一份项目,节省开发和维护成本,不过缺点是需要做好移动端和桌面端的兼容,也十分考验页面设计。两种开发方式孰强孰弱,暂无定论,本博客主要探讨一下移动端开发的技巧。二、移动端开发技巧1.Viewport设置传统桌面端网站的显示窗口往往都是在1024X768的分

    2022年6月21日
    30
  • 解决pycharm汉化后无法打开设置

    解决pycharm汉化后无法打开设置转自:https://www.52pojie.cn/thread-728816-1-1.html由于操作相对复杂,再次小白整理了一下,下载压缩包内有使用方法,一目了然链接:https://pan.baidu.com/s/1o0jcRlPy4AuNAtfsk2wvHw提取码:4l7j…

    2022年5月16日
    41
  • 你没见过的中文编程工具,用中文开发android安卓应用,安卓开发的初体验![通俗易懂]

    如果你对中文开发有一定的了解,那么你一定会知道易语言。易语言是仿VB制作的一款中文编程工具。它可以用来开发Windows软件。那有没有用于android安卓开发的中文编程工具呢?有!那就是猎码安卓中文开发工具        小编身为一个程序员,在使用猎码后,感觉还是不错的!  &nb…

    2022年4月14日
    101
  • yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件

    yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件###引入Maven依赖“`htmlcom.yahoo.platform.yuiyuicompressor2.4.8“`Java代码“`javapackagecom.itshidu.jeelite.common.web;importcom.itshidu.jeelite.common.util.Compres…

    2022年7月18日
    8
  • Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]

    Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]HideReferenceObjectPickerAttribute特性:隐藏非Unity序列化引用类型属性上方显示的多态对象选择器。usingSirenix.OdinInspector;usingSystem.Collections.Generic;usingUnityEngine;publicclassHideReferenceO…

    2022年7月21日
    10
  • SparkIV「建议收藏」

    SparkIV「建议收藏」SparkIVSparkIV是知名游戏GTA4的一款游戏资源读取/导入/导出/编辑/修改的修改软件。很多玩家使用SparkIV为GTA4安装车辆MOD,人物MOD,武器MOD等。不过Spar

    2022年8月5日
    17

发表回复

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

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