
(Tập trung vào xử lý đơn hàng, trải nghiệm khách hàng và vận hành cửa hàng)

Sơ đồ quan hệ thực thể này mô hình hóa các hoạt động cốt lõi trong mộtcửa hàng McDonald’s, tập trung vào:
Dòng chảy đơn hàng từ khách hàng đến thanh toán
Vai trò nhân viên và quản lý cửa hàng
Tình trạng sẵn có và giá cả thực đơn
Chương trình khách hàng trung thành và sự tham gia lặp lại
Theo dõi tồn kho cơ bản (cho các món ăn)
Ghi chú: Đây không phải là cơ sở dữ liệu doanh nghiệp đầy đủ (ví dụ: chuỗi cung ứng hoặc nhân sự), mà là nền tảng thực tế, có thể mở rộng cho hệ thống POS thức ăn nhanh.
| Thực thể | Thuộc tính |
|---|---|
| Khách hàng | CustomerID (PK), Tên, Số điện thoại, Email, Điểm tích lũy, Cấp độ thành viên (ví dụ: Đồng, Bạc) |
| Cửa hàng | StoreID (PK), Tên, Địa điểm (Địa chỉ), ManagerID (FK → Nhân viên), Giờ mở cửa, Doanh thu tổng (tháng) |
| Nhân viên | EmployeeID (PK), Tên, Vai trò (Thu ngân, Đầu bếp, Quản lý, Giám sát viên), StoreID (FK), Ngày tuyển dụng, Lịch ca làm việc |
| Món ăn | MenuItemID (PK), Tên, Mô tả, Giá, Loại (Burger, Đồ uống, Món phụ, Tráng miệng), Đang hoạt động, URL Ảnh |
| Đơn hàng | OrderID (PK), Thời gian đặt hàng, Trạng thái (Chờ xử lý → Đang chuẩn bị → Sẵn sàng → Hoàn tất → Hủy), Tổng tiền, StoreID (FK), CustomerID (FK) |
| Chi tiết đơn hàng | OrderItemID (PK), OrderID (FK), MenuItemID (FK), Số lượng, Thành tiền (tính tự động) |
| Thanh toán | PaymentID (PK), Số tiền, Phương thức (Tiền mặt, Thẻ tín dụng, Ví điện tử), ID giao dịch, OrderID (FK), Thời điểm |
| Khuyến mãi | PromotionID (PK), Mã (ví dụ: “WELCOME10”), Loại giảm giá (Phần trăm, Cố định), Giá trị giảm giá, Ngày hoạt lực, Ngày hết hạn, Áp dụng cho (ví dụ: Bữa trưa, Tất cả sản phẩm) |
| Quan hệ | Cardinality | Mô tả |
|---|---|---|
Khách hàng → Đơn hàng |
1 → 0.. | Một khách hàng đặt nhiều đơn hàng theo thời gian. |
Đơn hàng → Sản phẩm trong đơn hàng |
1 → 0.. | Mỗi đơn hàng chứa không hoặc nhiều món trong thực đơn. |
Đơn hàng → Thanh toán |
1 → 1 | Mỗi đơn hàng hoàn tất đều có đúng một lần thanh toán. |
Đơn hàng → Cửa hàng |
1 → 1 | Mỗi đơn hàng được đặt tại một cửa hàng cụ thể. |
Cửa hàng → Nhân viên |
1 → 0.. | Một cửa hàng tuyển dụng nhiều nhân viên (thu ngân, đầu bếp, quản lý). |
Cửa hàng → Đơn hàng |
1 → 0.. | Một cửa hàng nhận được nhiều đơn hàng. |
Món ăn → Sản phẩm trong đơn hàng |
1 → 0.. | Một món ăn có thể xuất hiện trong nhiều đơn hàng. |
Khuyến mãi → Đơn hàng |
0 → 1 | Một chương trình khuyến mãi có thể áp dụng cho một đơn hàng (ví dụ: “Mua 1 Big Mac, Tặng 1 miễn phí”). |
Nhân viên → Cửa hàng |
1 → 1 | Mỗi nhân viên làm việc tại một cửa hàng. |
✅ Tùy chọn: Thêm một
Chương trình trung thànhthực thể nếu cần logic trung thành sâu hơn (ví dụ: đổi điểm, phần thưởng).
Giá phải lớn hơn 0
Trạng thái đơn hàng không thể là ‘Hoàn thành’ nếu thiếu thanh toán
Số lượng trong OrderItem ≥ 1
Khuyến mãi chỉ có thể được áp dụng nếu đang hoạt động và trong khung thời gian
Khách hàng phải được liên kết với ít nhất một đơn hàng để tích điểm trung thành
Các mục thực đơn sẽ được đánh dấu là ‘Không hoạt động’ nếu hết hàng hoặc ngừng kinh doanh
| Trường hợp sử dụng | Lợi ích |
|---|---|
| Thiết kế hệ thống POS | Cho phép theo dõi đơn hàng theo thời gian thực, thanh toán và tạo hóa đơn |
| Thông báo tồn kho | Khi một món thực đơn được đặt thường xuyên, theo dõi mức tồn kho |
| Chương trình trung thành | Theo dõi tích điểm, cung cấp giảm giá cá nhân hóa |
| Phân tích cửa hàng | Xác định các sản phẩm bán chạy nhất, giờ cao điểm, các chương trình khuyến mãi phổ biến |
| Quản lý nhân viên | Phân công vai trò, theo dõi ca làm việc, quản lý hiệu suất |
Bạn có thể sao chép và dán bất kỳ phần nào sau đây vào tài liệu, bài thuyết trình hoặc công cụ thiết kế cơ sở dữ liệu của mình.
Các thực thể:
- Khách hàng
- CustomerID (Khóa chính)
- Tên
- Số điện thoại
- Email
- Điểm trung thành
- Cấp bậc thành viên
- Cửa hàng
- StoreID (Khóa chính)
- Tên
- Địa điểm
- ManagerID (Khóa ngoại → Nhân viên)
- Giờ mở cửa
- Doanh thu hàng tháng
- Nhân viên
- EmployeeID (Khóa chính)
- Tên
- Vai trò (Thu ngân, Đầu bếp, Quản lý)
- StoreID (Khóa ngoại)
- Ngày tuyển dụng
- Món ăn
- MenuItemID (Khóa chính)
- Tên
- Mô tả
- Giá
- Danh mục
- IsActive
- Đơn hàng
- OrderID (Khóa chính)
- Thời gian đặt
- Trạng thái (Chờ xử lý, Đang chuẩn bị, Sẵn sàng, Hoàn thành, Hủy)
- CustomerID (Khóa ngoại)
- StoreID (Khóa ngoại)
- Tổng tiền
- Chi tiết đơn hàng
- OrderItemID (Khóa chính)
- OrderID (Khóa ngoại)
- MenuItemID (Khóa ngoại)
- Số lượng
- Thành tiền
- Thanh toán
- PaymentID (Khóa chính)
- Số tiền
- Phương thức (Tiền mặt, Thẻ tín dụng, Ví điện tử)
- OrderID (Khóa ngoại)
- Thời điểm
- Khuyến mãi
- PromotionID (Khóa chính)
- Mã
- Loại giảm giá
- Giá trị giảm giá
- Ngày kích hoạt
- Ngày hết hạn
- Áp dụng cho
Các mối quan hệ:
- Khách hàng "1" -- "0..*" Đơn hàng
- Đơn hàng "1" -- "0..*" Chi tiết đơn hàng
- Đơn hàng "1" -- "1" Thanh toán
- Đơn hàng "1" -- "1" Cửa hàng
- Cửa hàng "1" -- "0..*" Nhân viên
- Món ăn "1" -- "0..*" Chi tiết đơn hàng
- Khuyến mãi "0..*" -- "1" Đơn hàng (có điều kiện theo trạng thái hoạt động)
erDiagram
CUSTOMER ||--o{ ORDER : "đặt"
STORE ||--o{ ORDER : "phục vụ"
STORE ||--o{ EMPLOYEE : "tuyển dụng"
STORE ||--o{ MENU_ITEM : "bán"
ORDER ||--o{ ORDER_ITEM : "chứa"
ORDER ||--o{ PAYMENT : "có"
MENU_ITEM ||--o{ ORDER_ITEM : "xuất hiện trong"
PROMOTION ||--o{ ORDER : "áp dụng cho"
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
}

' Sơ đồ quan hệ thực thể hệ thống đặt hàng McDonald's (PlantUML)
package "Hoạt động McDonald's" {
entity "Khách hàng" {
- CustomerID (PK)
- Name
- Phone
- Email
- Điểm tích lũy
- Cấp bậc thành viên
}
entity "Cửa hàng" {
- StoreID (PK)
- Name
- Location
- ManagerID (FK → Nhân viên)
- Giờ mở cửa
- Doanh thu hàng tháng
}
entity "Nhân viên" {
- EmployeeID (PK)
- Name
- Role (Thu ngân, Đầu bếp, Quản lý)
- StoreID (FK → Cửa hàng)
- Ngày tuyển dụng
}
entity "Món ăn" {
- MenuItemID (PK)
- Name
- Description
- Price
- Category (Burger, Drink, Side)
- IsActive
}
entity "Đơn hàng" {
- OrderID (PK)
- OrderTime
- Status (Pending, Preparing, Ready, Completed)
- CustomerID (FK → Khách hàng)
- StoreID (FK → Cửa hàng)
- TotalAmount
}
entity "Chi tiết đơn hàng" {
- OrderItemID (PK)
- OrderID (FK → Đơn hàng)
- MenuItemID (FK → Món ăn)
- Quantity
- LineTotal
}
entity "Thanh toán" {
- PaymentID (PK)
- Amount
- Method (Cash, CreditCard)
- OrderID (FK → Đơn hàng)
- Timestamp
}
entity "Khuyến mãi" {
- PromotionID (PK)
- Code (e.g., WELCOME10)
- DiscountType (Percentage, Fixed)
- DiscountValue
- ActiveDate
- ExpireDate
- AppliesTo
}
Khách hàng "1" -- "0..*" Đơn hàng : "đặt"
Đơn hàng "1" -- "0..*" Chi tiết đơn hàng : "chứa"
Đơn hàng "1" -- "1" Thanh toán : "có"
Đơn hàng "1" -- "1" Cửa hàng : "được đặt tại"
Cửa hàng "1" -- "0..*" Nhân viên : "tuyển dụng"
Món ăn "1" -- "0..*" Chi tiết đơn hàng : "xuất hiện trong"
Khuyến mãi "0..*" -- "1" Đơn hàng : "áp dụng cho"
}
Nếu bạn muốn mở rộng sơ đồ ERD này, hãy cân nhắc thêm:
Kho hàng → Theo dõi mức tồn kho, điểm đặt hàng lại, thông tin nhà cung cấp
Lịch ca làm việc → Ca hàng ngày, thời gian nghỉ, phân công ca làm việc
Nhà cung cấp → Ai cung cấp nguyên liệu (ví dụ: “Nhà cung cấp phô mai”)
Thực đơn theo mùa → Các chương trình khuyến mãi đặc biệt (ví dụ: “Thực đơn BBQ mùa hè”)
Vị trí địa lý → Dùng để theo dõi giao hàng hoặc nhận hàng
Sơ đồ ERD này là thực tế, có thể mở rộng và phù hợp với hoạt động của McDonald’s — nó phản ánh đúng quy trình làm việc thực tế của hệ thống POS, vai trò nhân viên và hành vi khách hàng.
✅ Bây giờ bạn đã có một sơ đồ ERD hoàn chỉnh, sẵn sàng sử dụng cho hệ thống McDonald’s — dù là cho một dự án học đường, phân tích kinh doanh hay thiết kế kỹ thuật.