6 道 ER Diagram 設計練習 — 從基礎到進階
0 / 15 題完成
設計一個外送餐食訂購系統的 ER Diagram。系統需管理員工、商店、餐點、訂單與儲值紀錄。
num(數量)1. Employee 的 phones 是多值屬性,一位員工可有多支電話。
2. FoodItem 以 fName 為 partial key,需透過所屬 Store 的 sName 才能唯一識別。
3. Order 以 date 為 partial key,每位員工每天最多一筆訂單,需透過 Employee 的 eId 識別。
4. Deposit 以 dTime 為 partial key,需透過 Employee 識別。
5. Order 與 FoodItem 之間是 M:N 關係,需記載數量 num。
Q1:以下哪個不是 weak entity?
sName,是 strong entity。FoodItem、Order、Deposit 都需依賴 owner entity 才能唯一識別,屬於 weak entity。Q2:FoodItem 的完整識別鍵(identifying key)是什麼?
fName,需加上 owner entity Store 的 PK sName 才能唯一識別。Q3:Order 與 FoodItem 之間的關係 cardinality 為何?
num。設計一個大學課程管理系統的 ER Diagram,管理課程、教師、學生及作業項目。
finalScorescore1. Teacher 的 departments 是多值屬性,一位教師可隸屬多個系所。
2. Item 是 Course 的 weak entity,iName 為 partial key。
3. Takes 關係上有屬性 finalScore,記錄學生在該課程的最終成績。
4. 學生在 Item 上的 score 是三方關係(Student-Item)或可建模為 Student 與 Item 的 M:N 關係。
Q1:Item 的 owner entity 是誰?
cNo + Item 的 iName 才能唯一識別。Q2:finalScore 屬於哪裡?
finalScore 取決於「哪位學生修哪門課」,是 Takes(Student M:N Course)關係上的屬性。Q3:Teacher 與 Course 之間的 cardinality?
設計一個線上拍賣網站的 ER Diagram,管理會員、商品、分類、出價與交易。
price1. Merchandise 是 Member 的 weak entity,seqNo 為 partial key(同一會員的商品流水號)。
2. Category 有自我關聯(recursive relationship),表示分類的階層結構(父分類→子分類)。
3. Bid 記錄出價,與 Member 和 Merchandise 相關。
4. Transaction 是 Member(買家)與 Merchandise 之間的 M:N 關係,記載成交 price。
5. 注意:賣家是 Merchandise 的 owner(Member),買家透過 Transaction 關聯。
Q1:Merchandise 的完整識別鍵是什麼?
seqNo,需加上 owner Member 的 PK mId 才能唯一識別。Q2:Category 的自我關聯代表什麼?
Q3:Transaction 關係上的屬性 price 代表什麼?
price 記錄的是最終成交價格,不同於 Bid 的出價或 Merchandise 的底價。設計一個醫院掛號系統的 ER Diagram,管理科別、醫師、看診時段、病患與掛號。
no(掛號序號)、estimatedTime1. DiagnosisTime 是 Doctor 的 weak entity,startDateTime 為 partial key。
2. 掛號關係是 Patient 與 DiagnosisTime 的 M:N,帶有 no 和 estimatedTime 屬性。
3. Doctor 隸屬於 Department(N:1),每個 Department 有一位主任(1:1 關係)。
4. dName 和 pId 都是 unique constraint,但不是 PK。
Q1:DiagnosisTime 的完整識別鍵是什麼?
startDateTime,需加上 owner Doctor 的 PK dId 才能唯一識別。Q2:「每科有一位主任」應如何建模?
Q3:掛號關係上的 no 代表什麼?
no 是掛號關係的屬性,代表該病患在該看診時段的掛號序號,用於決定看診順序。在 Exercise #4 基礎上,加入 specialization/generalization 與住院管理。這是 Enhanced ER Diagram(EERD)的練習。
1. Doctor 的 specialization 是 disjoint(d)— 一位醫師只能屬於一個子類。
2. Inpatient 是 Patient 的 partial specialization — 不是所有病患都住院。
3. Mentor 關係的 constraint:Resident 的 mentor 必須是 AttendingDoc 或 ChiefDoc,這是一個 union type 的概念。
4. Treats 是必要的(total participation for Inpatient),Assists 是可選的(partial)。
5. Inpatient 與 Room 之間有 StaysIn 關係。
Q1:Doctor 的 specialization 應該是 disjoint 還是 overlapping?
Q2:Inpatient 與 Patient 的關係是什麼?
Q3:Assists 關係中 Inpatient 的 participation 是?
設計一個 ER Diagram 製作工具的後設模型(meta-model)。這個工具本身的資料結構也可以用 ER Diagram 來描述!
max, min1. 這是一個 meta-model:用 ER Diagram 來描述 ER Diagram 工具的資料結構。
2. Attribute 的自我關聯表示複合屬性(composite attribute)可包含子屬性。
3. EntityType 與 Attribute 之間有「HasAttribute」關係,其中某些是 key attribute。
4. EntityType 參與 RelationshipType,需記載 min/max cardinality。
5. WeakEntityType 需要一個 identifying RelationshipType 和 partial key Attribute。
6. 注意 EntityType 和 WeakEntityType 可考慮用 specialization 統一建模。
Q1:Attribute 的自我關聯代表什麼概念?
Q2:EntityType 參與 RelationshipType 時,min 和 max 記載在哪裡?
min 和 max 取決於「哪個 EntityType 參與哪個 RelationshipType」,是 Participates(M:N)關係上的屬性。Q3:WeakEntityType 的 identifying relationship 應如何建模?
答對題目解鎖成就!