
(Berfokus pada Pemrosesan Pesanan, Pengalaman Pelanggan & Operasional Toko)

Diagram Entitas-Relasi ini memodelkan operasi inti di sebuah toko McDonaldâs, dengan fokus pada:
Alur pesanan dari pelanggan hingga pembayaran
Peran karyawan dan manajemen toko
Ketersediaan menu dan penetapan harga
Loyalitas pelanggan dan keterlibatan berulang
Pelacakan stok dasar (untuk item makanan)
Catatan: Ini bukan basis data perusahaan lengkap (misalnya rantai pasokan atau HR), tetapi fondasi realistis dan dapat diskalakan untuk sistem POS makanan cepat saji.
| Entitas | Atribut |
|---|---|
| Pelanggan | CustomerID (Kunci Utama), Nama, Telepon, Email, Poin Loyalitas, Tingkat Keanggotaan (misalnya: Perak, Perunggu) |
| Toko | StoreID (Kunci Utama), Nama, Lokasi (Alamat), ManagerID (Kunci Asing â Karyawan), Jam Buka, Total Penjualan (bulanan) |
| Karyawan | EmployeeID (Kunci Utama), Nama, Peran (Kasir, Koki, Manajer, Pengawas), StoreID (Kunci Asing), Tanggal Rekrutmen, Jadwal Shift |
| Item Menu | MenuItemID (Kunci Utama), Nama, Deskripsi, Harga, Kategori (Burger, Minuman, Sampingan, Dessert), Aktif, URLGambar |
| Pesanan | OrderID (Kunci Utama), WaktuPesanan, Status (Menunggu â Sedang Dibuat â Siap â Selesai â Dibatalkan), JumlahTotal, StoreID (Kunci Asing), CustomerID (Kunci Asing) |
| Item Pesanan | OrderItemID (Kunci Utama), OrderID (Kunci Asing), MenuItemID (Kunci Asing), Jumlah, TotalBaris (dihitung otomatis) |
| Pembayaran | PaymentID (Kunci Utama), Jumlah, Metode (Tunai, Kartu Kredit, MobilePay), IDTransaksi, OrderID (Kunci Asing), Timestamp |
| Promosi | PromosiID (PK), Kode (misalnya âWELCOME10â), TipeDiskon (Persentase, Tetap), NilaiDiskon, TanggalAktif, TanggalKadaluarsa, BerlakuUntuk (misalnya Makan Siang, SemuaItem) |
| Hubungan | Kardinalitas | Deskripsi |
|---|---|---|
Pelanggan â Pesanan |
1 â 0.. | Seorang pelanggan membuat beberapa pesanan dari waktu ke waktu. |
Pesanan â ItemPesanan |
1 â 0.. | Setiap pesanan berisi nol atau lebih item menu. |
Pesanan â Pembayaran |
1 â 1 | Setiap pesanan yang selesai memiliki tepat satu pembayaran. |
Pesanan â Toko |
1 â 1 | Setiap pesanan dibuat di satu toko tertentu. |
Toko â Karyawan |
1 â 0.. | Sebuah toko memiliki beberapa staf (kasir, koki, manajer). |
Toko â Pesanan |
1 â 0.. | Sebuah toko menerima banyak pesanan. |
Item Menu â Item Pesanan |
1 â 0.. | Sebuah item menu dapat muncul dalam beberapa pesanan. |
Promosi â Pesanan |
0 â 1 | Sebuah promosi dapat diterapkan pada pesanan (misalnya, âBeli 1 Big Mac, Dapat 1 Gratisâ). |
Karyawan â Toko |
1 â 1 | Setiap karyawan bekerja di satu toko. |
â Â Opsional: TambahkanÂ
Program Loyalitasentitas jika logika loyalitas yang lebih mendalam diperlukan (misalnya, penukaran poin, hadiah).
Harga harus > 0
Status pesanan tidak boleh ‘Selesai’ jika pembayaran tidak ada
Jumlah dalam Item Pesanan â„ 1
Promosi hanya dapat diterapkan jika aktif dan berada dalam jangka waktu tertentu
Pelanggan harus terhubung dengan setidaknya satu pesanan untuk mendapatkan poin loyalitas
Item menu ditandai sebagai ‘Tidak Aktif’ jika habis stok atau sudah dihentikan
| Kasus Penggunaan | Manfaat |
|---|---|
| Desain Sistem POS | Memungkinkan pelacakan pesanan secara real-time, pembayaran, dan pembuatan struk |
| Pemberitahuan Persediaan | Ketika suatu item menu dipesan secara sering, pantau tingkat stok |
| Program Loyalitas | Lacak akumulasi poin, tawarkan diskon yang dipersonalisasi |
| Analitik Toko | Identifikasi item terlaris, jam-jam puncak, promosi populer |
| Manajemen Karyawan | Tetapkan peran, lacak shift, kelola kinerja |
Anda dapat menyalin dan menempelkan salah satu dari berikut ini ke dalam dokumentasi, presentasi, atau alat desain basis data Anda.
Entitas:
- Pelanggan
- IDPelanggan (PK)
- Nama
- Telepon
- Email
- PoinLoyalitas
- TingkatKeanggotaan
- Toko
- IDToko (PK)
- Nama
- Lokasi
- IDManajer (FK â Karyawan)
- JamBuka
- PenjualanBulanan
- Karyawan
- IDKaryawan (PK)
- Nama
- Peran (Kasir, Koki, Manajer)
- IDToko (FK)
- TanggalRekrutmen
- ItemMenu
- IDItemMenu (PK)
- Nama
- Deskripsi
- Harga
- Kategori
- Aktif
- Pesanan
- IDPesanan (PK)
- WaktuPesanan
- Status (Menunggu, DalamProses, Siap, Selesai, Dibatalkan)
- IDPelanggan (FK)
- IDToko (FK)
- JumlahTotal
- ItemPesanan
- IDItemPesanan (PK)
- IDPesanan (FK)
- IDItemMenu (FK)
- Jumlah
- TotalBaris
- Pembayaran
- IDPembayaran (PK)
- Jumlah
- Metode (Tunai, KartuKredit, PembayaranMobile)
- IDPesanan (FK)
- Timestamp
- Promosi
- IDPromosi (PK)
- Kode
- JenisDiskon
- NilaiDiskon
- TanggalAktif
- TanggalKadaluarsa
- BerlakuUntuk
Hubungan:
- Pelanggan "1" -- "0..*" Pesanan
- Pesanan "1" -- "0..*" ItemPesanan
- Pesanan "1" -- "1" Pembayaran
- Pesanan "1" -- "1" Toko
- Toko "1" -- "0..*" Karyawan
- ItemMenu "1" -- "0..*" ItemPesanan
- Promosi "0..*" -- "1" Pesanan (bersyarat pada status aktif)
erDiagram
CUSTOMER ||--o{ ORDER : "menempatkan"
STORE ||--o{ ORDER : "melayani"
STORE ||--o{ EMPLOYEE : "mengpekerjakan"
STORE ||--o{ MENU_ITEM : "menjual"
ORDER ||--o{ ORDER_ITEM : "mengandung"
ORDER ||--o{ PAYMENT : "memiliki"
MENU_ITEM ||--o{ ORDER_ITEM : "muncul dalam"
PROMOTION ||--o{ ORDER : "diterapkan pada"
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
}

' ERD Sistem Pesanan McDonald's (PlantUML)
package "Operasi McDonald's" {
entity "Pelanggan" {
- CustomerID (PK)
- Nama
- Telepon
- Email
- PoinLoyalitas
- TingkatKeanggotaan
}
entity "Toko" {
- StoreID (PK)
- Nama
- Lokasi
- ManagerID (FK â Karyawan)
- JamBuka
- PenjualanBulanan
}
entity "Karyawan" {
- EmployeeID (PK)
- Nama
- Peran (Kasir, Koki, Manajer)
- StoreID (FK â Toko)
- TanggalRekrutmen
}
entity "MenuItem" {
- MenuItemID (PK)
- Nama
- Deskripsi
- Harga
- Kategori (Burger, Minuman, Sampingan)
- Aktif
}
entity "Pesanan" {
- OrderID (PK)
- WaktuPesanan
- Status (Menunggu, DalamProses, Siap, Selesai)
- CustomerID (FK â Pelanggan)
- StoreID (FK â Toko)
- JumlahTotal
}
entity "ItemPesanan" {
- OrderItemID (PK)
- OrderID (FK â Pesanan)
- MenuItemID (FK â MenuItem)
- Jumlah
- TotalBaris
}
entity "Pembayaran" {
- PaymentID (PK)
- Jumlah
- Metode (Tunai, KartuKredit)
- OrderID (FK â Pesanan)
- Timestamp
}
entity "Promosi" {
- PromotionID (PK)
- Kode (contoh: WELCOME10)
- TipeDiskon (Persentase, Tetap)
- NilaiDiskon
- TanggalAktif
- TanggalKadaluarsa
- BerlakuUntuk
}
Pelanggan "1" -- "0..*" Pesanan : "memesan"
Pesanan "1" -- "0..*" ItemPesanan : "mengandung"
Pesanan "1" -- "1" Pembayaran : "memiliki"
Pesanan "1" -- "1" Toko : "ditempatkan di"
Toko "1" -- "0..*" Karyawan : "menggunakan"
MenuItem "1" -- "0..*" ItemPesanan : "muncul di"
Promosi "0..*" -- "1" Pesanan : "berlaku untuk"
}
Â
Jika Anda ingin memperluas ERD ini, pertimbangkan untuk menambahkan:
Inventaris â Melacak tingkat stok, titik pemesanan ulang, informasi pemasok
Jadwal Shift â Shift harian, waktu istirahat, penugasan shift
Pemasok â Siapa yang menyuplai bahan makanan (contoh: âPemasok Kejuâ)
Menu Musiman â Promosi khusus (contoh: âMenu BBQ Musim Panasâ)
Geolokasi â Untuk pelacakan pengiriman atau pengambilan
ERD ini adalah realistis, dapat diskalakan, dan selaras dengan operasi McDonaldâs â mencerminkan alur kerja POS yang sebenarnya, peran karyawan, dan perilaku pelanggan.
â Anda sekarang memiliki ERD lengkap, siap digunakan untuk sistem McDonaldâs â baik untuk proyek sekolah, analisis bisnis, atau desain teknis.