數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明。
數據字典(Data dictionary)是一種用戶可以訪問的記錄數據庫和應用程序源數據的目錄。主動數據字典是指在對數據庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。
數據字典的主要作用:數據字典和數據流圖共同構成系統的邏輯模型。沒有流圖數據字典難以發揮作用。沒有數據字典,數據流圖就不嚴格。
下面是個高手寫的感覺還不錯
軟件工程之項目管理中的數據字典的重要意義
http://blog.csdn.net/goldou/article/details/2110944
有幸聽過郎咸平的演講。盡管這個人很有爭議。但他說的話,不無道理。他說,在美國,全美的商學院都用到的是統一的教材。用統一的教材有什么好處呢,那就是它建立一個交流的平台。他說,美國商業運轉得以如此順暢,和標准統一有很大的關系。試想一想,美國的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; } } ———————————————— 原文鏈接:https://blog.csdn.net/u012881904/article/details/51469366