Normalizasyon

21 Haziran 2007

Normalizasyon nedir? Ne işe yarar?

Merhaba arkadaşlar bu yazımda veri tabanı tasarımında önemli bir yeri olan
normalizasyonu konu alacağım.

Konu başlığı ile ilgili derlediğim bilgileri sizinle paylaşacağım. Öncelikle bir
sözlük araştırmasında aşağıdaki tanımlara ulaştım;


Normalizasyon nedir?

  • Tane küçültme, homojen mikro yapı elde etme.

  • Modelin tamamını değerlendirerek, kararlı(stable), iyi ilişkilendirilmiş
    ve niteliklerin dağılımı düzenlenmiş bir model oluşturma işlemidir.

  • Büyük tabloların küçük tablolara ayrıştırılması ve niteliklerin
    düzenlenmesidir.


Tanımlardan sonra asıl olarak ne işe yarar, mikro yapılar elde edeceğim de ne
olacak, benim projeme bir normalizasyonun faydası ne olacak, uygulamalarıma ne
gibi artılar katacak gibi sorulara cevap arayalım.


Normalizasyonun faydaları nelerdir?

  • Normalizasyon kuralları vardır ve uygun şekilde uygulanırsa, bir
    niteliğin birden fazla tabloda yer almasına gerek kalmaz.

    Önemli bir husus. Peki bilginin sadece bir yerde kaydının tutulmasının
    faydaları neler;

    • Bilgiyi güncellemek ve silmek kolaydır

    • Birli bir yerde saklanır, diğer tablolardan referans ile çağrılırsa,
      bilginin tekrar kaydedilmesi (duplicate record) önlenmiş olur

    • Bilginin tutarsızlığı(inconsistency of data) önlenmiş olur

  • Bir çok kayıt için genelde büyük tabloların tüm alanları kullanılmaz. Büyük tablolar, veritabanında gereksiz büyümeye yol açarlar.
    Gereksiz büyüme bir programın prestij kaynaklarından olan hızı müthiş azaltır.

    Programcı böyle bir sıkıntı ile karşılaşmak istemez
    Denormalize bir veritabanına göre daha iyi performansa sahiptir.


Normalizasyon nasıl yapılır? Kuralları nelerdir?


Normalizasyonun temel 5 sorusu vardır, normalize işlemi de bu cevapların
kurallarının uygulanması ile oluşur. Sorular şunlardır;

  1. Nitelik bir kez mi tekrar edecek?

  2. Bu nitelik birleşik eşsiz tanımlayıcının tümüne mi bağlı?

  3. Bu nitelik diğer niteliklerden bağımsız mı? Başka bir deyişle, bu
    nitelik, eşsiz tanımlayıcılar dışında başka bir niteliğe bağımlımı?

  4. Bu nitelik sadece birkaç kez tekrar edebilir mi?

  5. Bu varlık, en az üç eşsiz niteliğe sahip mi ve veri kaybetmeden ve veri
    tekrarına yol açmadan, bu eşsiz niteliklerin her biri için bir varlık
    oluşturabilir miyiz?


En çok kullanılan bu sorulardan üçüdür. İlker Köse Beyin bu başlıklar için
hazırladığı örnekleri yazmakta fayda görüyorum


  1. Nitelik bir kez mi tekrar edecek?

    Örnek: Personel tablosundaki ‘ADI’, ‘SOYADI’,
    ‘DOĞUM_TARIHI’ve ‘ADRESI’alanlarıbir defa yer alacaktır.









    Örnek: Yedek_Parca tablosundaki ‘RENK’özelliği, aynı koda sahip
    yedek parçalar için birden fazla olabilir, bu durumda RENK adında
    yeni bir tablo oluşturulmalı ve renk değeri oradan referans etmelidir.

  2. Bu nitelik birleşik eşsiz tanımlayıcının tümüne mi bağlı?


    Örnek: Üstteki Evlilik tablosundaki evlenme tarihi ve salon,

    sadece erkeğe ya da kadına değil; her ikisinin birleşimine bağlı

    bir değerdir. Oysa alttaki evlilik tablosundaki doğum tarihi ve

    saç rengi, sadece erkeğe yada kadına ait özelliklerdir.

    Bu özellikler, başka tablolarda tutulmalıdır.

  3. Bu nitelik diğer niteliklerden bağımsız mı? Başka bir deyişle, bu
    nitelik, eşsiz tanımlayıcılar dışında başka bir niteliğe bağımlımı?



    Örnek: Muayene tablosundaki Doktor_Diploma_No, muayene kodundan çok, doktora
    bağlı bir nitelik. Dolayısıyla başka bir tabloda (Doktorlar... gibi)
    yeralması doğru olacaktır.

Normalizsayonun bu kurallarına uyarak veritabanımızı daha etkin bir şekilde kullanmış olacağız.. Bol normalizasyonlu günler.. Hoşça bakın zatınıza.

4 yorum:

Adsız dedi ki...

Gerçekten çok faydalı bir döküman elinize sağlık .Teşekkürler...

Adsız dedi ki...

Ben Bil. Tek. ve Prog. nı Okuyorum. Normalizasyon çalışması yaparken zorlandım. Bunun için bu bilgiler işime yaradı Teşekürler.

Adsız dedi ki...

Paylaşım için Tşkler Kardeş xD

Adsız dedi ki...

tnx Orhan abimize selamlar :)