Veritabanı Normalizasyon ve Denormalizasyon

Nedim Bilgiç 8 dk okuma

Veritabanı normalizasyonu, veri tekrarını azaltmak ve veri bütünlüğünü sağlamak için tabloları organize etme sürecidir. Ancak bazı durumlarda performans için bilinçli olarak denormalizasyon tercih edilir.

Normal Formlar

1NF - Birinci Normal Form

Her sütun atomik (bölünemez) değerler içermelidir:

-- YANLIŞ: Tekrarlı grup
user_id | phone_numbers
1       | 555-1234, 555-5678

-- DOĞRU: Ayrı tablo
user_phones: user_id | phone_number
             1      | 555-1234
             1      | 555-5678

2NF - İkinci Normal Form

1NF'yi sağlamalı ve tüm alanlar birincil anahtara tam bağımlı olmalıdır. Kısmi bağımlılıklar ayrı tablolara taşınmalıdır.

3NF - Üçüncü Normal Form

2NF'yi sağlamalı ve geçişli bağımlılıklar olmamalıdır:

-- YANLIŞ: Geçişli bağımlılık
orders: order_id | customer_id | customer_name

-- DOĞRU: Ayrı tablolar
orders: order_id | customer_id
customers: customer_id | customer_name

Ne Zaman Denormalizasyon?

  • Okuma ağırlıklı sistemlerde JOIN maliyetini düşürmek için
  • Raporlama ve analitik tablolarında
  • Önbellek tabloları (materialized views) oluşturmak için
  • Çok yüksek trafikli uygulamalarda

Sonuç

Normalizasyon, veritabanı tasarımının temelidir. Önce normalize edin, ardından performans testleri sonucunda gerekli yerlerde bilinçli olarak denormalize edin. Erken denormalizasyon, bakım maliyetini artırır.

NB
Nedim Bilgiç

Backend Developer. Kurumsal web siteler, e-ticaret çözümleri ve özel yazılım projeleri geliştiriyorum.