Veritabanı Normalizasyonu (Normal Formlar) Nedir?
Sözlük

Veritabanı Normalizasyonu (Normal Formlar) Nedir?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Veritabanı normalizasyonu nedir, birinci, ikinci ve üçüncü normal form ne anlatır, tekrar eden veriyi azaltma örneği ve denormalizasyonla farkı.

Normalizasyon nedir?

Veritabanı normalizasyonu, tabloları veri tekrarını ve tutarsızlığı azaltacak şekilde bölüp yeniden düzenleme sürecidir. Aynı bilginin birçok yerde tutulması, güncelleme sırasında bazı kopyaların değişip bazılarının eski kalmasına yol açar. Normalizasyon, her bilginin tek bir yerde ve doğru tabloda tutulmasını hedefler.

Bu düzenleme normal form adı verilen kurallara göre yapılır. Her form, bir öncekinin koşullarını sağlayarak daha sıkı bir yapı ister. Pratikte birçok uygulama için ilk birkaç formun sağlanması ve bazen bir ek formun uygulanması yeterli kabul edilir.

Neden gerekli? Tutarsızlık anomalileri

Normalize edilmemiş bir tabloda üç tür sorun görülür. Ekleme anomalisinde, yeni bir müşteriyi eklemek için henüz var olmayan bir sipariş kaydı girmek zorunda kalırsınız. Güncelleme anomalisinde, müşterinin adresini birçok satırda değiştirmeniz gerekir; biri atlanırsa veri çelişir. Silme anomalisinde, bir siparişi silerken müşteri bilgisi de kaybolur.

Normalizasyon bu üç sorunu, bilgiyi doğru tablolara bölüp tablolar arasında anahtarlarla ilişki kurarak çözer.

Normal formlar kısaca ne söyler?

  • Birinci normal form: Her sütun tek bir değer tutar; bir hücrede liste ya da tekrar eden grup bulunmaz, her satır benzersiz tanımlanabilir.
  • İkinci normal form: Birinci formdadır ve birleşik anahtarlı tablolarda, anahtar dışındaki her alan anahtarın tamamına bağlıdır, bir kısmına değil.
  • Üçüncü normal form: İkinci formdadır ve anahtar olmayan bir alan, başka bir anahtar olmayan alana bağlı değildir. Yani alanlar doğrudan anahtara bağlıdır, dolaylı olarak değil.

Bunların ötesinde Boyce-Codd normal formu gibi daha sıkı biçimler vardır; bunlara özel durumlarda ihtiyaç duyulur.

Örnek: sipariş tablosunu normalize etmek

Örneğin tek bir tabloda her satır bir sipariş kalemini tutuyor ve satırda müşteri adı, müşteri şehri, ürün adı, ürün fiyatı ve adet bulunuyor. Aynı müşterinin her siparişinde adı ve şehri tekrar yazılır; ürün fiyatı da her satırda kopyalanır.

Normalizasyonla bu tablo bölünür: müşteriler ayrı bir tabloya, ürünler ayrı bir tabloya, siparişler ve sipariş kalemleri ayrı tablolara taşınır. Sipariş tablosu müşteriye müşteri numarasıyla, kalem tablosu ürüne ürün numarasıyla bağlanır. Artık bir müşterinin şehri değiştiğinde yalnız bir satır güncellenir, ürün fiyatı tek yerde yaşar ve tutarsızlık riski düşer.

Denormalizasyon ne zaman düşünülür?

Normalizasyonun bedeli, verinin çok tabloya dağılması ve sorguların çok sayıda birleştirme (join) gerektirmesidir. Okuma ağırlıklı raporlama sistemlerinde bu birleştirmeler performansı yavaşlatabilir.

Bu durumda bilinçli olarak denormalizasyon yapılır: sık okunan alanlar tekrar yazılır ya da özet tablolar tutulur. Karşılığında tutarsızlık riski ve veriyi eşzamanlı tutma yükü kabul edilir. Denormalizasyon, normalizasyonun hatası değil, ölçülmüş bir ödünleşimdir; önce normalize tasarlanır, gerekçesi olursa geri adım atılır.

Nerede kullanılır?

Normalizasyon özellikle işlem ağırlıklı sistemlerde, yani siparişlerin, kayıtların ve ödemelerin sürekli eklendiği ve güncellendiği uygulamalarda temel tasarım ilkesidir. Bütünlük kısıtları, yani birincil anahtar, yabancı anahtar ve benzersizlik kuralları, normalizasyonla birlikte veri kalitesini korur.

Analitik ve raporlama amaçlı veri ambarlarında ise farklı bir yaklaşım, okumayı kolaylaştıran boyutsal modelleme yaygındır. Bu yüzden tasarım kararı, sistemin işlem mi analiz mi ağırlıklı olduğuna göre verilir.

Bu konuyu Mindset programlarında nerede çalışırsınız?

Mindset kataloğundaki Veritabanı Tasarımı ve Normalizasyon eğitiminin modülleri arasında Kavramsal Modelleme ve Varlık İlişki Analizi, Mantıksal Model ve Anahtar Tasarımı, Normalizasyon Formları, Bütünlük Kısıtları ve Veri Kalitesi ile Denormalizasyon ve Performans Ödünleşimi bulunur.

İlgili Mindset programı

Veritabanı Tasarımı ve Normalizasyon

Sık sorulanlar

Sık sorulan sorular

Hangi normal forma kadar gitmek gerekir?

Pek çok işlem odaklı uygulama için üçüncü normal form yeterli kabul edilir. Daha ileri formlar özel bağımlılık durumlarında gündeme gelir. Karar, veri tutarlılığı ihtiyacı ile sorgu performansı arasında, sistemin kullanım biçimine bakılarak verilir.

Normalizasyon performansı düşürür mü?

Çok tablolu birleştirmeler okuma sorgularını yavaşlatabilir, ama yazma işlemlerini ve tutarlılığı iyileştirir. Doğru indeksleme ile çoğu durumda performans yönetilebilir; sorun gerçekten ölçüldüğünde ve nedeni anlaşıldığında seçili alanlarda denormalizasyon yapılır.

Normalizasyon ile varlık-ilişki modeli aynı şey mi?

Hayır. Varlık-ilişki modeli, iş kavramlarını ve aralarındaki ilişkileri çizen kavramsal tasarım adımıdır. Normalizasyon ise bu modelden çıkan tabloların bağımlılıklarını kurallara göre düzenleyen sonraki adımdır. Varlıklar ve ilişkiler netleşmeden yapılan normalizasyon çoğu zaman yanlış tablo sınırlarına yol açar.

Normalizasyon NoSQL veritabanlarında da geçerli mi?

Normal formlar ilişkisel modelin kavramıdır. Doküman tabanlı sistemlerde veri çoğu zaman erişim desenine göre gömülü ve tekrarlı tutulur. Yine de tekrarlı veriyi tutarlı tutma sorunu her veri modeli için geçerlidir ve bilinçli yönetilmelidir.

Veritabanı Normalizasyonu Nedir? Normal Formlar