一.数据字典以及使用场景:

                                                                            <User表>

User表,User主体有很多属性,比如证件(身份证、居住证、港澳通行证...)地区(河北、河南、北京...)等,然后表建好了,数据也填进去了,项目代码也敲几万行。但是有一天,客户说这个“身份证”表述不够官方,要改成“居民身份证”比较好,所以作为这个项目开发人员,你要把代码里和数据库中所有的“身份证”改成“居民身份证”,这工作量估计很让人抓狂。

但是如果采用下边的建表方式,是不是就不会出现这种问题呢,将证件新建一个属性表,将属性值和主体分离,主体表只保存属性的的代码。这就是一种数据字典。

                                                     <user表>                                                <证件表>

                

现在,大家应该对数据字典概念有个基本的理解了,数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由数据库管理系统自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。

二.数据字典的两种形式

  • 第一种:《主体表》里包含主体和属性代码,《属性表》里包含属性代码和属性Value,不同属性分别建表。
  • 第二种:《主体表》里仅包含主体,《系统代码分类表》里存储属性标识和属性名称,《系统代码表》里包含所有属性代码、属性标识和属性Value,《属性表》是《主体》和《系统代码表》的关系表,包含属性id,主体id,属性代码。

举例:

第一种字典设计:

                    <User表>                                                 <证件表>                                                 <身份表>

                     

第二种字典设计:

<User表>                   <系统代码分类表>                         <系统代码表>                                 <属性表>

         

两种设计方式分析:

1.第一种设计方式:由于属性id是存储在主体表里的属性的数量是不变的,而属性取值的数量可以是变化的。但是如果该主体的属性非常多的话,就需要建很多的属性表,在开发中还要设计很多属性类,那当想要取得一条主体的完全数据时,那将进行几十个表的联接(join)操作。性能耗损严重。当属性的数量不多时,用第一种数据字典即可。

2.第二种设计方式:由于这种设计方式属性和主题表是分开的,所以属性的数量是可变的,而属性取值的数量可以是变化的。引入《系统代码分类表》和《系统代码表》,也解决了第一种设计方式的局限性。

三.数据字典的优缺点

优点:

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

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

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

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

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

缺点:

一、数据字典是通用的设计,在系统效率上会低一些。

二、程序算法相对复杂一些。

三、对于开发人员,需要具备一定抽象思维能力,所以对开发人员的要求较高。

数据库——数据字典是什么?相关推荐

  1. mysql导出数据库数据字典

    mysql导出数据库数据字典,执行如下查询导出到excel即可 SELECT tc.TABLE_SCHEMA 数据库, tc.TABLE_NAME 表名, tt.TABLE_COMMENT, tc.C ...

  2. mysql 数据字典 php_php生成mysql数据库数据字典的程序代码

    php生成mysql数据库数据字典的程序代码,比较实用,具体代码如下:header('Content-type:text/html;charset=utf-8'); /** * 生成mysql数据字典 ...

  3. 很好用的数据库数据字典【可导出为word , excel文件】

    <?php /*** 生成mysql数据字典*/ header("Content-type:text/html;charset=utf-8"); // 配置数据库 $data ...

  4. oracle数据库数据字典应用

    oracle数据字典 数据字典是由oracle服务器创建和维护的一组只读的系统表.数据字典分为两类:一是基表,二是数据字典视图. 数据字典视图包括用户名.用户权限.对象名.约束和审计等信息,是通过运行 ...

  5. 教程03-微擎的数据库数据字典

    微擎框架安装好,没有安装任何插件模块,总共有139张表格.现在分别介绍下这些表. 在介绍这些表的过程中,表前缀可以忽略. 1. account 平台账号表(公众号.小程序.PC等) 字段名 数据类型 ...

  6. 数据库——⽣成数据字典(导出word文档)

    文章目录 背景 首先需要安装两个软件 操作步骤 背景 很多时候,在⼀个项⽬的开始或者结束时,整理项⽬开发⽂档.⽤户⼿册.交付⽂档时都会在⽂档中包含数据库的说明,主要体现形式就是数据字典,这里我把详细的 ...

  7. Oracle 12c CDB数据库中数据字典架构

    Oracle 12c CDB数据库中数据字典架构 使用sys用户和普通用户实验结果不同: SELECT * FROM V$PDBS; create table LHRTEST as select * ...

  8. 数据库的数据字典(Data dictionary)

    数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录.主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典.被动数据字典 ...

  9. 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. 检查未压缩.未分 ...

  10. ogg sqlserver2012 抽取不到日志_ogg抽取进程与数据字典的关系

    01疑惑的源头 从Oracle Goldengate 11.2开始,oracle引入了一种新的capture mode,称为Integrated Capture Mode.传统的capture mod ...

最新文章

  1. PHP学习笔记6:面向对象的PHP
  2. 创建python2与python3虚拟环境失败的原因
  3. 【Matlab】如何对二维矩阵进行线性/非线性插值?
  4. 走向.NET架构设计—第四章—业务层分层架构(前篇)
  5. App正义联盟VS App Store、领英上线视频故事、亚马逊进军游戏流媒体| Decode the Week...
  6. SEO优化之Title 和 Meta 标签
  7. 大数据Hadoop原理学习(HDFS,MAPREDUCE,YARN)
  8. 外星人电脑为什么那么贵_为什么百丽的鞋那么贵
  9. 四线温度探头怎么接线_温度变送器接线详解
  10. arts-week12
  11. MySQL的lock tables和unlock tables的用法
  12. tcpreplay发包工具的简单介绍
  13. SolidWorks软件远程安装协助
  14. flac格式怎么转换mp3格式?
  15. 阿里云思维导图系列(五)阿里云关系型数据库产品全家福
  16. NFT市场如何拆分Opensea?
  17. java如何创建枚举类型_Java如何创建枚举类型?
  18. 【回归分析】[6]--残差分析
  19. Github Actions 自动同步到 Gitee
  20. mysql 安装插件 validate_password

热门文章

  1. 机器学习时代三大神器GBDT(MART)、XGBoost、LightGBM
  2. linux宝塔怎么添加二级域名,如何绑定二级域名使用宝塔面板?
  3. Android Glide清除缓存图片 你可能不知道
  4. 离散数学关于等价关系的证明
  5. Playful MySQL 2: Transactions and some of its potential problems
  6. [渝粤教育] 天水师范学院 地理信息系统原理与方法 参考 资料
  7. xdb 服务_localhost 8080 XDB服务器需要用户名和密码的问题
  8. 数据可视化—随机漫步
  9. 如何自己搭建外卖红包平台,操作外卖CPS佣金提成实现躺赚=
  10. 8种经典的统计学悖论18种经典的哲学悖论