数据库——数据字典是什么?
一.数据字典以及使用场景:
<User表>
User表,User主体有很多属性,比如证件(身份证、居住证、港澳通行证...)地区(河北、河南、北京...)等,然后表建好了,数据也填进去了,项目代码也敲几万行。但是有一天,客户说这个“身份证”表述不够官方,要改成“居民身份证”比较好,所以作为这个项目开发人员,你要把代码里和数据库中所有的“身份证”改成“居民身份证”,这工作量估计很让人抓狂。
但是如果采用下边的建表方式,是不是就不会出现这种问题呢,将证件新建一个属性表,将属性值和主体分离,主体表只保存属性的的代码。这就是一种数据字典。
<user表> <证件表>
现在,大家应该对数据字典概念有个基本的理解了,数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由数据库管理系统自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。
二.数据字典的两种形式
- 第一种:《主体表》里包含主体和属性代码,《属性表》里包含属性代码和属性Value,不同属性分别建表。
- 第二种:《主体表》里仅包含主体,《系统代码分类表》里存储属性标识和属性名称,《系统代码表》里包含所有属性代码、属性标识和属性Value,《属性表》是《主体》和《系统代码表》的关系表,包含属性id,主体id,属性代码。
举例:
第一种字典设计:
<User表> <证件表> <身份表>
第二种字典设计:
<User表> <系统代码分类表> <系统代码表> <属性表>
两种设计方式分析:
1.第一种设计方式:由于属性id是存储在主体表里的,属性的数量是不变的,而属性取值的数量可以是变化的。但是如果该主体的属性非常多的话,就需要建很多的属性表,在开发中还要设计很多属性类,那当想要取得一条主体的完全数据时,那将进行几十个表的联接(join)操作。性能耗损严重。当属性的数量不多时,用第一种数据字典即可。
2.第二种设计方式:由于这种设计方式属性和主题表是分开的,所以属性的数量是可变的,而属性取值的数量可以是变化的。引入《系统代码分类表》和《系统代码表》,也解决了第一种设计方式的局限性。
三.数据字典的优缺点
优点:
一、在一定程度上,通过系统维护人员即可改变系统的行为(功能),不需要开发人员的介入。使得系统的变化更快,能及时响应客户和市场的需求。
二、提高了系统的灵活性、通用性,减少了主体和属性的耦合度
三、简化了主体类的业务逻辑
四、能减少对系统程序的改动,使数据库、程序和页面更稳定。特别是数据量大的时候,能大幅减少开发工作量
五、使数据库表结构和程序结构条理上更清楚,更容易理解,在可开发性、可扩展性、可维护性、系统强壮性上都有优势。
缺点:
一、数据字典是通用的设计,在系统效率上会低一些。
二、程序算法相对复杂一些。
三、对于开发人员,需要具备一定抽象思维能力,所以对开发人员的要求较高。
数据库——数据字典是什么?相关推荐
- mysql导出数据库数据字典
mysql导出数据库数据字典,执行如下查询导出到excel即可 SELECT tc.TABLE_SCHEMA 数据库, tc.TABLE_NAME 表名, tt.TABLE_COMMENT, tc.C ...
- mysql 数据字典 php_php生成mysql数据库数据字典的程序代码
php生成mysql数据库数据字典的程序代码,比较实用,具体代码如下:header('Content-type:text/html;charset=utf-8'); /** * 生成mysql数据字典 ...
- 很好用的数据库数据字典【可导出为word , excel文件】
<?php /*** 生成mysql数据字典*/ header("Content-type:text/html;charset=utf-8"); // 配置数据库 $data ...
- oracle数据库数据字典应用
oracle数据字典 数据字典是由oracle服务器创建和维护的一组只读的系统表.数据字典分为两类:一是基表,二是数据字典视图. 数据字典视图包括用户名.用户权限.对象名.约束和审计等信息,是通过运行 ...
- 教程03-微擎的数据库数据字典
微擎框架安装好,没有安装任何插件模块,总共有139张表格.现在分别介绍下这些表. 在介绍这些表的过程中,表前缀可以忽略. 1. account 平台账号表(公众号.小程序.PC等) 字段名 数据类型 ...
- 数据库——⽣成数据字典(导出word文档)
文章目录 背景 首先需要安装两个软件 操作步骤 背景 很多时候,在⼀个项⽬的开始或者结束时,整理项⽬开发⽂档.⽤户⼿册.交付⽂档时都会在⽂档中包含数据库的说明,主要体现形式就是数据字典,这里我把详细的 ...
- Oracle 12c CDB数据库中数据字典架构
Oracle 12c CDB数据库中数据字典架构 使用sys用户和普通用户实验结果不同: SELECT * FROM V$PDBS; create table LHRTEST as select * ...
- 数据库的数据字典(Data dictionary)
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录.主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典.被动数据字典 ...
- OCP12C题库,62数据库备份与恢复(admin,install and upgrade accelerated, backup and recovery workshop -62)(新增)
题数:20+53 10月新增 5 examine the details of the uncompressed,non-partitioned heap table cities. 检查未压缩.未分 ...
- ogg sqlserver2012 抽取不到日志_ogg抽取进程与数据字典的关系
01疑惑的源头 从Oracle Goldengate 11.2开始,oracle引入了一种新的capture mode,称为Integrated Capture Mode.传统的capture mod ...
最新文章
- PHP学习笔记6:面向对象的PHP
- 创建python2与python3虚拟环境失败的原因
- 【Matlab】如何对二维矩阵进行线性/非线性插值?
- 走向.NET架构设计—第四章—业务层分层架构(前篇)
- App正义联盟VS App Store、领英上线视频故事、亚马逊进军游戏流媒体| Decode the Week...
- SEO优化之Title 和 Meta 标签
- 大数据Hadoop原理学习(HDFS,MAPREDUCE,YARN)
- 外星人电脑为什么那么贵_为什么百丽的鞋那么贵
- 四线温度探头怎么接线_温度变送器接线详解
- arts-week12
- MySQL的lock tables和unlock tables的用法
- tcpreplay发包工具的简单介绍
- SolidWorks软件远程安装协助
- flac格式怎么转换mp3格式?
- 阿里云思维导图系列(五)阿里云关系型数据库产品全家福
- NFT市场如何拆分Opensea?
- java如何创建枚举类型_Java如何创建枚举类型?
- 【回归分析】[6]--残差分析
- Github Actions 自动同步到 Gitee
- mysql 安装插件 validate_password
热门文章
- 机器学习时代三大神器GBDT(MART)、XGBoost、LightGBM
- linux宝塔怎么添加二级域名,如何绑定二级域名使用宝塔面板?
- Android Glide清除缓存图片 你可能不知道
- 离散数学关于等价关系的证明
- Playful MySQL 2: Transactions and some of its potential problems
- [渝粤教育] 天水师范学院 地理信息系统原理与方法 参考 资料
- xdb 服务_localhost 8080 XDB服务器需要用户名和密码的问题
- 数据可视化—随机漫步
- 如何自己搭建外卖红包平台,操作外卖CPS佣金提成实现躺赚=
- 8种经典的统计学悖论18种经典的哲学悖论