Praktik terbaik hanya bernilai ketika bisa dijadikan daftar periksa, bukan prinsip abstrak. Chapter ini merangkum keputusan-keputusan yang sepanjang Course ini terbukti menentukan sehat-tidaknya sebuah database MySQL — dari kebiasaan penamaan sampai disiplin backup — dan menyajikannya sebagai audit yang bisa Anda jalankan terhadap proyek sendiri. Setiap butir merujuk kembali ke chapter yang membahas alasannya, karena praktik tanpa alasan cepat meluntur menjadi dogma.

Disiplin Skema dan Penamaan #

Skema yang sehat dimulai dari kebiasaan kecil yang konsisten. Daftar periksa berikut adalah standar minimum yang dipakai seluruh proyek di Section Proyek:

  • Nama tabel dan kolom memakai snake_case lowercase tanpa prefiks nama database — detail_pesanan, bukan t_detail_pesanan_tbl.
  • Setiap tabel punya primary key eksplisit; kunci sintetis AUTO_INCREMENT menjadi default, natural key hanya bila benar-benar stabil dan unik.
  • Foreign key didefinisikan di database, bukan hanya di kepala programmer — dan diberi nama eksplisit (fk_pesanan_pelanggan) agar pesan galat mudah dibaca.
  • Tipe data dipilih paling kecil yang cukup: uang selalu DECIMAL, status bernilai tetap jadi ENUM, teks panjang TEXT, dan utf8mb4 untuk semua string.
  • Kolom waktu memakai DATETIME untuk kejadian lokal dan TIMESTAMP bila zona waktu perlu dikonversi otomatis.

Audit cepatnya satu query — tabel tanpa primary key terlihat langsung dari information_schema, dan keberadaan foreign key bisa dicek per tabel. Skema yang lolos lima butir di atas akan menolak data salah sebelum aplikasi sempat membuatnya.

Kebiasaan Query yang Sehat #

Di sisi query, lima kebiasaan ini memisahkan kode yang mudah hidup bertahun-tahun dari kode yang jadi sumber bug laten:

  1. Selalu ORDER BY untuk hasil multi-baris — urutan tanpa ORDER BY tidak dijamin MySQL 8, dan query yang mengandalkannya rusak diam-diam saat data bertambah.
  2. Uang tidak pernah lewat FLOAT — pembulatan biner menghasilkan selisih sen yang menumpuk di laporan; DECIMAL(10,2) adalah satu-satunya rumah yang benar.
  3. UPDATE dan DELETE selalu dengan WHERE — dan sebelum menjalankan versi berat, jalankan dulu SELECT dengan WHERE yang sama untuk melihat korban.
  4. Kolom di-hitung tidak dipercaya tanpa COALESCE — SUM atas nol baris menghasilkan NULL, bukan nol, dan laporan yang tidak siap untuk itu menampilkan sel kosong yang membingungkan.
  5. Subquery berkorelasi di tabel besar diperiksa ulang — pola yang indah di data kecil bisa menjadi beban O(n²) di jutaan baris; bandingkan dengan versi join atau window.

Keamanan dan Aplikasi #

Lapisan keamanan yang sehat bertumpuk: akun aplikasi dengan privilege minimum (SELECT, INSERT, UPDATE, DELETE di satu database — tanpa DROP), prepared statement untuk semua input pengguna, password yang lolos kebijakan kuat, koneksi terenkripsi di jaringan terbuka, dan variabel berisiko (local_infile, secure_file_priv) dalam keadaan ditinjau. Prinsip tunggalnya: satu lapisan boleh gagal tanpa membocorkan segalanya. Daftar periksa lengkapnya ada di Secure Database Configuration , dan pola prepared statement per bahasa di Prepared Statements dalam Aplikasi .

Pemeliharaan Berkala #

Database yang hidup butuh perawatan berulang. Ritme berikut adalah titik awal yang wajar untuk aplikasi menengah:

AktivitasFrekuensiAlat
Backup full + uji restoreMingguan + drill kuartalanmysqldump + drill
Tinjau slow query logMingguanSlow Query Log
Audit index tak terpakaiBulananSHOW INDEX + EXPLAIN
Audit user dan privilegeKuartalanSHOW GRANTS + Least Privilege
ANALYZE TABLE tabel sibukSesudah lonjakan penulisan besarPemeliharaan Database

Ketika Performa Menjadi Masalah #

Urutan diagnosis performa yang sehat selalu dari bukti ke dugaan: identifikasi query lambat lewat slow log, baca rencana eksekusinya dengan EXPLAIN, baru hipotesis — kurang index? fungsi pada kolom? join tanpa kunci? — lalu perbaiki satu hal dan ukur ulang. Pola penyakit paling umum beserta obatnya sudah dipetakan di Query yang Lambat ; disiplinnya adalah menolak mengoptimalkan sebelum membaca execution plan, karena intuisi tentang letak kemacetan sering salah.

Referensi #

Daftar periksa ini menutup siklus belajar: dari sintaks, desain, sampai operasi harian. Chapter berikutnya menyiapkan Anda untuk momen ketika semuanya berjalan salah — kumpulan galat paling umum beserta pola pemecahannya.