Denormalisasi — Database

Apa itu Denormalisasi? Denormalisasi adalah proses yang berlawanan dengan normalisasi — menambahkan redundansi data secara sengaja untuk meningkatkan performa b

Apa itu Denormalisasi?

Denormalisasi adalah proses yang berlawanan dengan normalisasi — menambahkan redundansi data secara sengaja untuk meningkatkan performa baca (read performance).

Mengapa Denormalisasi?

Contoh Denormalisasi

-- Normalized (perlu JOIN)
SELECT o.id, o.total, u.name
FROM orders o
JOIN users u ON o.user_id = u.id;

-- Denormalized (tanpa JOIN, lebih cepat)
-- Tambahkan kolom customer_name langsung di orders
ALTER TABLE orders ADD COLUMN customer_name VARCHAR(100);

SELECT id, total, customer_name FROM orders;

Trade-offs

Teknik Denormalisasi Umum

-- 1. Computed column (counter cache)
ALTER TABLE users ADD COLUMN posts_count INT DEFAULT 0;
-- Update saat ada post baru, tidak perlu COUNT() setiap query

-- 2. Materialized view
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT DATE_TRUNC('month', created_at) AS month,
       SUM(total) AS revenue,
       COUNT(*) AS order_count
FROM orders
GROUP BY month;

-- 3. JSON column untuk data yang sering diakses bersama
ALTER TABLE orders ADD COLUMN items_snapshot JSONB;

Kapan Denormalisasi?

Gunakan denormalisasi hanya setelah normalisasi, dan hanya jika ada bukti performa (benchmarks, slow query logs). Jangan denormalisasi secara prematur.

Yang akan kamu pelajari