Lewati ke konten utama

Struktur Database yang Tidak Menyusahkan Anda Tahun Depan

Mustaf

29 Juli 2026

1 menit baca · 2,134 kali dibaca
Struktur Database yang Tidak Menyusahkan Anda Tahun Depan

Hampir semua migrasi menyakitkan yang pernah saya kerjakan berakar pada keputusan kecil di minggu pertama proyek.

Simpan snapshot pada baris transaksi

Baris order_items harus menyimpan nama produk, versi, dan harga saat itu — bukan hanya product_id. Harga berubah, produk diarsipkan, nama diperbaiki. Invoice dua tahun lalu harus tetap bisa dibaca persis seperti saat diterbitkan.

Uang disimpan sebagai integer

Untuk rupiah, simpan sebagai unsignedBigInteger dalam satuan penuh. Tidak ada pecahan sen yang perlu dikhawatirkan, dan Anda terbebas dari kejutan floating point.

Enum sebagai string, bukan enum MySQL

Kolom ENUM di MySQL butuh ALTER TABLE setiap kali ada nilai baru — operasi yang mengunci tabel besar. Gunakan string(32) dan validasi di level aplikasi lewat PHP enum.

Index mengikuti query, bukan firasat

Jangan memasang index di setiap kolom. Jalankan EXPLAIN pada query yang benar-benar Anda pakai, lalu buat composite index sesuai urutan kolom pada WHERE dan ORDER BY. Index yang tidak terpakai memperlambat setiap operasi tulis.

Soft delete hanya untuk yang benar-benar perlu

Produk dan pesanan: ya, karena riwayat harus utuh. Baris pivot dan log: tidak — mereka hanya akan menumpuk dan memperlambat query.

#database #mysql #arsitektur

Butuh implementasinya di bisnis Anda?

Kami bantu dari analisa sampai deployment.

Request Project