iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
自我挑戰組

後端工程師與圖的修練系列 第 14

IDEF 構圖方法

IDEF (ICAM DEFinition method) 代表的是一整套的概念建模方法,總共有 IDEF0 ~ IDEF14 + IDEF1X 共 16 種,不過篇文章不太可能介紹完,只會對一些重點做介紹,首先列一下 IDEF 16 種到底有哪些? [1]

  • IDEF0 功能建模(Function Modeling): 用來表示特定領域知識(特別是工程),以結構化的流程圖來表示。
  • IDEF1 信息建模(Information Modeling): 用來表示主題領域內的資料結構及描述。
  • IDEF1X 數據建模(Data Modeling): 用來描述系統資料儲存與資料的關係
  • IDEF2 仿真建模設計 (Simulation Model Design): 用來產生動態模型,動態模型表示隨時間變化的行為
  • IDEF3 過程描述獲取(Process Description Capture):
  • IDEF4 物件導向的設計(OO設計)(Object-Oriented Design)
  • IDEF5 本體描述獲取(Ontology Description Capture)
  • IDEF6 設計理論獲取(Design Rationale Capture)
  • IDEF7 信息系統審核(Information System Auditing)
  • IDEF8 人-系統交互界面設計(User Interface Modeling)
  • IDEF9 場景驅動信息系統設計(Scenario-Driven IS Design)
  • IDEF10 實施體系結構建模(Implementation Architecture Modeling)
  • IDEF11 信息製品建模(Information Artifact Modeling)
  • IDEF12 組織建模(Organization Modeling)
  • IDEF13 三模式映射設計(Three Schema Mapping Design)
  • IDEF14 網絡設計方法(Network Design)

本篇文章就挑 IDEF1X 來介紹好了,IDEF1X 的元素種類可以透過 ER 圖來比較 [5]:

https://ithelp.ithome.com.tw/upload/images/20210924/20092753DVrMPsHLbi.png.

用來表達 Entity-Relation 的方式都一樣,詳情可以回頭看看 ER Diagram,並請簡略參考下圖:

https://ithelp.ithome.com.tw/upload/images/20210924/20092753D0hUoiRwAG.png

這是 Wiki 中的 IDEF1X 的範例圖,在上面同樣可以看到每個關聯性都有寫上關係文字,跟上一節的 ER 圖介紹的作法是差不多的。

由於圖、畫法都與 ER 圖相近,所以現在要介紹一些不同於 ER 圖章節的內容,就是【建模方法】,具體來說就是對一整套系統(或稱業務需求)來做建模,這個建模需要經過 5 個階段 (A~E):

(-1A). 所有項目的初始化 (第零階段)

每個項目在第零階段中,你會需要運用以下工具來稍微撰寫目前得到的所有資料、文件、把文件整理成 Workspace,建立繪製模型的約定,以下是目標。

  1. 專案目標: 說明清楚必須要做什麼、為什麼要做這些以及如何做。
  2. 資料蒐集: 開會、彙整、瞎子摸象、買書、了解素材、了解客戶需求、讀書會,並且把這些資料做整理歸納
  3. 繪圖協作約定: 確保大家了解而且對繪製 IDEF1X 有共識。

(A). 實體定義 (第一階段)

第一階段有兩大目標產出:

  1. 實體池
  2. 實體術語表 (glossary)

第一階段要完成的話,需要把所有手邊的資料全數整理完 (這包含問題領域、Domain Knowledge) ,建立出所有實體和他們的定義 (定義要有上下文關聯) 以及賦予一些名稱,全部定義出來在一個圖表中,你就會得到第一階段需要的【實體表】。

下圖是一個轉換所有角色、物件,歸納出實體的例子,比方說這套 ERP / 員工系統,將 【人】 這個角色分離出【員工】這個實體,並寫上屬性。

https://ithelp.ithome.com.tw/upload/images/20210924/200927535Bilz93MvI.jpg

然後,也許建立一份文件,把每個定義的名稱做一些解釋說明,方便日後 Ctrl+F 搜尋,這樣就完成【實體術語表】。

(B). 關聯性定義 (第二階段)

第二階段有三大目標產出:

  1. 關聯性矩陣
  2. 關聯性定義
  3. 實體關聯圖

1. 畫出實體關聯性矩陣

https://ithelp.ithome.com.tw/upload/images/20210924/20092753wXKNIqbwwg.jpg

