Tek bir ilişki olarak tanımlanan büyük bir veritabanı, verilerin çoğaltılmasına neden olabilir. Verilerin bu şekilde tekrarlanması aşağıdaki sonuçlara yol açabilir:
- İlişkileri çok büyük hale getirmek.
- Verilerin bakımı ve güncellenmesi ilgili birçok kaydın aranmasını gerektireceğinden kolay değildir.
- Disk alanı ve kaynaklarının israfı ve yetersiz kullanımı.
- Hata ve tutarsızlık olasılığı artar.
Bu sorunları çözmek için, gereksiz verilerle olan ilişkileri analiz etmeli ve arzu edilen özellikleri karşılayan daha küçük, daha basit ve iyi yapılandırılmış ilişkilere ayrıştırmalıyız. Normalleştirme, ilişkileri daha az özniteliklere sahip ilişkilere ayırma sürecidir.
Normalleşme Nedir?
- Normalleştirme, veritabanındaki verilerin düzenlenmesi işlemidir.
- Normalleştirme, bir ilişkiden veya ilişkiler kümesinden gelen fazlalığı en aza indirmek için kullanılır. Ayrıca Ekleme, Güncelleme ve Silme Anomalileri gibi istenmeyen özelliklerin ortadan kaldırılması için de kullanılır.
- Normalleştirme, büyük tabloyu daha küçük tablolara böler ve ilişkileri kullanarak bunları birbirine bağlar.
- Normal form, veritabanı tablosundaki fazlalığı azaltmak için kullanılır.
Neden Normalleşmeye ihtiyacımız var?
İlişkilerin normalleştirilmesinin temel nedeni bu anormalliklerin ortadan kaldırılmasıdır. Anormalliklerin ortadan kaldırılamaması veri fazlalığına yol açar ve veritabanı büyüdükçe veri bütünlüğüne ve diğer sorunlara neden olabilir. Normalleştirme, iyi bir veritabanı yapısı oluşturmanıza yardımcı olacak bir dizi yönergeden oluşur.
Veri değişikliği anormallikleri üç türe ayrılabilir:
Normal Form Türleri:
Normalleştirme, Normal formlar adı verilen bir dizi aşamadan geçer. Normal formlar bireysel ilişkilere uygulanır. Kısıtlamaları karşılıyorsa ilişkinin özellikle normal formda olduğu söylenir.
Aşağıda Normal formların çeşitli türleri verilmiştir:
Normal Form | Tanım |
---|---|
1NF | Bir ilişki atomik bir değer içeriyorsa 1NF'dedir. |
2NF | Bir ilişki 1NF'deyse ve anahtar olmayan tüm nitelikler birincil anahtara bağlı olarak tamamen işlevselse 2NF'de olacaktır. |
3NF | Bir ilişki 2NF'deyse ve geçiş bağımlılığı yoksa 3NF'de olacaktır. |
BCNF | 3NF'nin daha güçlü bir tanımı Boyce Codd'un normal formu olarak bilinir. |
4NF | Bir ilişki Boyce Codd'un normal formundaysa ve çok değerli bir bağımlılığı yoksa 4NF'de olacaktır. |
5NF | 5NF'de bir ilişki var. Eğer 4NF’deyse ve herhangi bir join bağımlılığı içermiyorsa, katılım kayıpsız olmalıdır. |
Normalleştirmenin Avantajları
- Normalleştirme, veri fazlalığının en aza indirilmesine yardımcı olur.
- Daha büyük genel veritabanı organizasyonu.
- Veritabanındaki veri tutarlılığı.
- Çok daha esnek veritabanı tasarımı.
- İlişkisel bütünlük kavramını uygular.
Normalleştirmenin Dezavantajları
- Kullanıcının neye ihtiyacı olduğunu bilmeden veritabanını oluşturmaya başlayamazsınız.
- İlişkileri daha yüksek normal formlara, yani 4NF, 5NF'ye normalleştirirken performans düşer.
- İlişkileri daha yüksek düzeyde normalleştirmek çok zaman alıcı ve zordur.
- Dikkatsiz ayrıştırma, kötü bir veritabanı tasarımına yol açarak ciddi sorunlara yol açabilir.