如何使用数据字典


文章目录

  • 如何使用数据字典
    • 使用场景 :
    • 解决方案 :
      • 简单解决:
      • 企业级理解:
      • 数据字典是什么:
      • 使用数据字典的优点:

使用场景 :

在平时开发的过程中,特别是在遇到表单时候,我们经常需要为前端提供一些下拉选项的信息,这时候我们需要为前端提供下拉菜单的信息,让前端进行渲染。同时我们在数据库中存储的只可能是对应的编码,例子如下:

这里我们可以看到在搜索栏中,有一个下拉菜单。如果前端直接将value值写死在前端代码中,那么就破坏了低耦合原则,如果未来清查状态有增加或者管理员想要修改,那么需要修改前端代码,会带来非常大的麻烦


解决方案 :

简单解决:

对字段值比较稳定,不存在比较大的变动,同时对应的分类数不超过3个,例如:性别(用0表示男,1表示女),我们在数据库中呢可以用char(1)这种数据类型来进行存储,同时在pdm文件中注释标明对应表示的含义


企业级理解:

对于字段数目比较多,情况复杂的情况(如下),我们考虑通过设计数据字典来解决这类问题。


数据字典是什么:

直接附上数据库设计
这里我们可以看到,某一个下拉框的数据通过标识字段dict_type存储,查询时如果我们需要某一个下拉框的数据,我们只需要获得该标识字段,同时进入数据字典查询即可,其中dict_label就是前端显示的文字。同时我们还添加了一些用于前端页面显示的字段,比如说有些选项需要高亮显示,或者设置一些默认值,我们可以通过在渲染时判断该关键值比如途中is_dafault 是否为N,或者绑定css字段中的class字段来实现样式的变换,这样通过接口返回给前端list时,前端便可以直接获取清晰明了的字段id,含义,同时还可以进行一些特殊样式的渲染等。


我的表字段设计:

字典数据表

字典类型表


其他人的设计:
数据字典设计常用表(通用)

使用数据字典的优点:

一, 在一定程度上,通过系统维护人员即可改变系统的行为(功能),不需要开发人员的介入。使得系统的变化更快,能及时响应客户和市场的需求。

二, 提高了系统的灵活性、通用性,减少了主体和属性的耦合度

三, 简化了主体类的业务逻辑

四, 能减少对系统程序的改动,使数据库、程序和页面更稳定。特别是数据量大的时候,能大幅减少开发工作量

五, 使数据库表结构和程序结构条理上更清楚,更容易理解,在可开发性、可扩展性、可维护性、系统强壮性上都有优势。


附上数据库表sql:

/*==============================================================*/
/* Table: sys_dict_data                                         */
/*==============================================================*/
create table sys_dict_data
(dict_code            int(11) not null auto_increment comment '字典编码',dict_sort            int(4) default 0 comment '字典排序',dict_label           varchar(100) default '' comment '字典标签',dict_value           varchar(100) default '' comment '字典键值',dict_type            varchar(100) default '' comment '字典类型',css_class            varchar(100) default '' comment '样式属性(其他样式扩展)',list_class           varchar(100) default '' comment '表格回显样式',is_default           char(1) default 'N' comment '是否默认(Y是 N否)',status               char(1) default '0' comment '状态(0正常 1停用)',create_by            varchar(64) default '' comment '创建者',create_time          datetime default NULL comment '创建时间',update_by            varchar(64) default '' comment '更新者',update_time          datetime default NULL comment '更新时间',remark               varchar(500) default '' comment '备注',primary key (dict_code)
)
ENGINE=InnoDB AUTO_INCREMENT=410 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='字典数据表';alter table sys_dict_data comment '字典数据表';/*==============================================================*/
/* Table: sys_dict_type                                         */
/*==============================================================*/
create table sys_dict_type
(dict_id              bigint(20) not null auto_increment comment '字典主键',dict_name            varchar(100) default '' comment '字典名称',dict_type            varchar(100) default '' comment '字典类型',status               char(1) default '0' comment '状态(0正常 1停用)',create_by            varchar(64) default '' comment '创建者',create_time          datetime default NULL comment '创建时间',update_by            varchar(64) default '' comment '更新者',update_time          datetime default NULL comment '更新时间',remark               varchar(500) default NULL comment '备注',primary key (dict_id),unique key dict_type (dict_type)
)
ENGINE=InnoDB AUTO_INCREMENT=131 DEFAULT CHARSET=utf8 COMMENT='字典类型表';alter table sys_dict_type comment '字典类型表';

