数据字典

数据字典:是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

数据字典的主要作用:数据字典和数据流图共同构成系统的逻辑模型。没有流图数据字典难以发挥作用。没有数据字典,数据流图就不严格。

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

 

通俗理解数据字典:

在软件工程之项目管理中的数据字典的重要意义:
http://blog.csdn.net/goldou/article/details/2110944

https://blog.csdn.net/u012881904/article/details/51469366

 

有幸听过郎咸平的演讲。尽管这个人很有争议。但他说的话,不无道理。他说,在美国,全美的商学院都用到的是统一的教材。用统一的教材有什么好处呢,那就是它建立一个交流的平台。他说,美国商业运转得以如此顺畅,和标准统一有很大的关系。试想一想,美国的MBA和中国的MBA由于教材的不同,交流肯定会有些困难。

以上和我们软件工程项目开发有什么关系呢?当然有,那就是软件开发也需要有一个统一的标准,用什么来统一呢,数据字典。在这里,数据字典的含义更宽泛一些,非只为数据库中的字典。

在我所在的项目开发小组中,我们工作的依据是一个设计好的UML图,通过版本控制数据库来共享。它包含了项目原型的类图、序列图等。在开发过程中,我发现这十分有用,但我同时发现我们项目中还少了一个类似数据字典的东西。

我们用到的一些数据结构杂乱的位于UML类图中,一些事件、命令类型则无法放入这个中心文档。在项目往前推进的时候,一些新的数据结构出现,其中的一些自定义的类型的设计者对其注释又往往过于简单。也就是说,只有设计者知晓意义。这样的话,很显然,其它项目成员要用到这个数据结构,必须和设计者交流。这时,设计者开会去了,你的代码必须今天完成。那怎么办?

所以,在你所写的程序的开头列出一个数据字典十分的重要.数据字典列举了你在本程序中用到的所有变量的定义,还包括一些自定义的事件、命令的说明。它的定义应包括本条目的所要描述的内容和它在执行时所在的单元。当编写程序时,编定数据字典看似没有必要。但是设想一下,在过了一段时间后,你或其他人要对此程序修改,这时数据字典就显得十分的有用。

 

数据字典的一些定义:

一、数据字典的用途 
  数据字典是各类数据描述的集合 
  数据字典是进行详细的数据收集和数据分析所获得的主要结果 
  数据字典在数据库设计中占有很重要的地位 


二、数据字典的内容 
  数据字典的内容:数据项;数据结构;数据流;数据存储;处理过程。数据项是数据的 
  最小组成单位,若干个数据项可以组成一个数据结构。数据字典通过对数据项和数据结 
  构的定义来描述数据流、数据存储的逻辑内容。

我的想法是:在项目的初期,就开始设计一个数据字典,其中包含和项目密切相关的各种结构、类型定义。在开发过程中,由项目成员共同维护。它像一个字典,你可以查询任何在项目中你无法理解的各种结构、类型定义,从而最大程度的消除歧义和交流不畅问题。一个word文档就好,通过代码版本控制来共享。

我想这个问题在大项目中执行的很好,但小项目通常被忽略掉了。

为啥这么说呢? 
其实也是有原因的,这个发现的问题也是特别多的!比如车辆的类型,刚刚开始的时候只用两种,之后又增加了,写死的东西怎么办,到处都要更改!使用字典的话,直接遍历数据库,通过你需要的type直接的,不用管你有多少,之后又要增加多少,扩展性很强! 

这样非常的方便,我们只需要写个操作的类实现三层结构,直接注入依赖就好了!

package com.hikvision.cms.pms.modules.config.entity;

import java.io.Serializable;
import java.util.Date;

public class Dictionary implements Serializable {

    private static final long serialVersionUID = 5870500754198757136L;

    private Integer id;

    private String type;

    private String code;

    private String name;

    private Integer status;

    private Integer isDefault;//这里是通过这个bool类型进行树节点的区分,非常的棒!

    private Date createTime;

    private Date updateTime;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getIsDefault() {
        return isDefault;
    }

    public void setIsDefault(Integer isDefault) {
        this.isDefault = isDefault;
    }

}

  

数据字典定义 (百度百科)

数据字典(data dictionary)是对于数据模型中的数据对象或者项目的描述的集合,这样做有利于程序员和其他需要参考的人。

分析一个用户交换的对象系统的第一步就是去辨别每一个对象,以及它与其他对象之间的关系。这个过程称为数据建模,结果产生一个对象关系图。

当每个数据对象和项目都给出了一个描述性的名字之后,它的关系再进行描述(或者是成为潜在描述关系的结构中的一部分),然后再描述数据的类型(例如文本还是图像,或者是二进制数值),列出所有可能预先定义的数值,以及提供简单的文字性描述。这个集合被组织成书的形式用来参考,就叫做数据字典。

 

简单数据字典定义

以学生为实例:学生个人信息表,学生所属院系表,学生成绩表

 

数据字典常用字段:

  • 字段
  • 描述
  • 数据类型
  • 约束

创建数据字典:

 

参考:https://blog.csdn.net/u012881904/article/details/51469366

        https://blog.csdn.net/baidu_37107022/article/details/73497916

posted @ 2018-07-06 17:47  静悟生慧  阅读(4243)  评论(0编辑  收藏  举报