← Kursa Dön
📄 Text · 25 min

Denormalizasyon — Ne Zaman Yapılır?

Giriş — Normalizasyonun Bedeli

Normalizasyon veri bütünlüğünü artırır ama bir bedeli var: daha fazla tablo = daha fazla JOIN = daha yavaş sorgular. Denormalizasyon, performans kazanmak için kasıtlı olarak veri tekrarı yaratma stratejisidir.

🎯 Analoji: Bir kütüphanede her kitabın detayı ana kayıt defterinde. Ama en popüler 10 kitabın bilgisini girişteki panoya da yazdın — her seferinde kayıt defterine koşmak yerine panoya bakarsın. Bu denormalizasyon: veri tekrarı var ama erişim hızlı.


Ne Zaman Denormalize Edilir?

  1. Okuma ağırlıklı tablolar: Raporlama/analytics sorguları çok JOIN gerektiriyorsa

  2. Sık erişilen hesaplama sonuçları: Her sorguda SUM/COUNT hesaplamak yerine saklama

  3. Performans darboğazı: EXPLAIN ile kanıtlanmış yavaşlık


Denormalizasyon Teknikleri

1. Hesaplanmış Sütun Ekleme

-- Normalizasyon: her seferinde sipariş kalemlerinden hesapla
SELECT o.order_id, SUM(oi.quantity * oi.unit_price) AS total
FROM orders o JOIN order_items oi ON o.order_id = oi.order_id
GROUP BY o.order_id;

-- Denormalizasyon: total_amount sütununu orders'ta sakla
ALTER TABLE orders ADD COLUMN total_amount DECIMAL(10,2);
-- Sipariş oluşturulduğunda veya güncellendiğinde trigger ile güncelle

2. Sık Erişilen Sütunu Kopyalama

-- Her sipariş sorgusunda müşteri adı için JOIN gerekir
-- Denormalizasyon: müşteri adını orders'ta da tut
ALTER TABLE orders ADD COLUMN customer_name VARCHAR(100);
-- ⚠️ Müşteri adı değişirse orders'ta da güncellenmeli!

3. Özet/Raporlama Tabloları

-- Günlük satış özeti (her gün otomatik güncellenir)
CREATE TABLE daily_sales (
    report_date DATE PRIMARY KEY,
    total_orders INT,
    total_revenue DECIMAL(12,2),
    avg_order_value DECIMAL(10,2),
    unique_customers INT
);

Denormalizasyonun Riskleri

RiskAçıklamaÇözüm
Güncelleme anomalisiKopya veri tutarsız olabilirTrigger veya uygulama katmanında senkronizasyon
Disk alanıTekrar eden veri daha fazla yer kaplarÇoğunlukla kabul edilebilir
KarmaşıklıkHangi veri "gerçek", hangisi kopya?Dokümantasyon

Altın Kural

Önce normalize et, sonra performans gerekiyorsa kanıtla (EXPLAIN), sonra denormalize et. Erken denormalizasyon anti-pattern'dir.


Özet

  • Denormalizasyon, performans için kasıtlı veri tekrarıdır

  • Hesaplanmış sütunlar, kopya alanlar ve özet tablolar yaygın tekniklerdir

  • Güncelleme anomalileri riski vardır — trigger/uygulama ile senkronize et

  • Önce normalize et, performans sorunu kanıtlanırsa denormalize et