Normalizasyon ve Denormalizasyon Üzerine Kritik - Yazgelistir.com
Yazar: Murat Girgin
Veritabanı konusunda giriş seviyesinde araştırma yapmış ya da öğretim görmüş arkadaşların dahi aşina olduğu normalizasyon (normalization) ile denormalizasyon (denormalization) kavramlarından bahsetmek istiyorum. Her ne kadar bütün ilgili kitaplarda başlıklandırılsa da, tanımları aslında gayet basittir. Amacım bilinçsizce kullanımları engellemek adına kavramların dibini biraz eşelemek olacak.
Veritabanı konusunda giriş seviyesinde araştırma yapmış ya da öğretim görmüş arkadaşların dahi aşina olduğu normalizasyon (normalization) ile denormalizasyon (denormalization) kavramlarından bahsetmek istiyorum. Her ne kadar bütün ilgili kitaplarda başlıklandırılsa da, tanımları aslında gayet basittir. Amacım bilinçsizce kullanımları engellemek adına kavramların dibini biraz eşelemek olacak. Normalizasyon bir tablodaki veri satır kayıtlarını diğer tablodakilere bağlayarak ilişkilendirmek için anahtar ya da kimlik (id) alanları kullanılması suretiyle mükerrer (tekrarlayan) verinin azaltılması anlamına gelmektedir. Basit ancak akılda kalır örnek olarak müşteri ve sipariş tablosu örnek verilebilir. Burada bir tablo ile bir müşterinin siparişlerini depolarken müşteri bilgilerini her sipariş satırında tekrarlamak (denormalizasyon) yerine müşteri bilgilerini tablodaki müşteri no alanını sipariş tablosundaki müşteri no alanına bağlayarak elde edebiliriz. Daha teorik bir tanım daha vermek gerekirse; Normalizasyon (ayrıştırma), veritabanlarında çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemidir. Ünlü Fransız bilimadamı Hubert Francesci tarafından ortaya atılan 3 esnek kuralına (normal formlar) uygun protonlar tarafından entegre edilen bir sisteme sahiptir. Satır başlarında yapılan tekrar veritabanında ayrıştırma işlemine tabii tutularak depolanır. Normalizasyon bilhassa kayıt ekleme (inserting), güncelleme (updating) ve silme (deleting) işlemlerinde ciddi verimlilik artışı sağlamaktadır. İşlem yapılacak veri alanı ne kadar az olursa, güncelleme o kadar verimli ve veri tutarlılığı (data integrity) da o kadar fazla olacaktır. Denormalizasyon ise verinin okunması ve sorgulanmasında veri motorunun bilgiyi sağlamak için erişmesi ve işlem yapması gereken tablo sayısını azaltması ile performans sağlamaktadır.
Bu kıyaslamadan çıkarılacak sonuç; ERP gibi yoğun işlemsel hareket (transaction) gören veritabanlarında normalizasyon kullanımı gerekirken, DSS gibi işlemsel hareketlerin minimum olduğu ancak yoğun sorgulama ve raporlama yapılan veritabanlarında ise denormalizasyon kullanımı gerekmektedir. Her iki senaryonun da uygulanabilmesi ise veritabanı (database) ve uygulama (application) ortamlarının ayrılması ile mümkündür. Kurumsal firmaların iş zekâsı projeleri işte bu ideal senaryolar üzerine kurulmakta ve projelerin ilk gereksinimi olarak ortamların birbirinden bağımsız hale getirilmesi hedeflenmektedir. Birçok firmada mevcut yapı olarak uygulamaların işlem gerçekleştirdiği veritabanlarında yoğun sorgulamalar ve raporlamalar yapılması mevcut işlem süreçlerinde ciddi performans maliyetleri oluşturacaktır. Geri bildirimlere göre veritabanı normalizasyonu kavramı daha akademik olarak ayrı bir başlıkta tekrar ele alınabilir. Gelecek yazılarımızda kurumsal karar destek sistemleri ve iş zekası kavramlarından bahsedeceğiz.