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

  • 2020 年 3 月 10 日
  • 筆記

活著繞不過修行,越簡單越複雜,然後有可能是越複雜,越簡單。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 圖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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