Implementasi lengkap struktur basis data sesuai diagram arsitektur sistem pemesanan barang
┌──────────────┐
│ CUSTOMER │
└──────┬───────┘
│ 1
│
│ N
┌──────▼───────┐
│ PESANAN │
└──────┬───────┘
│
┌─────────────────────┼─────────────────────┐
│ 1 │ 1 │ 1
│ │ │
│ N │ N │ 0..1
┌────────▼────────┐ ┌───────▼────────┐ ┌───────▼─────────────┐
│ DETAIL_PESANAN │ │ PEMBAYARAN │ │ PENGIRIMAN_PENGAMBILAN│
└────────┬────────┘ └────────────────┘ └─────────┬───────────┘
│ │
┌───┼───────────────┐ │ 0..1
│ │ │ │
│ │ │ ▼
│ │ │ ┌──────────────────┐
│ │ │ │DETAIL_PENGIRIMAN │
│ │ │ └──────────────────┘
│ │ │
│ │ └──── N : 1 ────┐
│ │ │
│ │ ┌──────▼──────┐
│ │ │ TOKO │
│ │ └─────────────┘
│ │
│ │ 1
│ │
│ │ N
│ ▼
│ DETAIL_FEE
│ │
│ │ N
│ │
│ │ 1
│ ▼
│ JENIS_FEE
│ │
│ │ 1
│ │
│ │ N
│ ▼
│ MASTER_FEE
│
│ 1
│
│ N
▼
REFUND
PESANAN ──1:N──> RIWAYAT_STATUS_PESANAN <──N:1── ADMIN
erDiagram
CUSTOMER ||--o{ PESANAN : "1 : N"
PESANAN ||--|{ DETAIL_PESANAN : "1 : N"
PESANAN ||--|{ PEMBAYARAN : "1 : N"
PESANAN ||--o| PENGIRIMAN_PENGAMBILAN : "1 : 0..1"
PENGIRIMAN_PENGAMBILAN ||--o| DETAIL_PENGIRIMAN : "0..1 : 0..1"
DETAIL_PESANAN }o--|| TOKO : "N : 1"
DETAIL_PESANAN ||--o{ DETAIL_FEE : "1 : N"
JENIS_FEE ||--|{ DETAIL_FEE : "1 : N"
JENIS_FEE ||--|{ MASTER_FEE : "1 : N"
TOKO ||--|{ PRODUK : "1 : N"
PRODUK ||--o{ PRODUK_FEE : "1 : N"
MASTER_FEE ||--o{ PRODUK_FEE : "1 : N"
DETAIL_PESANAN ||--o{ REFUND : "1 : N"
PESANAN ||--o{ RIWAYAT_STATUS_PESANAN : "1 : N"
ADMIN ||--o{ RIWAYAT_STATUS_PESANAN : "1 : N"
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_customer | INT | Primary Key (AI) |
| nama | VARCHAR(100) | Nama Pembeli |
| VARCHAR(100) | Email Unik | |
| telepon | VARCHAR(20) | No WhatsApp |
| alamat | TEXT | Alamat Default |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_pesanan | INT | Primary Key (AI) |
| id_customer | INT | Foreign Key (CUSTOMER) |
| kode_pesanan | VARCHAR(30) | Kode Unik Pesanan |
| total_bayar | DECIMAL | Subtotal + Fee + Ongkir |
| status | ENUM | Menunggu/Diproses/dll |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_detail_pesanan | INT | Primary Key (AI) |
| id_pesanan | INT | FK ke PESANAN |
| id_toko | INT | FK ke TOKO (N:1) |
| id_produk | INT | FK ke PRODUK |
| harga_satuan, jumlah, subtotal | DECIMAL, INT | Item breakdown |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_toko | INT | Primary Key (AI) |
| nama_toko | VARCHAR(100) | Nama Merchant/Toko |
| pemilik | VARCHAR(100) | Nama Pemilik |
| alamat, telepon | TEXT, VARCHAR | Kontak Toko |
| status | ENUM | Aktif / Nonaktif |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_pembayaran | INT | Primary Key (AI) |
| id_pesanan | INT | FK ke PESANAN (1:N) |
| metode_pembayaran | ENUM | Transfer / QRIS / COD |
| jumlah_bayar | DECIMAL | Nominal Transfer |
| status_pembayaran | ENUM | Menunggu / Diterima |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_pengiriman_pengambilan | INT | PK ke PESANAN (0..1) |
| tipe | ENUM | PENGIRIMAN / PENGAMBILAN |
| id_detail_pengiriman | INT | Relasi 0..1 ke PENGIRIMAN |
| ekspedisi, nomor_resi | VARCHAR | Data Kurir & Resi |
| alamat_tujuan, penerima | TEXT, VARCHAR | Tujuan Kirim |
| Tabel | Kunci Relasi | Deskripsi |
|---|---|---|
| DETAIL_FEE | id_detail_pesanan, id_jenis_fee | Fee riil per item |
| JENIS_FEE | id_jenis_fee | Kategori fee (layanan/asuransi) |
| MASTER_FEE | id_jenis_fee | Master tarif & konfigurasi nominal |
| Kolom | Tipe | Keterangan |
|---|---|---|
| id_refund | INT | Primary Key (AI) |
| id_detail_pesanan | INT | FK ke DETAIL_PESANAN (1:N) |
| jumlah_refund | DECIMAL | Nominal yang direfund |
| alasan, bukti_foto | TEXT, VARCHAR | Bukti komplain barang |
| status_refund | ENUM | Menunggu/Disetujui/Ditolak |
| Kolom | Tipe | Keterangan |
|---|---|---|
| ADMIN | id_admin | Pengelola Sistem |
| RIWAYAT | id_riwayat | Log Audit Status |
| id_pesanan | INT | FK PESANAN (1:N) |
| id_admin | INT | FK ADMIN (1:N) |
| status_sebelum & baru | VARCHAR | Status transisi & audit |