Merancang skema database yang baik adalah salah satu skill terpenting seorang developer.
Normalisasi — proses mengorganisir data untuk menghindari redundansi.
1NF (First Normal Form):
- Setiap kolom menyimpan satu nilai (tidak ada array/list di satu kolom)
- ❌
hobi: "coding, gaming, reading" - ✅ Tabel terpisah
user_hobbiesdengan satu hobi per baris
2NF (Second Normal Form):
- Sudah 1NF + semua kolom non-key bergantung pada seluruh primary key
- ❌ Tabel
ordersdengan kolomcustomer_name(bergantung pada customer_id, bukan order) - ✅ Pisahkan ke tabel
customers
3NF (Third Normal Form):
- Sudah 2NF + tidak ada ketergantungan transitif
- ❌ Kolom
citydanprovincedi tabelusers(province bergantung pada city) - ✅ Tabel
citiesterpisah dengan kolomprovince
Tips desain:
- Setiap tabel punya
idsebagai PRIMARY KEY - Gunakan nama tabel plural (
users,posts,orders) - Foreign key:
nama_tabel_singular_id(user_id,post_id) - Tambahkan
created_atdanupdated_atuntuk audit trail - Jangan over-normalize — kadang denormalisasi diperlukan untuk performa