比方說上圖是 Buyer (購買者), Requester(請購者), Approver(審核者), Purchase Requsition(申請採購), Purchase Req. Item(採購物品),這一連串的東西很顯然都是不同的概念 (指他們都不是繼承、父子關係),用這個關係矩陣,就是直接把行列都變一樣成這 5 個,然後對照這個表填上他們之間是否有關,有關就劃記,還記得 SQL Cross Table 嗎? 就是這麼回事,畫表可以幫助你完整檢查所有必要的關聯性,而不會只有你想到的某幾個。

2. 畫出實體的線框圖,而且定義他們之間的關聯 (大功能、大系統,沒有繼承、父子關係的資料,建立關聯性描述)

https://ithelp.ithome.com.tw/upload/images/20210924/20092753UOx2iOgvjD.jpg

3. 劃出聚焦圖,聚焦圖就是將功能聚焦到同一個實體的圖 (劃出他們之間的關聯,與聚焦圖無關)

https://ithelp.ithome.com.tw/upload/images/20210924/20092753rYAE33vCv2.jpg

(C). Key 定義 (鍵、主鍵、外鍵) (第三階段)

第三階段的目標是:
1. 把第二階段的關聯性更詳細的描述,把粗略的關聯詳細化 (可能會造出新的實體 Entity)
2. 定義每個實體的【關鍵屬性值】 (注意這個步驟只是請你把這個 Entity 最關鍵的屬性填上,其他的還沒有)
3. 定義 Primary Key 和對應的 Foreign Keys
4. 驗證關聯性和這些 Keys

對 2 點需要詳細解釋,這個 2 指的是關鍵屬性,可以使用矩陣的方法列出所有【可能會是 KEY 的候選人】,比方說 Customer Id, Account Id, 或是 Payment Id, IDNo, Pass-code, Discount Code,不過這次是 Entity 對所有列出的關鍵屬性做劃記:

https://ithelp.ithome.com.tw/upload/images/20210924/20092753dHFiQCTuNz.jpg

屬性、Entity 可能有非常龐大的數量,想要減少一些不相關的資料出現在這張表上,要特別小心有沒有疏漏。

(D). 屬性定義 (第四階段)

第四階段的目標是:

  1. 定義完所有 Entity 的屬性 (屬性池)
  2. 把所有實體都填上屬性 (注意應該是到這個步驟才開始規劃資料庫 Column 有哪些欄位)
  3. 定義這些屬性的名字、定義和同義詞、同名詞 (可能是混淆的情況)
  4. 針對上述的屬性做精確化,盡可能實施重複規則,但設計資料庫一般會注意重複規則過度實施會造成 Query 困擾,可以參考反正規化 (比方說系統都吃訂單的 id,而客戶查詢資料都會用字串 Number,為了減少 join 次數,可斟酌把 Number 重複進訂單的資料表以優化效能)。

以上補充,池可以當作是一種字卡,定義完池之後,再把字卡拿出來排列組合。

References:
[1] https://zh.wikipedia.org/wiki/IDEF
[2] https://en.wikipedia.org/wiki/IDEF0
[3] https://support.microsoft.com/zh-hk/office/%E5%BB%BA%E7%AB%8B-idef0-%E5%9C%96-ea7a9289-96e0-4df8-bb26-a62ea86417fc
[4] https://zh.wikipedia.org/wiki/IDEF1X
[5] https://www.cnblogs.com/jplee/archive/2006/10/12/527775.html
[6] https://zh.wikipedia.org/wiki/IDEF1X
[7] https://www.edrawsoft.com/cn/idef0-solutions.php
[8] https://read01.com/0KeBym.html
[9] http://www2.nkfust.edu.tw/~percy%20/Report4/IDEF0_QFD_CIM_Selection.pdf
[10] http://businessprocessagility.com/wp-content/uploads/2015/06/IDEF03-guidebook.pdf
[11] https://edisciplinas.usp.br/pluginfile.php/5043740/mod_resource/content/1/JME2009_p131_140.pdf
[12] https://books.google.com.tw/books?id=TZPHDwAAQBAJ&pg=PA155&lpg=PA155&dq=idef+wiki&source=bl&ots=EL59BiBeVd&sig=ACfU3U0WrAfXu1GIFFHX3K1XDcoUgz60-Q&hl=ja&sa=X&ved=2ahUKEwibxP7Q1djyAhWLN5QKHfZUAqUQ6AF6BAgZEAM#v=onepage&q=idef%20wiki&f=false


上一篇
實體關聯性模型圖 ER/EER Diagram
下一篇
雲端架構圖
系列文
後端工程師與圖的修練31

尚未有邦友留言

立即登入留言