数据库设计之数据字典的使用与设计
如何使用数据字典
文章目录
- 如何使用数据字典
- 使用场景 :
- 解决方案 :
- 简单解决:
- 企业级理解:
- 数据字典是什么:
- 使用数据字典的优点:
使用场景 :
在平时开发的过程中,特别是在遇到表单时候,我们经常需要为前端提供一些下拉选项的信息,这时候我们需要为前端提供下拉菜单的信息,让前端进行渲染。同时我们在数据库中存储的只可能是对应的编码,例子如下:
这里我们可以看到在搜索栏中,有一个下拉菜单。如果前端直接将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 '字典类型表';
参考:
数据字典
数据字典设计常用表(通用)
数据库设计之数据字典的使用与设计相关推荐
- 关于数据字典的理解与设计
数据字典 数据字典是一种通用的程序设计方法.可以认为,不论什么程序,都是为了处理一定的主体,这里的主体可能是人员.商品(超子).网页.接口.数据库表.甚至需求分析等等.当主体有很多的属性,每种属性有很 ...
- mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...
一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...
- jsp mysql书店源码_使用jsp数据库mysql实现网上购物书店课程设计
[实例简介] 使用jsp数据库mysql实现网上购物书店课程设计 [实例截图] [核心代码] 213eb755-0d07-4324-a55e-76878ddbac95 └── Myshop ├── s ...
- 数据库设计中常见表结构的设计技巧(转)
2019独角兽企业重金招聘Python工程师标准>>> 一.树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类, ...
- 案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127669684 长期持续项目技术分享,有专业Qt需求请 ...
- 【自建分布式数据库详细指南】(四)设计:CITUS分布式数据仓库OLAP/OLTP的架构选择及PG数据库优化方法策略
关于数据库的整体设计,很少有书籍专门试讲,因为这需要博大精深的理论水平以及阅历丰富的工作经验,但往往这两者不可兼得,在设计数据库时需要考虑多方面的因素,如需求,数据体量,数据库架构,硬件环境,成本.这 ...
- 数据库总结(四):表设计之关联关系
数据库总结(一):基本SQL 数据库总结(二):基本查询 数据库总结(三):分组,联结 数据库总结(四):表设计之关联关系 数据库总结(五):视图,约束,索引 表设计之关联关系 一对一 什么是一对一: ...
- .NET框架设计—常被忽视的框架设计技巧
阅读目录: 1.开篇介绍 2.元数据缓存池模式(在运行时构造元数据缓存池) 2.1.元数据设计模式(抽象出对数据的描述数据) 2.2.借助Dynamic来改变IOC.AOP动态绑定的问题 2.3.元数 ...
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
最新文章
- CentOS 6.5 64位 安装Nginx, MySQL, PHP
- python读取有中文文件时的报错处理
- 2012年初的10个绝对让你惊喜的jQuery插件
- 易混淆的c++知识点
- 如何给视频中插入视频,字幕,以及去掉前后广告
- centos7.4进入单用户模式
- 要求将数组中的0项去掉,将不为0的值存入一个新的数组,
- Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
- urllib.error
- ping来自192.168.1.1的回复:无法访问目标主机(丢包等网络问题)
- JSP的优势与劣势浅析
- 打包Hololens2 VS error MSB3774: 找不到 SDK“WindowsMobile, Version=10.0.19041.0”解决办法
- epub与mobi转换工具
- 【HTML 教程系列第 4 篇】HTML 的注释怎么写?
- 数据挖掘算法学习及应用场景
- 2021暑假Leetcode刷题——Two Pointers(2)
- 教你炒股票26:市场风险如何回避
- QQ音乐JS逆向分析参数,爬它,多图预警
- 计算机蓝牙快捷键,如何打开Windows10笔记本电脑的蓝牙,快捷键打开笔记本电脑的蓝牙!...
- 华硕x450jn拆机_华硕X450C系列笔记本怎么拆机清灰?