参考:

数据字典
数据字典设计常用表(通用)

数据库设计之数据字典的使用与设计相关推荐

  1. 关于数据字典的理解与设计

    数据字典 数据字典是一种通用的程序设计方法.可以认为,不论什么程序,都是为了处理一定的主体,这里的主体可能是人员.商品(超子).网页.接口.数据库表.甚至需求分析等等.当主体有很多的属性,每种属性有很 ...

  2. mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...

    一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...

  3. jsp mysql书店源码_使用jsp数据库mysql实现网上购物书店课程设计

    [实例简介] 使用jsp数据库mysql实现网上购物书店课程设计 [实例截图] [核心代码] 213eb755-0d07-4324-a55e-76878ddbac95 └── Myshop ├── s ...

  4. 数据库设计中常见表结构的设计技巧(转)

    2019独角兽企业重金招聘Python工程师标准>>> 一.树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类, ...

  5. 案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127669684 长期持续项目技术分享,有专业Qt需求请 ...

  6. 【自建分布式数据库详细指南】(四)设计:CITUS分布式数据仓库OLAP/OLTP的架构选择及PG数据库优化方法策略

    关于数据库的整体设计,很少有书籍专门试讲,因为这需要博大精深的理论水平以及阅历丰富的工作经验,但往往这两者不可兼得,在设计数据库时需要考虑多方面的因素,如需求,数据体量,数据库架构,硬件环境,成本.这 ...

  7. 数据库总结(四):表设计之关联关系

    数据库总结(一):基本SQL 数据库总结(二):基本查询 数据库总结(三):分组,联结 数据库总结(四):表设计之关联关系 数据库总结(五):视图,约束,索引 表设计之关联关系 一对一 什么是一对一: ...

  8. .NET框架设计—常被忽视的框架设计技巧

    阅读目录: 1.开篇介绍 2.元数据缓存池模式(在运行时构造元数据缓存池) 2.1.元数据设计模式(抽象出对数据的描述数据) 2.2.借助Dynamic来改变IOC.AOP动态绑定的问题 2.3.元数 ...

  9. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

最新文章

  1. CentOS 6.5 64位 安装Nginx, MySQL, PHP
  2. python读取有中文文件时的报错处理
  3. 2012年初的10个绝对让你惊喜的jQuery插件
  4. 易混淆的c++知识点
  5. 如何给视频中插入视频,字幕,以及去掉前后广告
  6. centos7.4进入单用户模式
  7. 要求将数组中的0项去掉,将不为0的值存入一个新的数组,
  8. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
  9. urllib.error
  10. ping来自192.168.1.1的回复:无法访问目标主机(丢包等网络问题)
  11. JSP的优势与劣势浅析
  12. 打包Hololens2 VS error MSB3774: 找不到 SDK“WindowsMobile, Version=10.0.19041.0”解决办法
  13. epub与mobi转换工具
  14. 【HTML 教程系列第 4 篇】HTML 的注释怎么写?
  15. 数据挖掘算法学习及应用场景
  16. 2021暑假Leetcode刷题——Two Pointers(2)
  17. 教你炒股票26:市场风险如何回避
  18. QQ音乐JS逆向分析参数,爬它,多图预警
  19. 计算机蓝牙快捷键,如何打开Windows10笔记本电脑的蓝牙,快捷键打开笔记本电脑的蓝牙!...
  20. 华硕x450jn拆机_华硕X450C系列笔记本怎么拆机清灰?

热门文章

  1. ROS学习----依据ROS入门教程,整理的ROS命令
  2. keil c51如何添加STC芯片的固件库文件
  3. 多边形区域填充算法--扫描线种子填充算法
  4. 2022新版加壳工具-支持.NET虚拟化加密
  5. 微信小程序遇到的问题及解决办法
  6. Go标准库syscall调用dll
  7. 华虹U盾(红白那种)win7旗舰版64位驱动解决方案
  8. IC后端物理实现自动化工具 OpenROAD系列(三)ibex-32位2级流水线 RISC-V CPU 的物理实现
  9. JMeter学习笔记——JMeter关联
  10. Vissim全网最全学习资料入口