Veri tabanı normalizasyonu, ilişkisel veri tabanı tasarımında kullanılan ve veri tutarlılığını sağlamak, veri tekrarını ortadan kaldırmak ve veri tabanının genel yapısını optimize etmek için uygulanan bir süreçtir. Normalizasyon, verilerin mantıklı bir yapıya sahip olmasını sağlarken, verilerin daha düzenli bir biçimde depolanmasına imkan tanır. Veri tabanı normalizasyonu, veri bütünlüğünü koruyarak daha verimli veri işleme ve güncelleme işlemlerini mümkün kılar.
Normalizasyon süreci, genellikle "normal form" denilen aşamalardan geçer. Bu aşamalar, veritabanının her bir alanındaki bağımlılıkları inceleyerek daha basitleştirilmiş ve tutarlı bir yapı oluşturulmasına olanak tanır. Normalizasyon, veri tabanı yönetim sistemlerinin (DBMS) tasarımında önemli bir rol oynar çünkü bu süreç, veri bütünlüğünü sağlar ve veri manipülasyonunda oluşabilecek hataları minimize eder.
Tarihsel Gelişim
Veri tabanı normalizasyonu, ilk olarak 1970'lerde, E. F. Codd'un ilişkisel veri modelini geliştirmesiyle gündeme gelmiştir. Codd, ilişkisel veri modelinde verinin daha düzenli ve yapılandırılmış bir şekilde saklanması gerektiğini savunmuş ve bunun için bir dizi kurallar önermiştir. Bu kurallar zamanla normalizasyon kurallarına dönüşmüştür. Codd'un ilişkisel modelinde veriler, tablolarda saklanır ve her bir tablo birincil anahtar aracılığıyla birbirine bağlanır.
Başlangıçta veri tabanı tasarımları, verilerin düzensiz bir şekilde saklandığı ve işleme sırasında çeşitli veri tutarsızlıklarının meydana geldiği yapılara dayanıyordu. Codd'un önerdiği normalizasyon süreci, bu tür problemleri ortadan kaldırmayı amaçlayan bir yaklaşım olarak hızla yaygınlık kazandı. İlk normalizasyon aşaması (1NF), veritabanındaki her hücrenin yalnızca bir değeri tutmasını gerektirirken, sonraki aşamalar (2NF, 3NF vb.) verilerin bağımlılıklarını daha detaylı bir şekilde incelemeye başlamıştır.
Normalizasyonun Temel Amaçları
Veri tabanı normalizasyonunun temel amaçları şunlardır:
Veri Tekrarını Azaltma
Veritabanlarında aynı verilerin birden fazla yerde saklanması, güncellemeler ve silme işlemleri sırasında veri tutarsızlıklarına yol açabilir. Normalizasyon, veri tabanındaki her bilgiyi yalnızca bir yerde saklayarak bu tekrarları ortadan kaldırır. Böylece veritabanının düzeni sağlanır.
Veri Tutarlılığını Sağlama
Veri tabanı tasarımında, verilerin tutarlı olması sağlanır. Veriler, yalnızca bir yerde güncellendiği için, tutarsızlık ve hatalı veri saklama olasılığı ortadan kalkar. Bu, veri tabanındaki bütünlüğü korur ve veri güncellemelerinin doğru yapılmasını sağlar.
Veri Manipülasyonunu Kolaylaştırma
Veri tabanındaki her kayıt, normalizasyon sayesinde belirli kurallar çerçevesinde düzenlendiği için, veri üzerinde yapılacak işlemler daha hızlı ve hatasız gerçekleştirilir. Veritabanındaki tüm işlemler, veri yapılarının düzgün olmasından dolayı daha etkili bir şekilde gerçekleştirilir.
Veritabanı Performansını Arttırma
Veri tabanı normalizasyonu, veri tekrarı ve karmaşıklığını azaltarak, veri tabanının daha verimli bir şekilde çalışmasına olanak tanır. Bu da veri sorgulamalarının hızını artırır ve daha verimli veri depolama sağlar.
Depolama Alanını Verimli Kullanma
Normalizasyon, veri tekrarlarını ortadan kaldırarak, veritabanında gereksiz yere fazla yer kaplayan veri kopyalarını önler. Bu da veritabanının genel olarak daha verimli bir şekilde saklanmasını sağlar.
Normalizasyon Aşamaları (Normal Formlar)
Veri tabanı normalizasyonu, genellikle bir dizi "normal form" aşaması ile gerçekleştirilir. Her bir normal form, veritabanındaki bağımlılıkları ve veri yapılarının karmaşıklığını belirli bir seviyede düzenlemeye çalışır. Bu aşamalar şunlardır:
1. Birinci Normal Form (1NF)
Bir tablonun Birinci Normal Form (1NF)'de olması için, her hücrede yalnızca bir değer bulunmalıdır. Yani, her sütun tek bir değer tutmalı ve her satır benzersiz olmalıdır. Ayrıca, her hücrede yer alan veriler atomik olmalıdır; yani daha küçük parçalara bölünemez.
Örnek:
Aşağıdaki tabloda, bir ürünün birden fazla kategorisi bir hücrede virgülle ayrılarak tutulmuş.

