← Back to list

Veritabanları Normalizasyonu ve Normalizasyon Seviyeleri

Veritabanı tasarımında en sık karşılaşılan sorunlardan biri, verinin gereksiz tekrarları ve tutarsızlıklarıdır. Peki, veritabanı…

Meryem Arpacı · 2025-02-10 14:41 · 2 claps · 5.1 min read
#normalization #database #veritabanı #normalizasyon #veri
Open on Medium ↗

Veritabanları Normalizasyonu ve Normalizasyon Seviyeleri

Veritabanı tasarımında en sık karşılaşılan sorunlardan biri, verinin gereksiz tekrarları ve tutarsızlıklarıdır. Peki, veritabanı tablolarımızı nasıl daha düzenli, verimli ve yönetilebilir hale getirebiliriz?

Cevap: Normalizasyon.

Bu yazıda, normalizasyon kavramını ve normalizasyon seviyelerini yalnızca tanım düzeyinde ele almakla kalmayıp, uygulamada karşılaşabileceğiniz zorluklar, pratik örnekler ve yol gösterici stratejilerle birlikte derinlemesine inceliyoruz.

1. Neden Normalizasyon?

Veritabanı tasarımının en temel amacı, veriyi saklama, güncelleme ve sorgulama işlemlerini en verimli şekilde gerçekleştirmektir. Ancak ham verilerle çalışmak, çoğu zaman şunlara neden olur:

  • Veri Tekrarı (Redundancy): Aynı bilgilerin birden fazla yerde saklanması, depolama alanını gereksiz yere tüketir ve güncelleme işlemlerinde uyumsuzluklara yol açar.
  • Güncelleme Anomalileri: Eğer veriler tutarsız biçimde saklanıyorsa, bir kaydı güncellerken diğerlerini güncellemek unutulabilir.
  • Karmaşık Sorgular: Tekrarlanan veriler, sorgu yapısını karmaşıklaştırır ve performans düşüklüğüne sebep olabilir.

Normalizasyon, bu sorunları çözmek için veriyi mantıksal olarak parçalara ayırarak, her tablonun kendine ait, net bir amacı olmasını sağlar. Bu sayede hem veri bütünlüğü korunur hem de sistemin bakım ve geliştirme süreçleri kolaylaşır.

2. Normalizasyonun Temel İlkeleri

Normalizasyon, veritabanı tablolarını belirli kurallara (normal formlar) uygun hale getirme sürecidir. Bu süreçte amaç;

  • Veri tekrarını minimize etmek,
  • Güncelleme, ekleme ve silme anomalilerini önlemek,
  • Veri tutarlılığını korumaktır.

Bu kuralları uygulayarak, veritabanınızın her parçası daha tutarlı, esnek ve yönetilebilir hale gelir.

3. Normalizasyon Seviyeleri

3.1 Birinci Normal Form (1NF)

Kural: Her hücrede yalnızca tek, bölünemez (atomik) bir değer bulunmalıdır.

  • İlişkinin her hücresi yalnızca bir değer içeriyorsa bu ilişki birinci normal formdadır.
  • İlişkideki hiçbir niteliğin hiçbir değerinin bir dizi, bir matris veya birleşik bir değer olmaması gerekir.
  • Temel ilişki formudur, ilişki denildiğinde 1NF ilişki anlaşılır.

Neden Önemli? Ham veri tablosunda aynı sütunda birden fazla değerin bulunması, verinin sorgulanmasını ve güncellenmesini zorlaştırır. Örneğin, bir müşterinin birden fazla telefon numarası varsa, bunların hepsini aynı hücrede tutmak yerine, her numarayı ayrı satırlara veya sütunlara ayırmak gerekir.

Uygulama İpucu:

  • Tablolarınızı gözden geçirin ve her hücrede yalnızca bir veri bulunup bulunmadığını kontrol edin.
  • Çoklu değerler içeren alanları, ayrı tablolara bölerek yeniden yapılandırın.

Resim 1. 1NF Veritabanı örneği

Resim 1. 1NF Veritabanı örneği

3.2 İkinci Normal Form (2NF)

Kural: Tablo, 1NF şartlarını sağladıktan sonra, tüm non-key (birincil anahtar dışındaki) özniteliklerin, birincil anahtarın tamamına bağımlı olması gerekir. Yani, eğer bileşik bir anahtar kullanıyorsanız, öznitelikler sadece anahtarın bir kısmına bağlı olmamalıdır.

Neden Önemli? Kısmi bağımlılıklar, verinin gereksiz tekrarına ve güncelleme hatalarına yol açar. Örneğin, bir sipariş tablosunda sipariş numarası ve ürün kodundan oluşan bileşik anahtar varsa, ürün ismi gibi bilgiler yalnızca ürün koduna bağlı ise, bu durum veri tutarsızlığına neden olabilir.

Uygulama İpucu:

  • Tablonuzu analiz edin ve bileşik anahtarın parçalarına bağlı öznitelikleri ayırarak yeni tablolar oluşturun.
  • Her öznitelik, tüm bileşik anahtara bağlı mı kontrol edin.

Resim 2. 2NF Veritabanı örneği

Resim 2. 2NF Veritabanı örneği

3.3 Üçüncü Normal Form (3NF)

Kural: Tablo, 2NF şartlarını sağladıktan sonra, non-key öznitelikler arasında transitif bağımlılık bulunmamalıdır. Yani, herhangi bir non-key öznitelik, başka bir non-key özniteliğe bağlı olmamalıdır.

Neden Önemli? Transitif bağımlılıklar, verinin dolaylı yoldan tekrar etmesine ve güncelleme hatalarına neden olur. Örneğin, bir çalışan tablosunda çalışan numarası, çalışanın departman numarasına bağlıysa ve departman adı da departman numarasına bağlıysa, departman adı transitif olarak çalışan numarasına bağlı hale gelir.

Uygulama İpucu:

  • Transitif bağımlılıkları tespit etmek için tablo yapınızı dikkatlice gözden geçirin.
  • Bağımlı bilgileri ayrı tablolara taşıyarak, veri bütünlüğünü sağlayın.

Resim 3. 3NF Veritabanı örneği

Resim 3. 3NF Veritabanı örneği

3.4 Boyce-Codd Normal Formu (BCNF)

Kural: Her fonksiyonel bağımlılıkta, belirleyici öznitelik (determinant) mutlaka aday anahtar olmalıdır. BCNF, 3NF’nin katı bir versiyonu olarak kabul edilir.

Neden Önemli? Bazen 3NF’ye uymak yeterli görünse de, karmaşık veri yapılarında bazı bağımlılıklar hala sorun yaratabilir. BCNF, bu durumları ortadan kaldırarak veri bütünlüğünü en üst düzeye çıkarır.

Uygulama İpucu:

  • Tablolarınızı analiz ederken, tüm fonksiyonel bağımlılıkları listeleyin.
  • Her bağımlılığın belirleyici özniteliğinin aday anahtar olup olmadığını kontrol edin ve gerekirse yapısal değişiklikler yapın.

Resim 4. BCNF Veritabanı örneği

Resim 4. BCNF Veritabanı örneği

3.5 Dördüncü (4NF) ve Beşinci Normal Form (5NF)

4NF — Çok Değerli Bağımlılıklar: Bir tabloda, birden fazla bağımsız çok değerli bağımlılık varsa, bu durum veri fazlalığına yol açar. 4NF, bu bağımlılıkları ayrıştırarak her tabloya tek bir anlam katmayı amaçlar.

Resim 5. 4NF Veritabanı örneği

Resim 5. 4NF Veritabanı örneği

5NF — Birleşim (Join) Bağımlılıkları: 5NF, karmaşık birleşim bağımlılıklarının giderilmesiyle, veritabanının en optimal yapıya kavuşmasını sağlar. Özellikle çok katmanlı veri ilişkilerinde, 5NF uygulanarak verilerin tutarlı ve sorgulanabilir olması sağlanır.

Uygulama İpuçları:

  • 4NF ve 5NF durumları, genellikle ileri düzey veri modellerinde ve büyük ölçekli sistemlerde karşınıza çıkar.
  • Bu seviyelerdeki sorunları çözmek için, veri modellerinizi detaylıca analiz edin ve gereksiz bağımlılıkları ayırın.

4. Uygulama Stratejileri ve En İyi Uygulamalar

Normalizasyonun teorik kavramları kadar, uygulamada da dikkat edilmesi gereken noktalar vardır:

  • Hibrit Yaklaşım: Her durum için aşırı normalizasyon her zaman ideal değildir. Performans gereksinimleri, raporlama ihtiyaçları veya gerçek zamanlı veri işleme durumlarında, belirli alanlarda kontrollü denormalizasyon çözümleri uygulanabilir. Örnek: Sık sorgulanan bir müşteri tablosunda, normalizasyon ile birlikte bazı özet verileri ayrı bir tabloya kopyalamak, hem veri tutarlılığını korur hem de sorgu hızını artırır.
  • Düzenli Temizlik ve Bakım: Normalizasyon, veritabanını parçalara ayırsa da, zamanla bu parçaların bakımını yapmak gerekir. Özellikle denormalize edilmiş alanlar, periyodik olarak gözden geçirilmeli ve gerekirse yeniden yapılandırılmalıdır.
  • İndeksleme: Normalleştirilmiş tablolarda JOIN işlemleri yoğunlaşabilir. Bu nedenle, performansı artırmak adına indeksleme stratejilerini doğru uygulamak kritik önem taşır.
  • Uygulama ve Güncelleme Senaryoları: Veritabanı tasarımınız, sadece saklama amacıyla değil; aynı zamanda veri güncellemeleri, eklemeler ve silmelerde de verimli olmalıdır. Normalizasyon, bu işlemlerin hatasız gerçekleşmesini sağlar, ancak tasarım sürecinde bu operasyonların pratikte nasıl işlediğini göz önünde bulundurmak gerekir.

5. Avantajlar ve Dezavantajlar: Derinlemesine Değerlendirme

Avantajlar

  • Veri Tutarlılığı ve Entegritesi: Normalizasyon sayesinde veri tekrarları azalır, güncelleme ve ekleme işlemleri daha tutarlı hale gelir.
  • Depolama Verimliliği: Tekrarlanan verilerin önlenmesi, depolama alanının daha verimli kullanılmasını sağlar.
  • Sorgu Performansı: İyi yapılandırılmış ve normalleştirilmiş tablolar, özellikle büyük veri setlerinde daha hızlı sorgulanabilir.

Dezavantajlar

  • Karmaşık Yapı: Aşırı normalizasyon, tabloların çok sayıda küçük parçalara ayrılmasına neden olabilir. Bu durum, JOIN işlemlerinin artmasına ve sorguların karmaşıklaşmasına yol açar.
  • Performans Maliyeti: Çok katmanlı normalizasyon, özellikle gerçek zamanlı veri işlemlerinde ek yük oluşturabilir.
  • Bakım Zorluğu: Parçalanmış veri yapıları, veri güncellemeleri ve sistem bakımı sırasında ek çaba gerektirebilir.

6. Sonuç: Normalizasyonu Gerçekleştirmek ve Uygulamak

Veritabanı normalizasyonu, verilerin tutarlılığı, güncellenebilirliği ve sorgulama verimliliği açısından kritik bir rol oynar. Hem temel normal formlar (1NF, 2NF, 3NF) hem de ileri düzey (BCNF, 4NF, 5NF) yaklaşımlar, veritabanı tasarımında sorunları minimize eder. Ancak, her projenin ihtiyaçları farklıdır; bu yüzden normalizasyon ve gerektiğinde kontrollü denormalizasyon arasında dikkatli bir denge kurulmalıdır.

Bu yazıda, normalizasyon kavramını ve her bir normal formu detaylı örnekler, uygulama ipuçları ve stratejilerle ele aldım. Veritabanı tasarımınızda bu prensipleri uygulayarak, hem veri bütünlüğünü koruyabilir hem de sistem performansını optimize edebilirsiniz.

7. Kaynakça

  • Elmasri, R. & Navathe, S. B. — Fundamentals of Database Systems (7th Edition, Pearson, 2015)
  • Date, C. J. — An Introduction to Database Systems (8th Edition, Addison-Wesley, 2003)
  • IBM Redbooks — Veritabanı Yönetimi ve Güvenlik Uygulamaları

NOT: Bu yazımdaki görseller Fırat Üniversitesi Yapay Zeka ve Veri Mühendisliği Bölümü Öğretim Üyesi Dr. Öğr. Üyesi Mahmut Kaya hocamın veritabanı sunumlarından alıntılanmıştır.


메타데이터
post_id
3d552d3626bb
slug
veritabanları-normalizasyonu-ve-normalizasyon-seviyeleri-3d552d3626bb
url
https://medium.com/@meryemarpacii/veritabanlar%C4%B1-normalizasyonu-ve-normalizasyon-seviyeleri-3d552d3626bb
canonical_url
https://medium.com/@meryemarpacii/veritabanlar%C4%B1-normalizasyonu-ve-normalizasyon-seviyeleri-3d552d3626bb
author_url
https://medium.com/@meryemarpacii
status
ok
fetched_at
2026-07-08 17:17:42