https://blog.csdn.net/weixin_42476601/article/details/84261992
1. 什么是数据字典
数据字典存储有关数据的来源、说明、与其他数据的关系、用途和格式等信息,它本身就
是一个数据库,存储“关于数据项的数据”。数据字典是个指南,它为数据库提供了“路线图”,
而不是“原始数据”。换句话说,数据字典通常是指数据库中数据定义的一种记录,类似一个
数据库的数据结构,但其内容要比数据库的数据结构描述丰富得多(Malamud, 1989)。
在收集有关数据信息,建立数据库的初始阶段,必须建立数据项的命名约定,必须统一不同部
门、不同个人之间对共同关心的数据的内涵、来源和命名的观念。这个过程要涉及数据监管人、
用户和数据库开发人员,是一个需要反复多次的过程。这个统一的命名约定,及其附带的说明,
就是数据字典。
数据库的重要部分是数据字典。它存放有数据库所用的有关信息,对用户来说是一组只读的表。
数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。
2. 建立数据字典的目的
建立数据字典有以下几个目的:
1)提高开发效率,降低研制成本。数据字典是数据库开发者、数据监管人和用户之间的共同
约定,是系统说明书的一个重要组成部分。一个统一的数据字典有助于开发者建立数据模型
以及程序和数据库之间的数据转换接口,为规范化设计和实施数据管理系统铺平了道路。
2)促进数据共享,提高数据的使用效率。通过数据字典,用户可以方便地知道每项数据的意
义,了解数据的来源和使用方法,从而帮助用户迅速地找到所需的信息,并按照正确的方法
使用数据。
3)控制数据的使用。在某些特定的场合,可以通过对数据字典的控制达到控制数据使用的目的。
3. 数据字典的内容(了解)
一个完整的数据字典至少应当包括以下内容:
数据集(系统)名称 数据集(系统)的正式名称
数据库名称 数据库文件的名称
数据名称 数据项的名称
数据存储名称 数据字段的名称
数据类型 数据的类型,如数字类型等
数据说明 关于数据含义的说明
数据存储长度 在计算机中数据存储的空间,用字节(BYTE)表示
单位 数据的测量单位
代码说明 使用的代码体系及编码规则
精密度 有效数字最低位数的位置
准确度 有效数字位数
数据的下限 数据合理的下限
数据的上限 数据合理的上限
获得数据的手段 数据测量的方法或引用的来源
时间和/或环境 获得数据的时间和/或环境
数据的例子 一个数据的实例
备注 其他要补充的说明
4. 数据字典的建立过程(了解)
建立数据库管理系统的第一步是用户需求分析。通过系统开发人员和未来用户的相互交
流,用户需求分析的结果被反映在《系统功能说明书》里。《系统功能说明书》详细地列
出原始数据的内容、格式和来源,并且对数据处理的过程给出详细的描述。数据处理后产
出的信息应当满足最终用户的信息需求。这个说明书只说明拟建立的系统的功能和处理能
力,而不讨论怎样用硬件、软件、网络以及设备之间的连接等具体手段实现这些功能。
在这个过程中,开发人员要和不同的用户部门进行多次的讨论,可能还要征求有关的
同行业专家的意见,找到不同部门之间对数据的用途、相互关系和意义的不同理解,辨认
出数据元的同义词。对于输出数据,一方面要考虑现有数据的状况、测量手段和数据处理
手段,另一方面还应当考虑用户对产出信息的要求,如有必要,需要对数据获取和处理的
手段进行调整。
在用户需求分析阶段,对原始数据和产出数据进行描述时,不必注意数据在计算机中的
具体的存储方式和数据处理的系统。但随着设计过程的进展,必须将数据的概念和逻辑与
数据模型和实际的实现方式联系起来。这时,数据在系统中的标识符(数据项或字段名称)
、存储类型(数据项或字段类型)和存储空间(数据项或字段长度)就必须确定下来,
以达到数据输入、存储、显示、交换和处理等功能模块的需要。
在设计阶段结束时,把系统输入和输出数据的说明和存储信息集中起来,使有关人员
在进行涉及这些数据的工作时,有一个统一的概念和理解,这样就形成了数据字典。
在系统完成之前,数据字典帮助系统开发人员理解真实世界,规范数据系统内数据处理
的过程,使系统分析员、系统程序员、应用程序员和数据监管人员之间有共同的语言;在
系统完成以后,数据字典帮助用户理解数据系统的功能,各项输入输出数据的意义,使用
户、数据监管人和审计人员有共同语言,促进数据的使用和流通,达到数据共享的目的。
数据字典的用例:(理解: 数据字典中的数据是管理员设计好,填写的,一般不会更改的数据,根据类型归类,并同一类型的typeCode相同,同一类型有包含不同的valueId,即对应不同的valeName,可以理解为归类typeCode和valueId的对应表,可以根据需要查出对应type的对应value)
1 数据字典
1.1 什么是数据字典
将如下这些具有相同类型的配置项,配置到系统的数据字典表中,方便系统维护,由超级管理员统一在后台进行数据字典维护,如果用户需求要增加变更配置项,只需要修改数据字典表记录即可,不需要修改代码。
1.2 数据字典需求
相同类型的配置项:(例如:医院类型、药品类型)
在系统中创建一个张记录数据字典名称类型 数据字典类型表记录数据类型(例如用户状态)
创建一张表记录数据字典明细:(例如用户状态为正常 暂停)
数据字典明细表
将上边变化灵活的配置项叫做:“普通配置项”
将上边固定的配置项(每个配置顶都有一个代码):“业务代码”
1.3 数据字典表结构
字典类型表DICTTYPE:
记录数据字典类型
字典明细表DICTINFO:
记录数据字典明细
字典明表中如何存储普通配置项和业务代码。
普通配置项存储:
普通配置项名称存储在DICTINFO表中info字段
普通配置项对应的类型id存储在DICTINFO表中TYPECODE
查询普通配置顶:
业务代码存储:
业务代码对应的名称存储在DICTINFO表中info字段
业务代码对应的类型id存储在DICTINFO表中TYPECODE
业务代码存储在DICTINFO表中DICTCODE(是和普通配置顶的区别)
业务代码查询:
1.4 数据字典使用
1、在页面上的下拉框中显示业务代码或普通配置
比如:在系统用户查询页面,查询条件就是用户类型,用户类型不能在jsp上硬编码,需要在action方法中取出用户类型所有配置项,在jsp页面动态遍历。
2、在查询业务表需要关联查询出业务代码对应的名称
在查询业务表时,根据业务代码,关联查询出代码对应的名称。
关联查询字典明细时指定业务代码和类型id
3、在查询业务表需要关联查询出普通配置项所对应的名称
关联查询字典明细时指定明细表的主键
1.5 小结
普通配置项:对业务数据进行简单的归类,这些归类受用户要求变化较灵活,将这些配置项作普通配置项配置数据字典表。
业务代码:系统运行所必须的,在系统设计时定义的固定代码,这些代码可能需要在程序代码进行硬编码。
1.6 数据字典在系统中应用
1.6.1 用户查询页面用户类型下拉框
用户类型:属于业务代码
获取用户类型下所有明细:
从数据字典明细表查询,根据typecode查询
Action:
修改用户查询页面方法,调用systemConfigService查询用户类型信息,将用户类型列表信息传入页面。
// 用户查询页面
@RequestMapping("/queryuser")
public String queryuser(Modelmodel) throwsException {
// 将页面所需的数据取出传入页面
List<Dictinfo>groupList =systemConfigService.findDictinfoByType("s01");
model.addAttribute("groupList",groupList);
return "/base/user/queryuser";
}
页面:
将用户类型下拉框值,改成遍历groupList列表。
<TD class="left">用户类型:</TD>
<td><select name="sysuserCustom.groupid">
<option value="">请选择</option>
<!-- <option value="1">卫生局</option>
<optionvalue="2">卫生院</option>
<optionvalue="3">卫生室</option>
<optionvalue="4">供货商</option>
<optionvalue="0">系统管理员</option> -->
<c:forEach items='${groupList}' var="dictinfo">
<option value="${dictinfo.dictcode}">${dictinfo.info}</option>
</c:forEach>
</select>
</TD>
1.6.2 用户查询列表中用户类型列
Dao:
修改用户查询列表mapper,添加一列需要关联用户类型的代码查询代码对应的名称。
页面:
修改datagrid的列定义,
{
field : 'groupname',//对应json中的key
title : '用户类型',
width : 120,
/* formatter : function(value, row,index) {//通过此方法格式化显示内容,value表示从json中取出该单元格的值,row表示这一行的数据,是一个对象,index:行的序号
if(value =='1'){
return "卫生局";
}else if(value =='2'){
return "卫生院";
}else if(value =='3'){
return "卫生室";
}else if(value =='4'){
return "供货商";
}else if(value =='0'){
return "系统管理员";
}
} */
}
普通配置项下拉框
查询出普通配置项列表,
页面中下拉框遍历list(option的value是${dictinfo.id})
<c:forEach items="${list}" var="dictinfo">
<option value="${dictinfo.id }">${dictinfo.info}</option>
</c:forEach>
————————————————
版权声明:本文为CSDN博主「越来越好ing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42476601/article/details/84261992
- 空白目录1
- RBAC
- RBAC权限模型[完整]
- 你知道权限管理的RBAC模型吗?
- rbac 一个用户对应多个账号_如何设计一个强大的权限系统
- Postman 快速使用(设置环境变量)
- postman的使用方法详解!最全面的教程
- Postman常用的几个功能
- ThinkPHP项目总结
- thinkphp5 递归查询所有子代,查询上级,并且获取层级
- PHP原生项目之留言板
- 智慧校园
- PHP如何实现订单的延时处理详解
- VUE
- const {data:res} = await login(this.loginForm)
- Vue中的async和await的使用
- PHP实现消息推送(定时轮询)
- tp5 计算两个日期之间相差的天数
- 使用jquery的ajax方法获取下拉列表值
- jQuery实现select下拉框选中数据触发事件
- SetFocus 方法
- 快来了解下TP6中的超级函数app()!
- PHP socket 服务器框架 workerman
- 程序员如何才能成为独立开发者?
- PHP 错误处理
- php面向对象类中的$this,static,final,const,self及双冒号 :: 这几个关键字使用方法。
- 小白教你玩转php的闭包
- 关于TP6项目搭建的坑(多应用模式)
- ThinkPHP6.0 与5.0的差别及坑点
- axios在vue项目中的使用实例详解
- php中的类、对象、方法是指什么
- 聊一聊PHP的依赖注入(DI) 和 控制反转(IoC)
- 深入理解控制反转(IoC)和依赖注入(DI)
- Private,Public,Protected
- ThinkPHP5(目录,路径,模式设置,命名空间)
- 在 ThinkPHP6 中使用 Workerman
- 介绍thinkphp lock锁的使用和例子
- php中_initialize()函数与 __construct()函数的区别说明
- api接口数据-验证-整理
- api接口数据-验证-整理【续】
- TP6容易踩得坑【原创】
- TP6的日志怎么能记录详细的日志?
- 是否需要模型分层
- PHP面试题 全网最硬核面试题来了 2021年学习面试跳槽必备(一)
- MySQL单表数据量过千万,采坑优化记录,完美解决方案
- MySql表分区(根据时间timestamp)
- MySQL大表优化方案
- 闲言碎语
- 数据库外键的使用
- 深入理解thinkphp、laravel等框架中容器概念
- vue做前端,thinkphp6做后台,项目部署
- 简单MVC架构的PHP留言本
- TP5里面extend和vendor的区别
- 在mysql数据库中制作千万级测试表
- MySQL千万级的大表要怎么优化
- ThinkPHP关联模型操作实例分析
- lcobucci/jwt —— 一个轻松生成jwt token的插件
- RESTful API 设计指南
- MySQL如何为表字段添加索引
- ThinkPHP6.0快速开发手册(案例版)
- tp5 静态方法和普通方法的区别
- 数据字典功能
- mysql中的数据库ID主键的设置问题
- 基于角色的权限控制(django内置auth体系)
- RBAC系统经典五张表
- 什么是接口文档,如何写接口,有什么规范?
- thinkphp5.0自定义验证器