9 Ocak 2017 Pazartesi

Normalisasyon


Veritabanı Tasarım Aşamaları

İlişkisel veritabanının tasarlanması aşamasında, verinin tekrarlanmasını, veri kaybını veya veri yetersizliğini önlemek için normalleştirme işlemi uygulanır. Normalleştirme teorisi normal form kavramına dayanır.


Normalleştirme, bir veritabanında veri kayıplarını engellemek, verinin tekrarını azaltmak, silme, güncelleme ve ekleme işlemlerinde ortaya çıkan zorlukları en aza indirmek için yapılan işlemler topluluğudur.

İlişkisel bir veritabanı oluşturmak için normalleştirmeyi çok iyi bilmek gerekir. Normalleştirmenin amacı, bir veritabanına etkinlik kazandırmaktır.


Özet olarak normalizasyonun amacı, veritabanının performansını en üst düzeye getirmektir.







Normalizasyon işlemi bir veritabanı tasarlanırken başlı başına bir işlemdir.

Normalizasyon gerçekleştirilirken bazı kurallar göz önüne alınarak gerçekleştirilir. Bu kurallar, uyulması kesinlikle zorunlu kurallar değildir.


Bir satırda yalnızca bir tek benzer bilgi bulunur. Örneğin, kişinin okul bilgileri Okul1, Okul2, Okul3 diye tutulmaz. Bunlar ayrı bir tabloda tutulmalıdır.

ÖNEMLİ: Verileri virgül veya bir başka karakter ile ayırıp aynı alana girmek ve daha sonra program içerisinde bu değerleri ayırmak ilişkisel veritabanının doğasına terstir.



Bir tablodaki tüm alanlar, o tablonun Primary Key (PK) alanına bağlı olmak zorundadır. Yani Kişi tablosu için konuşursak, Kişi tablosunun PK’sı yani indekslendiği alan, KisiNo alanıdır.

Örneğin KisiNo’su 1 olan bir kayıtta, KisiNo’su 2 olan birisinin bilgileri bulunamaz. O zaman karışıklık meydana gelir. Ayrıca, Kisi tablosunda Kisi’ye ait olmayan veriler tutulamaz.

Bu kural doğal olarak ilişkide bulunulacak her tablonun PK alanının bulunması gerekliliğini de beraberinde getirir. Primary Key alanı olmazsa performanslı bir yapıda olmaz.



Tabloları tutarlı bir şekilde mümkün olan en ufak boyutta (alan sayısı olarak) tutmak gereklidir.

Tablodaki diğer alanları başka tablolara ekleyerek tablolar arasında ilişkiler kurulmalıdır.

Bir PK ile PK olmayan alanlar arasında bire çok ilişki olmamalıdır.

Örneğin kişimizin çalıştığı yerlerin tutulduğu bir tablo daha olsun. Aynı zamanda bizim için önemli olan kişilerin çalıştığı işlerin sektörleri olsun. Bu durumda Sektor diye bir tablo yapıp CalistigiIs tablosuyla ilişkilendirmemiz gerekmektedir.




Sonuç olarak bir veritabanı tasarlanırken;
Veri tekrarı yapılmamalıdır.
Boş yer mümkün olduğunca az olmalıdır.
İlişkilerin anlamsal bütünlüğü olmalıdır.
İlişkilerde veri artıklığı (redundancy) önlenmelidir.
Ekleme, silme ve güncelleme problemleri ortadan kaldırılmalıdır.
İlişkilerde NULL değerlerden mümkün oldukça kaçınmalıdır
Sorgularda bilgi tutarsızlığına yol açan tasarımlardan kaçınmalıdır.



Örnek Veritabanı Çalışması


Problem: Bir okulda öğrencilere ait bilgiler, öğrencinin almış olduğu notlar, ders tanımları ve dersi veren öğretmene ait bilgilerin tutulmasını sağlayan bir veritabanı tasarlanmak isteniyor. Bir sonraki slaytta verilen bilgiler doğrultusunda;

Varlık – İlişki diyagramını çiziniz?

Normalizasyon işlemini gerçekleştiriniz?

Aşağıdaki tabloda verilen nitelikleri ve bu niteliklerin açıklamalarını dikkatlice inceleyin.