製作ER圖的4個簡單步驟
 
聯絡我們
會員登錄
購物車


首頁 書籤 最新訊息 其他
IT辭典 IT技術動向 IT和經營結合 系統導入 系統基盤建置 系統營運管理
張士超
東京工業大學經營工學科畢。現任IT綜合情報網編輯。

製作ER圖的4個簡單步驟


在建置關聯性資料庫(RDB)時,ER圖(entity-relationship diagram)亦為非常重要基礎知識。ER圖主要是將資料以「實體」(entity)和「關聯」(relationship)來呈現,它決定關聯性資料庫(RDB)的構造(schema)。日常常見的有利用"所屬"建立「關聯」的學生、學校「實體」,還有利用"銷售"建立「關聯」的公司、商品「實體」等。

了解「實體」和「關聯」簡單的概念之後,接下來針對如何製作ER圖,加以簡單的說明。製作ER圖總共有以下4個步驟,首先必須掌握業務流程和規則,再從中抽出「實體」,檢核抽出的「實體」是否有不足或多餘的,最後再設定實體的「關聯」。

ER STEP

Step 1→ 掌握業務流程和規則
以網路購物流程為範例,掌握到整體的流程以及需求如下:
No. 業務流程 需求
1 商品放入購物車 允取選購多項商品,刪除、新增商品,修改數量。
2 選擇配送方式 可以選擇門市取貨、宅配等。
3 下單前確認顧客資料 需要先有會員資料。
4 選擇付款方式 可以選擇信用卡、銀行匯款等。
5 選擇配送地點 可以選擇顧客原住址,以及指定其他地點。
6 指定時間 可以指定配送日和時間帶。
Step 2→ 抽出實體
「實體」(entity)為特定目地的集合。上述每個業務流程畫面亦有特定目地,因此可以每個流程給予一個對應的「實體」。進而根據每一個「實體」的需求定義其屬性。以「商品」實體來說,需要具有商品ID、商品名、單價等屬性。
No. 業務流程 對應的實體 實體的屬性值
1 商品放入購物車 商品。 商品ID、商品名、單價、折扣、廠商ID。
2 選擇配送方式 配送方式。 配送ID、配送方式。
3 下單前確認顧客資料 顧客。 顧客ID、顧客名稱、郵遞區號、住址、電話。
4 選擇付款方式 付款方式。 付款ID、付款方式。
5 選擇配送地點 配送地點。
6 指定時間 配送時間。 營業時間帶ID、時間帶、營業日。
Step 3→ 檢核抽出實體
檢核抽出的實體缺了甚麼或多了甚麼?從上一步驟抽出的實體可以看出有些很難建立彼此的關聯,例如「商品」和「配送方式」實體。仔細再檢討之後,結果發現忘記最重要的「訂購單」這個實體,它是作業流程最後必須要產出的實體。在下步驟會做說明,有了「訂購單」的實體之後,實體的關聯就可以建立起來了。一般我們稱「訂購單」的實體為「事件系實體」(Event Entity),其他上述的實體為「資源系實體」(Resource Entity)。另外,根據關聯資料的正規化之後,「訂購單」這個實體最後會被分為兩個實體。
第5個實體「配送地點」,如果通常是選擇顧客原地址,例外情形才會選擇其他地方,因此不用特別建立實體,直接放入事件系實體的「訂購單」內即可。
第6個實體「配送時間」,不是顧客決定的,必須根據物流公司的「營業時間」和「配送的時間帶」來設定。「營業時間」和「配送的時間帶」沒有甚麼關聯,因此把它拆成2個實體。最後得到結果如下:
No. 業務流程 對應的實體 實體的屬性值
1 商品放入購物車 商品。 商品ID、商品名、單價、折扣、廠商ID。
2 選擇配送方式 配送方式。 配送ID、配送方式。
3 下單前確認顧客資料 顧客。 顧客ID、顧客名稱、郵遞區號、住址、電話。
4 選擇付款方式 付款方式。 付款ID、付款方式。
5 指定時間 配送時間帶。 配送時間帶ID、配送時間帶。
6 指定時間 營業日。 年月日、Flag。
7 訂單確認 訂購單。 訂單ID、日期、金額、郵遞區號、配送地點、電話。
8 訂單確認 訂購單明細。 商品ID、數量、金額。
Step 4→ 設定實體的關聯
關聯資料所需「實體」確定之後,開始設定「實體」和「實體」之間的關聯。設定關聯時,首先是設定「主Key」(Primary Key),接著設定實體之間的對等關係(1對1、1對多、多對多)。以下利用「商品」和「訂單明細」的兩個實體,以及「訂單明細」和「訂單」的兩個實體為範例,來建立ER圖。四方形代表「實體」,菱形代表兩「實體」的關聯,橢圓代表實體的屬性。綠色網底的屬性為,建立關聯Key值。
ER Model
「訂單」和「訂單明細」的"訂單號碼"屬性是唯一的,因此設定為兩個實體的主Key,建立彼此的關聯。不過,1筆訂單往往不只1筆資料,「訂單明細」必須還要有1個主Key,才不會發生主Key重複的現象。同一訂單若不允取選取2個以上相同商品時,可以選擇商品ID當另1個主Key,否則選擇"訂單明細號碼"屬性做為另1個主Key較為適當。主Key設定好之後,接著設定兩個實體的對等關係,從「訂單」來看「訂單明細」,1筆訂單有多筆明細,因此是1對N的對等關係,從「訂單明細」來看「訂單」則是N對1的對等關係。
「訂單明細」和「商品」的"商品ID"屬性是唯一的,因此設定為兩個實體的「主Key」(Primary Key),建立彼此的關聯。不過我們在「訂單明細」選擇"訂單號碼"和"訂單明細號碼"做為主Key,"商品ID"就做為外部連結用的「外部Key」(FK),和「商品」建立關聯。從「商品」來看「訂單明細」,1筆商品對應到多筆訂單明細,因此是1對N的對等關係,從「訂單明細」來看「商品」則是N對1的對等關係。
依此類推,其他實體間的關聯和對等關係如下圖:
ER Model
由上圖得知「訂單」實體要和其他實體建立關聯,還必須多增加"配送ID"、"顧客ID"、"付款ID"、"時間帶ID"、"年月日"等屬性做為「外部Key」(FK)。
最後得到的全體的ER圖為

top