Bu tablo 1NF'ye uygun değildir çünkü "Kategoriler" sütunu birden fazla değeri içeriyor. 1NF'ye getirebilmek için her kategori ayrı bir satıra yerleştirilmelidir, tablonun düzeltilmiş hali şu şekildedir:

2. İkinci Normal Form (2NF)
İkinci Normal Form (2NF), bir tablonun 1NF'yi sağladıktan sonra, her sütunun tamamen birincil anahtara bağımlı olması gerektiğini ifade eder. Yani, tüm non-primer (birincil olmayan) sütunlar, birincil anahtarın tümüne bağımlı olmalıdır. Bu, kısmi bağımlılıkların ortadan kaldırılması gerektiği anlamına gelir.
Örnek:
Bir öğrenci tablosunda, öğrencilerin dersleri ve öğretmenleriyle ilgili bilgiler yer alıyorsa, öğretmen adı yalnızca dersle ilgili bir bilgidir, ancak öğrenci bilgileriyle ilgili değildir. Bu durum kısmi bağımlılığa yol açar. 2NF'ye ulaşabilmek için, ders ve öğretmen bilgisi ayrı bir tabloya alınmalıdır.

Yukarıdaki tabloda "Öğretmen" sütunu, "Ders" sütununa bağımlıdır ancak "ÖğrenciID" sütununa bağımlı değildir. Bu durumu 2NF'ye getirebilmek için yeni bir tablo oluşturulmalıdır.
3. Üçüncü Normal Form (3NF)
Üçüncü Normal Form (3NF), 2NF'yi sağladıktan sonra, transitif bağımlılıkların ortadan kaldırılması gerektiğini belirtir. Eğer bir sütun başka bir sütuna bağımlıysa ve bu sütun da başka bir sütuna bağımlıysa, o zaman doğrudan bağımlılık kurulması gerekmektedir.
Örnek:
Bir şirket çalışanları tablosunda, çalışanın departmanı ve departman yöneticisi bilgileri yer alıyorsa, bu bir transitif bağımlılık oluşturur. Çalışan bilgileri doğrudan departmanla ilgili değildir, ancak departman yöneticisi bilgisi dolaylı olarak departman bilgisine dayanır. Bu bağımlılığı ortadan kaldırmak için, departman bilgileri ayrı bir tabloya alınmalıdır.

Bu tabloda, "Yöneticisi" sütunu sadece "Departman" sütununa bağlıdır ve dolaylı olarak "ÇalışanID"' sütununa bağımlıdır. 3NF'yi sağlamak için departman bilgisi ayrı bir tabloda yer almalıdır.
4. Dördüncü Normal Form (4NF) ve Beşinci Normal Form (5NF)
Dördüncü Normal Form (4NF), bir tablodaki çok değerli bağımlılıkların ortadan kaldırılmasını ifade eder. Yani, bir sütun birden fazla bağımsız değeri tutuyorsa, bu değerlerin her biri ayrı bir tabloda saklanmalıdır.
Beşinci Normal Form (5NF), tablodaki tüm bağımlılıkların belirli bir normal formda ifade edilmesi gerektiğini savunur ve her bağımlılığın ayrıştırılabilir olmasını sağlar. Bu, veritabanındaki verilerin parçalanması gerektiğinde başvurulan en yüksek normal formdur.


