Mengapa Tipe Data Penting?
Memilih tipe data yang tepat memengaruhi storage, performa, dan integritas data. Tipe data yang salah bisa menyebabkan bug halus dan pemborosan resource.
String Types
-- CHAR(n): fixed-length, cocok untuk data yang pasti panjangnya tetap
country_code CHAR(2) -- "ID", "US" (selalu 2 karakter)
status_code CHAR(3) -- "ACT", "DEL" (selalu 3 karakter)
-- VARCHAR(n): variable-length, cocok untuk data dengan panjang bervariasi
name VARCHAR(100) -- nama 1-100 karakter
email VARCHAR(255) -- email bervariasi panjangnya
-- TEXT: tanpa batas panjang, cocok untuk konten panjang
bio TEXT -- bisa sangat panjang
body TEXT -- artikel/blog post
Numeric Types
-- Integer types
SMALLINT -- -32768 to 32767 (2 bytes)
INTEGER -- -2B to 2B (4 bytes) — paling umum
BIGINT -- sangat besar (8 bytes) — untuk ID yang sangat banyak
-- Decimal types
DECIMAL(10,2) -- exact: untuk uang (10 digit, 2 desimal)
FLOAT -- approximate: untuk kalkulasi sains
-- JANGAN gunakan FLOAT untuk uang! Bisa ada rounding error
Date & Time Types
DATE -- hanya tanggal: 2024-01-15
TIME -- hanya waktu: 14:30:00
TIMESTAMP -- tanggal + waktu: 2024-01-15 14:30:00
TIMESTAMPTZ -- timestamp + timezone (recommended!)
Boolean & Lainnya
BOOLEAN -- true/false
UUID -- identifier unik global
JSONB -- JSON binary (PostgreSQL, lebih cepat dari JSON)
ARRAY -- array native (PostgreSQL)
Best Practices
- Gunakan INTEGER untuk ID biasa, BIGINT jika skala sangat besar
- Gunakan DECIMAL untuk uang, JANGAN FLOAT
- Gunakan TIMESTAMPTZ untuk waktu (selalu simpan timezone)
- Gunakan VARCHAR(n) dengan batas yang masuk akal
- Gunakan TEXT hanya jika benar-benar perlu tanpa batas