(專注於訂單處理、客戶體驗與門市營運)

🔍 業務背景
此實體關係圖模擬門市的核心營運流程,包含麥當勞門市,重點包括:
-
從顧客下單到付款的流程
-
員工角色與門市管理
-
菜單的可售性與定價
-
顧客忠誠度與重複參與
-
基本庫存追蹤(針對食品項目)
注意:這並非完整的企業資料庫(例如供應鏈或人力資源),而是針對速食店收銀系統所設計的真實且可擴展的基礎架構。
📚 實體與屬性
| 實體 | 屬性 |
|---|---|
| 顧客 | 顧客編號(主鍵),姓名,電話,電子郵件,忠誠點數,會員等級(例如:銅級、銀級) |
| 門市 | 門市編號(主鍵),名稱,位置(地址),經理編號(外鍵 → 員工),營業時間,月營業額 |
| 員工 | 員工編號(主鍵),姓名,職位(收銀員、廚師、經理、主管),門市編號(外鍵),僱用日期,班表 |
| 菜單項目 | 菜單項目編號(主鍵),名稱,描述,價格,類別(漢堡、飲料、配菜、甜點),是否啟用,圖片網址 |
| 訂單 | 訂單編號(主鍵),下單時間,狀態(待處理 → 備料中 → 已完成 → 已完成 → 已取消),總金額,門市編號(外鍵),顧客編號(外鍵) |
| 訂單項目 | 訂單項目編號(主鍵),訂單編號(外鍵),菜單項目編號(外鍵),數量,明細金額(自動計算) |
| 付款 | 付款編號(主鍵),金額,付款方式(現金、信用卡、行動支付),交易編號,訂單編號(外鍵),時間戳記 |
| 推廣 | 推廣ID (主鍵),代碼(例如:「WELCOME10」),折扣類型(百分比、固定金額),折扣金額,生效日期,到期日期,適用範圍(例如:午餐、所有項目) |
🔗 關係(含基數)
| 關係 | 基數 | 描述 |
|---|---|---|
顧客 → 訂單 |
1 → 0.. | 顧客會在一段時間內下多筆訂單。 |
訂單 → 訂單項目 |
1 → 0.. | 每筆訂單包含零項或更多菜單項目。 |
訂單 → 付款 |
1 → 1 | 每一筆完成的訂單都只有一筆付款。 |
訂單 → 店鋪 |
1 → 1 | 每筆訂單都是在某一特定店鋪下訂。 |
店鋪 → 員工 |
1 → 0.. | 一家商店僱用多名員工(收銀員、廚師、經理)。 |
商店 → 訂單 |
1 → 0.. | 一家商店會收到許多訂單。 |
菜單項目 → 訂單項目 |
1 → 0.. | 一個菜單項目可以出現在多個訂單中。 |
促銷 → 訂單 |
0 → 1 | 促銷活動可能適用於訂單(例如:「買一送一」)。 |
員工 → 商店 |
1 → 1 | 每位員工只在一家商店工作。 |
✅ 可選: 添加一個
忠誠度計劃若需更深入的忠誠度邏輯(例如積分兌換、獎勵),則需建立實體。
🔒 限制與商業規則
-
價格必須大於 0
-
若付款缺失,訂單狀態不能為「已完成」
-
訂單項目中的數量必須大於等於 1
-
促銷活動僅在生效且處於時間範圍內時方可套用
-
顧客必須至少與一筆訂單關聯,才能累積忠誠度積分
-
若餐點缺貨或停售,則標記為「無效」
📝 使用案例(為何此實體關係圖重要)
| 使用案例 | 效益 |
|---|---|
| POS 系統設計 | 支援即時訂單追蹤、付款與收據產生 |
| 庫存警示 | 當某餐點被頻繁訂購時,需監控庫存水準 |
| 忠誠度計劃 | 追蹤積分累積,提供個人化折扣 |
| 門市分析 | 辨識熱門商品、業績高峰時段與受歡迎的促銷活動 |
| 員工管理 | 分配職位、追蹤班次、管理績效 |
📂 輸出格式
您可將下列任一內容複製貼上至您的文件、簡報或資料庫設計工具中。
✅ 1. 文字型實體關係圖(適用於文件)
實體:
- 顧客
- 顧客編號(主鍵)
- 姓名
- 電話
- 電子郵件
- 忠誠度積分
- 會員等級
- 門市
- 門市編號(主鍵)
- 名稱
- 地點
- 管理員編號(外鍵 → 員工)
- 營業時間
- 月營業額
- 員工
- 員工編號(主鍵)
- 姓名
- 職位(收銀員、廚師、經理)
- 門市編號(外鍵)
- 到職日期
- 餐點
- 餐點編號(主鍵)
- 名稱
- 描述
- 價格
- 分類
- 是否有效
- 訂單
- 訂單編號(主鍵)
- 訂單時間
- 狀態(待處理、準備中、已完成、已取消)
- 顧客編號(外鍵)
- 門市編號(外鍵)
- 總金額
- 訂單項目
- 訂單項目編號(主鍵)
- 訂單編號(外鍵)
- 餐點編號(外鍵)
- 數量
- 明細金額
- 付款
- 付款編號(主鍵)
- 金額
- 付款方式(現金、信用卡、行動支付)
- 訂單編號(外鍵)
- 時間戳記
- 促銷活動
- 促銷活動編號(主鍵)
- 編碼
- 折扣類型
- 折扣金額
- 生效日期
- 結束日期
- 適用範圍
關係:
- 顧客「1」--「0..*」訂單
- 訂單「1」--「0..*」訂單項目
- 訂單「1」--「1」付款
- 訂單「1」--「1」門市
- 門市「1」--「0..*」員工
- 餐點「1」--「0..*」訂單項目
- 促銷活動「0..*」--「1」訂單(依生效狀態條件決定)
✅ 2. Mermaid.js 版本(適用於 Markdown、Notion、Obsidian)
erDiagram
CUSTOMER ||--o{ ORDER : "下訂單"
STORE ||--o{ ORDER : "服務"
STORE ||--o{ EMPLOYEE : "僱用"
STORE ||--o{ MENU_ITEM : "販售"
ORDER ||--o{ ORDER_ITEM : "包含"
ORDER ||--o{ PAYMENT : "擁有"
MENU_ITEM ||--o{ ORDER_ITEM : "出現在"
PROMOTION ||--o{ ORDER : "適用於"
CUSTOMER {
int CustomerID PK
string Name
string Phone
string Email
int LoyaltyPoints
string MembershipTier
}
STORE {
int StoreID PK
string Name
string Location
int ManagerID FK
string OpenHours
decimal MonthlySales
}
EMPLOYEE {
int EmployeeID PK
string Name
string Role
int StoreID FK
date HireDate
}
MENU_ITEM {
int MenuItemID PK
string Name
string Description
decimal Price
string Category
boolean IsActive
}
ORDER {
int OrderID PK
datetime OrderTime
string Status
int CustomerID FK
int StoreID FK
decimal TotalAmount
}
ORDER_ITEM {
int OrderItemID PK
int OrderID FK
int MenuItemID FK
int Quantity
decimal LineTotal
}
PAYMENT {
int PaymentID PK
decimal Amount
string Method
int OrderID FK
datetime Timestamp
}
PROMOTION {
int PromotionID PK
string Code
string DiscountType
decimal DiscountValue
datetime ActiveDate
datetime ExpireDate
string AppliesTo
}

✅ 3. PlantUML 版本
' McDonald's 訂單系統 ERD (PlantUML)
package "麥當勞營運" {
entity "顧客" {
- 客戶編號 (PK)
- 姓名
- 電話
- 電子郵件
- 忠誠度積分
- 會員等級
}
entity "門市" {
- 門市編號 (PK)
- 名稱
- 地點
- 經理編號 (FK → 員工)
- 營業時間
- 月營業額
}
entity "員工" {
- 員工編號 (PK)
- 姓名
- 職位 (收銀員、廚師、經理)
- 門市編號 (FK → 門市)
- 到職日期
}
entity "菜單項目" {
- 菜單項目編號 (PK)
- 名稱
- 描述
- 價格
- 分類 (漢堡、飲料、配菜)
- 是否有效
}
entity "訂單" {
- 訂單編號 (PK)
- 訂單時間
- 狀態 (待處理、準備中、已完成、已結案)
- 客戶編號 (FK → 顧客)
- 門市編號 (FK → 門市)
- 總金額
}
entity "訂單明細" {
- 訂單明細編號 (PK)
- 訂單編號 (FK → 訂單)
- 菜單項目編號 (FK → 菜單項目)
- 數量
- 明細金額
}
entity "付款" {
- 付款編號 (PK)
- 金額
- 支付方式 (現金、信用卡)
- 訂單編號 (FK → 訂單)
- 時間戳記
}
entity "促銷活動" {
- 促銷活動編號 (PK)
- 編碼 (例如:WELCOME10)
- 折扣類型 (百分比、固定金額)
- 折扣數值
- 開始日期
- 結束日期
- 適用範圍
}
顧客 "1" -- "0..*" 訂單 : "下單"
訂單 "1" -- "0..*" 訂單明細 : "包含"
訂單 "1" -- "1" 付款 : "擁有"
訂單 "1" -- "1" 門市 : "於此下單"
門市 "1" -- "0..*" 員工 : "僱用"
菜單項目 "1" -- "0..*" 訂單明細 : "出現在"
促銷活動 "0..*" -- "1" 訂單 : "適用於"
}
🔍 未來擴展(可選)
如果您希望擴展此 ERD,可考慮新增:
-
庫存 → 追蹤庫存水準、補貨點、供應商資訊
-
班表 → 每日班次、休息時間、班次分配
-
供應商 → 誰提供食材(例如:「起司供應商」)
-
季節性菜單 → 特別促銷活動(例如:「夏季 BBQ 菜單」)
-
地理定位 → 用於外送或取貨追蹤
🚀 最後想法
此 ERD 是 真實、可擴展,且符合麥當勞營運模式 — 它反映了實際的收銀系統流程、員工角色與顧客行為。
✅ 您現在擁有 完整且可立即使用的 ERD 用於麥當勞系統——無論是學校專案、商業分析或技術設計。
- Visual Paradigm ERD 工具 – 在線建立實體關係圖:這是一款 強大且基於網路的工具 讓使用者能透過直覺的拖曳功能,輕鬆設計與視覺化資料庫結構。
- 使用 ERD 工具進行資料庫設計 – Visual Paradigm 使用指南:此資源提供一份全面指南,說明如何使用 ERD 工具設計 強健且可擴展的資料庫 並遵循資料模型與結構設計的最佳實務。
- 免費的ERD工具 – 使用Visual Paradigm在線設計資料庫:使用者可以免費在線存取ERD工具,用於建立專業的實體關係圖無需安裝或訂閱.
- 如何在Visual Paradigm ERD中繪製實體:這是一份逐步操作的使用者指南,專注於建立與自訂實體在ERD工具中,以實現精確的資料庫建模。
- 如何使用ERD建立關係型資料庫 – Visual Paradigm教學:此實用教程展示如何使用ERD來建模關係型資料庫,以有效的方式從最初的構想到完整的實現。
- 在Visual Paradigm中從ERD生成資料庫:本文提供詳細指南,說明如何自動產生資料庫結構直接從ERD利用逆向工程功能生成。
- 從ERD生成類別圖 – Visual Paradigm教學:此資源教導使用者如何將ERD轉換為類別圖以支援物件導向設計與開發工作流程。
- 使用Visual Paradigm簡化實體關係建模:本指南說明如何簡化從初步構想到最終資料庫部署的實體關係模型設計與實作流程從初步構想到最終資料庫部署.
- 在Visual Paradigm中將資料庫逆向工程為ERD:此教程教導如何將現有的資料庫逆向工程透過直覺式介面與強大的建模工具,轉換為視覺化的實體關係圖(ERD)。
- Chen符號ERD編輯器 – 進階實體關係建模:此專業編輯器支援精確的資料庫建模,全面支援實體、屬性、關係與基數,並使用陳記號法.











