Normalizasyon Nedir ?
- Veri tabanı tasarımının amacı;
- Veri tabanlarının en iyi performansı gösterebilmesi için gerekli ölçütlerin sağlanması ve uygun şekilde önce varlıklara ayrılması sonra da bunların ilişkilendirilmesidir.
- İlişkilerin doğru şekilde kurulabilmesi için de birinci anahtar ve yabancı anahtar doğru şekilde anlaşılabilmelidir.
Veri tabanı tasarım ölçütleri
Niteliklerin anlamları olmalı: her bir niteliğin diğerleriyle olan ilişkisi ve nasıl yorumlanması gerektiği belirgin olmalıdır.
Veri giriş ve güncelleme problemleri engellenmeli: aynı verinin iki kez girilmesi, olmayan verinin silinmeye veya güncellenmeye çalışılması gibi hatalar engellenmelidir.
Boş değerler minimize edilmeli: veri girişlerinde mümkün olduğu kadar boş geçmemeye dikkat edilmelidir. Bunun için de uygun tablo tasarımları yapılmalıdır.
İlave satırlar engellenmeli: tabloların birleştirilmesi sonucu bazen gereksiz satırlar meydana gelir. İlave satırların engellenmesi için şart cümlecikleri doğru yazılmalıdır. (sorunun sebebi hatalı join işlemidir çözümü ise doğal birleştirmedir)
Veri giriş ve güncelleme problemi
Veri giriş problemi örnek;
Bu problem kütüphanede bir zamanlar sıkça meydana geliyordu, üye tablosuna bölüm bilgisi girilirken hatalı girişler yapılıyor sonra da bölümlere göre üyeleri bulmak imkansız hale geliyordu. Bu problemin çözümü için yabancı anahtar kısıtlamasından faydalandık.
Güncelleme problemi örnek;
Üye tablosunda her bir üyenin bölümü bir numara ile tutulmaktadır. Okuldaki büyüme nedeniyle bölüm numarası iki haneli değil de üç haneli olduğunda, yani bölüm tablosundaki bölüm numarası değiştiğinde bu değişiklik bütün üye tablosunda yapılmalıdır. Aksi taktirde veri tutarsızlığı meydana gelecektir.
Boş değer problemi
Boş değer problemi için örnek;
Hastane otomasyon sistemi tasarladığımızı düşünelim. Hastanede görev yapan personelin tamamı için tek bir PERSONEL tablosu tanımlamış olalım. Hastanede Doktor da Hastabakıcı da Personel tablosunda tutulacaktır. Halbuki doktor için gerekli olan bazı alanlar hastabakıcı için gerekli değildir. Tasarım daha geniş özelliklere göre yapılınca daha az nitelikli olan diğer personelin bazı sütun değerleri boş kalacak ve boş değer problemi oluşacaktır.
Çözüm için personel tablosunu birden çok sayıda hazırlamalı ve öyle çalışılmalıdır.
İlave satır problemi
Satırlardaki tekrarlanmış bilgi ve güncelleme problemlerine örnek olarak kartezyen çarpım ile birleştirme operasyonları sonucu elde edilen satırlar verilebilir.
Fazlalık satırlar kartezyen çarpımlar sonucu oluşurken, fazlalık sütunlar hatalı birleştirme operasyonları sonucu oluşur. Bu problemi gidermek için doğal birleştirme operasyonu kullanılır.
Birincil anahtar tanımlama
Her tablonun birincil anahtarı olmalıdır.
Örnek bir tablo için birincil anahtar gösterimi.
Create Table ogrenci
(
o_no integer not null,
o_isim char(15) not null,
d_tarihi date,
primary key (o_no),
unique (o_isim)
)
Yabancı anahtar tanımlama
Eğer harici bir tablo ile tablomuzu ilişkilendireceksek o zaman yabancı anahtara ihtiyaç duyarız.
Create Table ogrenci
(
o_no integer not null,
o_isim char(15) not null,
bolum_no integer,
d_tarihi date,
primary key (o_no),
unique (o_isim),
foreign key (bolum_no) references bolumler(bolumno)
)
Normalizasyon (ayrıştırma)
Hatalı tasarım nedeniyle meydana gelen tekrarlama problemleri normalizasyon yardımıyla ortadan kaldırılır.
Ayrıştırma, yani normalizasyon ABCD niteliklerinden meydana gelen bir şemanın AB ve BCD gibi şemalara bölünmesidir. Veri tabanlarındaki tekrarlama problemlerini tespit etmede genellikle fonksiyonel bağımlılıklar kullanılır.
Fonksiyonel bağımlılıklar
ÖĞRENCİ tablosu aşağıdaki gibidir.

Tabloda ogr_no ile ogr_name arasındaki ilişki fonksiyonel bağımlılık için bir örnektir. Çünkü, ogr_no ile ogr_name birbirini birebir temsil etmektedir. Bununla birlikte ogr_no ile bolum niteliği arasında veya ogr_no ile Sinif niteliği arasında bu bağımlılık kurulamaz. Çünkü, farklı ogr_no değeri ile eşleşen çok sayışa Bilgisayar Mühendisliği veya İletişim bilgisi yer alabilir.
Kısmi bağımlılık
Anahtar olmayan alan, birleşik anahtarın sadece bir kısmı ile belirlenebiliyorsa, buna kısmi bağımlılık denir.

Cust_ID ve Order_ID birleşik anahtarın iki niteliğidir. CUSTOMER tablosunda yer alan Name niteliği Cust_ID’ye bağlıdır fakat Order_ID’ye bağlı değildir.
Kısmi bağımlılık – diğer örnek
Aşağıda BÖLÜMDERS tablosu görülmektedir.

Bu tabloda;
CourseTitle birleşik anahtarın iki niteliğine (DeptNum ve CourseNum) birden bağlıdır bununla birlikte;
DeptName sadece DeptNum özelliğine bağlıdır.
r mattis, pulvinar dapibus leo.
Geçişli bağımlılık
A,B,C niteliklilerini içeren 3 nitelikli bir tabloda; A, B, ve C için;
A à B ve B à C fonksiyonel bağımlılıkları bulunmakta ise,
C kısmi olarak A’ya B aracılığı ile bağımlıdır.
Birinci normal form (1NF)
Bütün nitelikler atomik olmak zorundadır. İlişkisel veri modelinin temel kuralıdır ve her nitelik ancak atomik değerler alabilir.
Örneğin; kitap tablosunda, birden fazla yazarı olan kitap için yazar1, yazar2, yazar3 diye alanlar açsaydık, bu kurala uymamış olurduk. Böyle bir durumda, ayrıca yazarlar tablosu da oluşturarak kuralı çiğnememiş oluruz.
1NF tasarım koşulları
Birinci normal formdaki bir tabloda tekrarlayan sütunlar bulunmamalıdır. Nitelikler çok değerli olmamalıdır.
Müşteri No, Adı, Telefon1, Telefon2, Telefon3 gibi alanlar içeren bir tablo doğru bir yaklaşım değildir.
Bu alanlar için ayrı bir tablo oluşturulmalıdır.
Aynı tür veriyi tanımlamak için bir tabloda birden fazla alan kullanılmamalıdır.
Hatalı tasarım ve doğru tasarım

İkinci normal form (2NF)
Eğer R’deki herhangi bir birincil olmayan nitelik A, R’nin hiçbir anahtar niteliğine kısmi fonksiyonel bağımlı değilse bu ilişki şeması 2NF’dir denir. Burada kısmi fonksiyonel bağımlılıktan şunu anlamalıyız: Eğer X –> Y geçerli ise ve bir nitelik A X’in elemanı ise ve A, X’ten çıkarıldığı halde söz konusu bağımlılık hala geçerli ise burada bir kısmi fonksiyonel bağımlılık vardır.
2NF Tasarım koşulları
KISMİ BAĞIMLILIKLAR KALDIRILMALIDIR.
Birden çok kayıt için geçerli olan değer kümeleri söz konusuyla ayrı tablolar oluşturulmalıdır.
Bu tabloların bir yabancı anahtarla ilişkilendirilmesi gerekir.
Kayıtlar bir tablonun birincil anahtarı dışında bir öğeye bağımlı olmamalıdır.
Örnek tablo
Aşağıda 2NF için düzeltilecek tablo yer almaktadır;
Şube Adresi alanı sadece Şube No alanına bağlıdır.
İsim ve Pozisyon alanı Personel No alanına bağlıdır.
Çalışma Saati alanı Personel No ve Şube No alanına bağlıdır.

Normalizyon sonrası

Üçüncü normal form (3NF)
Eğer R’deki herhangi bir birincil olmayan (non-prime) nitelik A, R’nin hiçbir anahtar niteliğine geçişli (transitively) fonksiyonel bağımlı değil ve hali hazırda 2NF’da ise, bu ilişki şeması R 3NF’dadır denir. Burada geçişli fonksiyonel bağımlılıktan şunu anlamalıyız: Eğer X –> Y ve R’nin herhangi bir anahtarının altkümesi olmayan nitelikler kümesi Z söz konusu ve de X –> Y ve Y –> Z birlikte geçerli olmamalıdır.
3NF Tasarım koşulları
Geçişken bağımlılıklar kaldırılmalıdır.
Her sütun direkt olarak birincil anahtara bağımlı olmalıdır
2NF bir tabloda birincil anahtar özelliğine sahip olmayan özniteliklerin birincil anahtara olan geçişken bağımlılıkları ortadan kaldırılmalıdır.
Normalizasyon konusundan Bir önceki veri tabanı konusuna geçmek için — Tıklayınız