Read this post in: de_DEen_USes_ESfr_FRhi_INjapl_PLpt_PTru_RUvizh_CNzh_TW

🍟 ERD Komprehensif: Sistem Operasi Terpadu McDonald’s

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


🔍 Konteks Bisnis

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

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 (dengan Kardinalitas)

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).


🔒 Kendala & Aturan Bisnis

  • 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 (Mengapa ERD Ini Penting)

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

📂 Format Output

Anda dapat menyalin dan menempelkan salah satu dari berikut ini ke dalam dokumentasi, presentasi, atau alat desain basis data Anda.


✅ 1. ERD Berbasis Teks (untuk dokumentasi)

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)

✅ 2. Versi Mermaid.js (untuk Markdown, Notion, Obsidian)

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
    }


✅ 3. Versi PlantUML 

' 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"
}

 


🔍 Ekstensi Masa Depan (Opsional)

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


🚀 Pikiran Akhir

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.

Sidebar Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...