Veri Tabanı Normalizasyonu’nun Amaçları ve Kuralları

Normalizasyon’un Amaçları

  1.  Veri Bütünlüğünü Sağlamak: Eğer bir sütun için gereksiz veri tekrarı var ise, bu sütun gereksiz bir şekilde veri tekrarı içermeye başlayacaktır. Örnek vermek gerekirse bir hastane veri tabanında hastano olduğunu varsayalım eğer veri bütünlüğü sağlanmazsa belli bir süre sonra farklı tablolarda bir hastanın birden fazla hastano’su olacaktır.
  2.  Uygulamadan Bağımsızlık: Hazırlayacağımız ilişkisel model kullanılacak uygulamalara göre tasarlanmamalı, kullanılacak verilere göre hazırlanıp, tasarlanmalıdır.
  3. Performansı Arttırmak


 

Normalizasyon Kuralları

 Beş durumda bulunurlar, hepsini aşama aşama işleyelim, eğer sırasıyla doğru örneklendirilirse kolay anlaşılabilecek bir konudur.

1.Normal Form

 Tablolar üzerinden anlatmaya çalışacağım, ilk önce 1.Normal Formu uygulamadığımız bir tablo daha sonra ise uyguladığımız bir tablo yapacağım fakat tabii ki en optimum şekli bu olmayacak beş durum var demiştik ki zaten bu formun eksiklerini de ele alacağız.

 1nfSol tarafta verilen sistem normalizasyon uygulanmamış halidir, sağ tarafta ise 1NF uygulanmıştır. İlk tabloda derskodu alanında virgülle ayrılan yerler sağ tarafta tek tek her kayıt için girilmiştir.

1NF Zararları

Satır Ekleme:Yeni bir kullanıcı tanımlandığında ders kodu girilmesi zorunludur.

Satır Silme:Kullanıcı silersek tablodan bir bölümde silmiş oluruz, örnek vermek gerekirse eğer 26365 numaralı öğrenciyi silersek ve sadece bir öğrenci kayıtlıysa o bölüme doğal olarak o bölümde silinecektir.

Satır Güncelleme:Bir öğrencinin bölümü değiştiğinde birden fazla alanın güncelleştirilmesi gerekecektir.


2. Normal Form

1. normal formda güncelleme sorunu vardı. 2. normal formda bu soruna çözüm aranmıştır.Bu çözüm tablolar üretmekle sağlanmıştır. Tablolarda birbiriyle alakasız alanların ayrılması gerekmektedir. Örnek vermek gerekirse personel bilgilerinin tutulduğu tabloda personel maaşının tutulması gereksizdir. Bunun için ikinci bir tablo yapılmalıdır.

2nf.fw

Birinci durumda 1NF kuralına uyan bir tablo görüyoruz fakat bunu 2NF kuralına uydurmamız gerekecektir. Bunun için 2 farklı tablo yaptık. Birinci tabloda müşteri no ile müşteri adını aldık bu iki alanın tutar ile bir ilişkisi yok o yüzden ikinci  tabloda müşteri no ve satış no ile beraber tutarı kullandık burada satış no ile tutar bir biri ile bağlantılıdır.

2NF Zararları

Satır Ekleme: Güncelleme sorununu çözdük fakat ekleme ve satır silme sorunu devam etmektedir. Yeni bir Müşteri tanımladığımızda Tutar ve Satış No tanımlamamız gerekmektedir.

Satır Silme: Bazı durumlarda bir bölümde bir kayıt bulunur. O sütundaki başka bir kayıtta sadece bir veri içeriyorsa silinen bölümle beraber diğer veri de silinecektir. Örneğin Öğrenci tablosunda ki öğrencinin bölümünü ele alalım. Öğrenci silinirse ve sadece bir öğrenci o bölümdeyse öğrenci ile beraber bölümde silinecektir.


3. Normal Form

 Bu formda işimiz anahtar olmayan sütunlar ile yani eğer bir alan anahtar değilse o alan ya başka bir tablonun anahtarını referans gösterecek(FK) ya da aynı tabloda ki alanlar ile doğrudan ilişkili olacaktır. Yani amacımız tabloları en verimli şekilde bölmek olacaktır ki normalizasyon kuralları genel de bunu yapıyor.

tablo1

Bu tablomuza iki kademe uygulanacaktır önce bağımlı alanları ayırıp iki tablo yapacağız sonra 3NF kuralına göre anahtar olmayan alanları inceleyeceğiz.

tablo2

iki farklı tablo oluşturuldutablo3

  Yaptığımız işlemle müşteri birincil anahtarını kullanarak ikinci tabloyu elde ettik şimdi incelersek ikinci tabloda anahtar olmayan ‘Sehir’ ve ‘SehirKod’ kısımları müşteriyle doğrudan ilişkili değildir fakat birbirleriyle doğrudan ilişkilidir. O halde şu bölme işlemini yapabiliriz.

tablo4

Böylece işlemimiz tamamlandı. 3 farklı tablomuz oldu. Eğer normalize edilmemiş olsaydı tek tablo olacaktı ama normalizasyonun faydalarından mahrum kalacaktık.

tablo5


4. Normal Form

Birincil anahtar olan sütunlar ile anahtar olmayan sütunlar arasında birden fazla bağımsız 1-n ilişkiye izin verilmez. Her 1-n ilişkiye ayrı tablo oluşturmamız gerekmektedir.

ttablo1

Mevcut tablomuz fakat dikkat ederseniz,her öğretim elemanının birden fazla dersi olabilir. Bunun için 4NF uygulayacağız.

ttablo2

Ders alanını başka bir tabloda yapacağız.

ttablo3

Artık 4NF kuralına uygun bir tasarımımız oldu.


5. Normal Form

Bu son formdur ve tekrarlamayı önlemek için kullanılır. İlk 4 form tabloyu en sade haline getirmek için çalıştı fakat tekrarlama veri tabanı için gerçek bir sorundur. Bunun önüne 5NF kuralı ile geçeriz. Örneğin Satış Danışmanı-Marka-Ürün alanlarına ait tablomuzda Satış Danışmanı-Ürün — Satış Danışmanı-Marka—Marka-Ürün olarak üç tablo yapabilir böylece satış danışmanı için belirlenen marka ve ürün dışında değer girilemeyecektir.


Çok uzun bir yazı oldu ama önemli olduğunu düşünüyorum. Bir sonraki yazımda Bir tabloyu normalleştirmeyi anlatacağım.

KAYNAKLAR: VTYS-Turgut ÖZSEVEN 

5 thoughts on “Veri Tabanı Normalizasyonu’nun Amaçları ve Kuralları

  1. Bu soruyu nasıl çözeriz ? bişeyler yaptım ama doğrulugundan emin değilim cevabı yok elimde ve acil !

      1. CAR_SALE(Car#,Date_Sold,Sales_Person#,Commision%,Discount_amt)

        Assume that a salesperson may sold multiple cars, hence {Car#,Sales_Person#} are primary key.
        FD0:Car#,Sales_Person# -> (Date_Sold,Commision%,Discount_amt). Other dependencies:
        FD1: Date_Sold -> Discount_amt
        FD2: Sales_Preson#-> Commisionn%

        Based on given primary key is this relation 1NF,2NF,3NF? Why or why not? How would you successively normalize it completely?

Bir Cevap Yazın