DBA 我想上一層樓,DFD 瞭解一下

DBA 我想上一層樓,DFD 瞭解一下

活著繞不過修行,越簡單越複雜,然後有可能是越複雜,越簡單。DBA 做久了,貌似兩個路徑,運維DBA, 開發DBA,實際上還有另一條路,就是將其合二為一,讓你自身昇華一次,成為一個數據庫架構師。那在軟件項目中,除了去給硬件層次,或數據庫層次做一個架構的規劃以外, 從軟件的開發角度,作為DB的層次也可以梳理和參與甚至是貼合軟件來做一些事。


今天就從DFD 切入,兩手都要抓,兩手都能crash點的角度來看看。DFD 是什麼,DFD 是data -flow diagram 數據流圖,在開發軟件的過程中,有需求,需求分析,有各種軟件開發的流程圖,但從DB的點位出發,除了在數據庫選型以及表設計去符合你的軟件項目需求,在軟件的需求階段,你也要根據軟件設計的業務需求,來畫出從DB 觀點出發的 DFD 數據流圖。軟件人員可能會問,這有必要嗎,因為從軟件設計的角度很多企業是沒有這個“項目”的。


用大白話講,DFD是將你軟件項目中的數據從哪裡來,數據到哪裡去,數據在哪個節點有存儲,數據在整體項目的流轉,以數據庫DB的視角來進行一個描繪,很邏輯的事情,好處也是有的,1 避免在設計表的時候,忘記某些數據表的設計之間的關聯性,2 避免設計表時定位不清,造成一個表多個用途或多個表一個用途,最終導致 “一夫多妻“, 或者“一妻多夫”的可能性。

而這個圖應該是在 UML 圖之前要有的,a way of visualizing software systems before UML diagrams. DFD 也是有兩個種風格,

1 Yourdon&Coad 更加貼近系統分析和設計

2 Gane & Sarson 更貼近信息系統的可視化


通過這兩種方式來描述 數據的存儲,數據流, 外部實體。在繪製 DFD的時候會以四種圖形來描述DFD的四個基本概念, 1 外部實體 2 過程 3 數據存儲 4 數據流 來組成DFD,其中是可以用不同的圖形來表達這四種實體的不同。

下面就以一個簡單的訂單系統作為 DFD 的入門


在一個訂單發貨系統裡面,首先我們根據常識性的知識,外部的實體會存在

1 客戶

2 庫存

3 快遞公司

4 管理

以及最後的我們的處理任務的process 訂單發貨處理系統,建模的最簡單的DFD圖,其中包含了系統中必要的實體,和流程,圖看似簡單,但是確定系統邊界的方法。表名系統和上下文之間的關係,也是DFD的上下文數據流程圖。也可以叫 0 LEVEL 圖


DBA 我想上一層樓,DFD 瞭解一下

在大方向確認的情況線下,就開始規劃 LEVEL 1 的數據流圖了,將LEVEL 0 的圖細化。


從下圖我們可以知道,發貨系統的數據源來自於訂單,實體有客戶,快遞公司,倉庫,審批管理人, 而數據的存儲位置有 庫存,訂單,涉及兩個系統處理過程,訂單發貨處理過程,與訂單出庫單生成過程


DBA 我想上一層樓,DFD 瞭解一下

其實在整個DFD圖的產生的過程中就梳理了當前系統設計的數據流是否順暢,是否貼近實際業務的信息流轉。

在畫DFD圖的時候,需要注意以下幾點:

1 過程模塊應該使用動作,或動態的名詞來表示--動的一個狀態

2 數據存儲位置至少應該與一個操作或者進程相關聯

3 外部的實體也需要至少一個與操作或進程相關

4 數據存儲不應該與外部實體有關

5 每個圖必然有數據的流入和流出

6 所有的圖必須以一個外部實體開始,以一個外部實體結束

7 外部實體之間不存在數據流轉

實際上DFD圖,是一個簡單到複雜的過程將數據流,數據流轉分層的進行分析繪製,將某個軟件開發中的東西細化的過程。下面就是DFD的分層圖

DBA 我想上一層樓,DFD 瞭解一下

頂層數據流圖只包含一個過程,表示整個系統

中層數據流圖是對父層數據流中某個過程進行細化

底層是細化的過程,細化到不能在細化


OK 就先寫到這,也編不出什麼來了,如果寫錯了還請軟件方面的大仙們指正,感謝。


DBA 我想上一層樓,DFD 瞭解一下


分享到:


相關文章: