Veritabanı Normalizasyon: 1NF'den 3NF'ye Adım Adım
Normalizasyon, veritabanı tasarımında veri tekrarını ve tutarsızlığını ortadan kaldıran sistematik bir yöntemdir. Kötü tasarlanmış tablolar aynı bilgiyi birden fazla yerde tutar, bu da güncellemeler sırasında hatalara neden olur. Adım adım ilerleyerek bu sorunları çözeceğiz.
Bir kütüphane sisteminde kitap ödünç verme kaydını tuttuğunuz tabloyu düşünün:
1ODÜNÇ (OduncID, ÜyeAdi, ÜyeEmail, KitapAdi, YazarAdi, YazarUlkesi, OduncTarihi)23Örnek veriler:41 | Ahmet Yılmaz | ahmet@mail.com | SQL Öğreniyorum | Mustafa Kaya | Türkiye | 2024-01-1552 | Ahmet Yılmaz | ahmet@mail.com | Veri Tabanları | Zeynep Şimşek | Türkiye | 2024-01-2063 | Fatma Demir | fatma@mail.com | SQL Öğreniyorum | Mustafa Kaya | Türkiye | 2024-01-18Sorun açık: Ahmet'in bilgileri ve yazarların ülkeleri tekrar ediliyor. Ahmet'in emaili değişirse iki satırı güncellemen gerekir.
1NF kuralı: Her hücre tek bir değer içermeli, tekrarlayan gruplar olmamalı. Yukarıdaki tablomuz zaten bunu sağlıyor, ama ilişkili verileri ayrı tablolara taşımalıyız.
1ÜYELER (ÜyeID, ÜyeAdi, ÜyeEmail)21 | Ahmet Yılmaz | ahmet@mail.com32 | Fatma Demir | fatma@mail.com45YAZARLAR (YazarID, YazarAdi, YazarUlkesi)61 | Mustafa Kaya | Türkiye72 | Zeynep Şimşek | Türkiye89KİTAPLAR (KitapID, KitapAdi, YazarID)101 | SQL Öğreniyorum | 1112 | Veri Tabanları | 21213ÖDÜNÇ (OduncID, ÜyeID, KitapID, OduncTarihi)141 | 1 | 1 | 2024-01-15152 | 1 | 2 | 2024-01-20163 | 2 | 1 | 2024-01-182NF kuralı: Tablonun birincil anahtarının tüm kısmına bağlı olmayan sütunlar başka tabloya taşınmalı. Üstteki tablolar zaten 2NF'yi sağlıyor çünkü her sütun birincil anahtara tamamen bağımlı.
3NF kuralı: Birincil anahtar olmayan sütunlar birbirinden bağımsız olmalı (geçişli bağımlılık olmamalı). YAZARLAR tablosunda YazarUlkesi yerine UlkeID kullanarak daha da normalize edelim:
1ÜLKELER (UlkeID, UlkeAdi)21 | Türkiye34YAZARLAR (YazarID, YazarAdi, UlkeID)51 | Mustafa Kaya | 162 | Zeynep Şimşek | 1Artık "Türkiye" bir yerde tutulur. Yazarlar tablosu sadece birincil anahtarına bağımlı sütunlar içerir.
Normalizasyon sonrası tablolarımız daha esnek, güncellemeleri daha güvenli ve veri tutarlılığı daha yüksek. Sorgularında JOIN kullanarak ilgili verileri birleştirirsin.
0 yorum