İçeriğe geç
parazade

Normalizasyon Nedir?

İngilizce: Database Normalization

Yayın: · Son güncelleme:

Normalizasyon Nedir? Kısaca

Normalizasyon, ilişkisel veritabanı tasarımında veri tekrarını ve güncelleme hatalarını azaltmak için tabloları kurallara göre bölme işlemidir. Bu kurallar birinci, ikinci ve üçüncü normal form gibi aşamalarla tanımlanır.

Normalizasyon nedir?
İçindekiler
  1. Normalizasyon nedir?
  2. Normal formlar
  3. Örnek
  4. Denormalizasyon ne zaman gerekir?

Normalizasyon nedir?

Normalizasyon, verileri tekrar etmeyecek ve çelişmeyecek biçimde tablolara ayırma yöntemidir. Kavramı ilişkisel modeli öneren Edgar F. Codd ortaya koymuştur. Amaç, her bilginin tek bir yerde durmasıdır.

Bu kavram, istatistikteki ya da makine öğrenmesindeki veri normalizasyonundan farklıdır. Orada sayılar belirli bir aralığa ölçeklenir, burada ise tablo yapısı düzenlenir.

Normal formlar

Normalizasyon basamaklar hâlinde ilerler. Uygulamada en sık hedeflenenler ilk üç formdur:

  • 1NF: Her hücrede tek bir değer bulunur, tekrar eden sütun grupları olmaz.
  • 2NF: 1NF şartları sağlanır ve her sütun birincil anahtarın tamamına bağlıdır.
  • 3NF: 2NF şartları sağlanır ve anahtar olmayan sütunlar birbirine bağlı değildir.

Daha ileri aşamalar (BCNF, 4NF gibi) da vardır, ama çoğu iş uygulaması için 3NF yeterli kabul edilir.

Örnek

Varsayımsal bir sipariş tablosunda her satırda müşterinin adı, telefonu ve adresi yeniden yazılıyor olsun. Ayşe Hanım 40 sipariş verdiyse adresi 40 kez kayıtlıdır. Adresi değiştiğinde birkaç satır güncellenmeden kalırsa sistem iki farklı adres gösterir.

Normalize edilmiş tasarımda müşteri bilgileri ayrı bir "musteriler" tablosuna taşınır. Sipariş tablosu yalnızca musteri_id değerini tutar ve adres değişikliği tek satırda yapılır.

Denormalizasyon ne zaman gerekir?

Normalizasyon her zaman en hızlı okuma performansını vermez, çünkü veri birçok tabloya dağılır ve sorgularda JOIN sayısı artar. Raporlama ve analiz sistemlerinde bazı bilgiler bilinçli olarak tekrar edilir; buna denormalizasyon denir. Önce normalize edilmiş bir tasarımla başlayıp gerçek performans sorunlarında kontrollü denormalizasyona gitmek daha güvenli bir yoldur.

Sıkça Sorulan Sorular

Normalizasyon yapmazsam ne olur?

Küçük projelerde hemen sorun çıkmayabilir. Veri büyüdükçe aynı bilginin farklı kopyaları çelişmeye başlar, güncelleme ve silme işlemleri hatalı sonuç üretir.

Normalizasyon NoSQL veritabanlarında da uygulanır mı?

Klasik normal form kuralları ilişkisel model için tanımlanmıştır. Doküman tabanlı NoSQL sistemlerde ise okuma hızını artırmak için veriyi birlikte saklamak, yani bir ölçüde denormalizasyon, daha yaygındır.

İlgili terimler

Veritabanı Şeması(Database Schema)Veritabanı şeması (schema), bir veritabanındaki tabloların, sütunların, veri türlerinin, anahtarların ve tablolar arasındaki ilişkilerin yapısını tanımlayan plandır. Verinin kendisini değil, iskeletini anlatır.Veritabanı Tablosu(Database Table)Veritabanı tablosu, ilişkisel bir veritabanında aynı türdeki kayıtları satırlar ve sütunlar hâlinde saklayan temel yapıdır. Her satır bir kaydı, her sütun o kayda ait bir özelliği temsil eder.ER Diyagramı(ER Diagram)ER diyagramı (varlık-ilişki diyagramı), bir veritabanındaki varlıkları, bu varlıkların niteliklerini ve aralarındaki ilişkileri görsel olarak gösteren şemadır. Veritabanı tasarlanırken plan olarak kullanılır.Veri Modeli(Data Model)Veri modeli, bir sistemde hangi verilerin tutulacağını, bu verilerin nasıl düzenleneceğini ve birbirleriyle nasıl ilişkilendirileceğini tanımlayan yapısal plandır. Genellikle kavramsal, mantıksal ve fiziksel aşamalarla hazırlanır.Sütun(Column)Sütun, Excel çalışma sayfasında yukarıdan aşağı uzanan dikey hücre dizisidir. Sütunlar sayfanın üstünde A, B, C diye harflerle adlandırılır ve tabloda genellikle tek bir bilgi türünü taşır.Satır(Row)Satır, Excel çalışma sayfasında soldan sağa uzanan yatay hücre dizisidir. Satırlar sayfanın solunda 1, 2, 3 diye numaralanır ve bir tabloda genellikle her satır tek bir kaydı temsil eder.JOINJOIN, SQL'de iki veya daha fazla tablodaki satırları ortak bir sütun üzerinden eşleştirip tek bir sonuç tablosunda birleştiren ifadedir. Genellikle birincil anahtar ile yabancı anahtar eşleştirilerek kullanılır.