數據字典


數據字典:是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明。

數據字典的主要作用:數據字典和數據流圖共同構成系統的邏輯模型。沒有流圖數據字典難以發揮作用。沒有數據字典,數據流圖就不嚴格。

數據字典(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM