Ana içeriğe atla

İkinci Normal Form (2NF) nedir?

Kısmi bağımlılıkları ortadan kaldırarak ikinci normal formun (2NF) veritabanı tasarımınızı nasıl iyileştirebileceğini öğrenin.
Güncel 3 Eki 2026  · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Veritabanlarıyla çalışırken yinelenen veriler ve tutarsız güncellemeler gibi sorunlarla karşılaşmak yaygındır. İkinci normal form, bir veritabanı normalleştirme adımıdır ve birinci normal formu (1NF) temel alarak daha temiz ve daha verimli tablolar oluşturur. 

2NF’i anlamak, veritabanı tasarımı veya veri yönetimiyle çalışan herkes için kritik öneme sahiptir ve üçüncü normal form (3NF) gibi daha üst düzey normalleştirme biçimlerinin temelini atar. Bu yazıda 2NF’in nasıl çalıştığını ve tabloların 2NF gereksinimlerini karşılayacak şekilde nasıl dönüştürülebileceğini pratik örneklerle inceleyeceğiz. Ayrıca 2NF’in faydaları ve sakıncalarının yanı sıra en iyi uyduğu kullanım senaryolarından da bahsedeceğiz.

İkinci Normal Formu Anlamak

İkinci normal form, kısmi bağımlılıkları ortadan kaldırmaya odaklanan bir veritabanı normalleştirme adımıdır. İlişkisel veritabanlarının öncüsü Edgar F. Codd tarafından normalleştirme çalışmasının bir parçası olarak tanıtılmıştır.  

Bir tablonun 2NF’te olabilmesi için önce birinci normal formun kurallarını sağlaması gerekir:

  • Atomiklik: Her hücre tek bir değer içermelidir (tekrarlayan gruplar veya diziler olmamalıdır).
  • Benzersiz satırlar: Tablonun net bir birincil anahtarı olmalıdır.

2NF, ek bir kuralla bir adım daha ileri gider: kısmi bağımlılıkları ortadan kaldırın.

Kısmi bağımlılık, asal olmayan bir öznitelik (hiçbir aday anahtarın parçası olmayan sütun) bir bileşik anahtarın tamamı yerine yalnızca bir kısmına bağlı olduğunda ortaya çıkar. 2NF kuralı, tüm asal olmayan özniteliklerin yalnızca bir kısmına değil, birincil anahtarın tamamına bağımlı olmasını sağlar. Bir tabloda kısmi bağımlılıkların bırakılması, veritabanına yinelenen verilerin sızmasına, bunun da verimsizliğe ve güncelleme veya silme işlemleri sırasında olası tutarsızlıklara yol açmasına neden olabilir.

Yalnızca teori biraz kuru kalabilir, bu yüzden şimdi pratik bir örneğe bakalım.

Aşağıda DataCamp öğrencilerine ait bir Ders Kaydı tablosu yer alıyor.

Öğrenci No Ders No Ders Adı Eğitmen Adı
1001 201 SQL Fundamentals Ken Smith
1002 202 Introduction to Python Merlin O’Donnell
1001 202 Introduction to Python Merlin O’Donnell

Burada birincil anahtar, Öğrenci No ile Ders No bileşiğidir. Ancak asal olmayan öznitelikler olan Ders Adı ve Ders Ücreti yalnızca Ders No ile ilişkili olup tüm anahtara bağlı değildir. Bu durum 2NF’i ihlal eder.

2NF’e Ulaşmak İçin Tabloları Ayrıştırma Adımları

Bir tablonun 2NF kurallarına uyduğundan emin olmak için şunları yapmanız gerekir:

  1. Tüm Aday Anahtarları Belirleyin: Tablodaki satırları benzersiz şekilde tanımlayan asgari öznitelik kümelerini belirleyin. Bunlar sizin aday anahtarlarınızdır.
  2. Fonksiyonel Bağımlılıkları Belirleyin: Tablodaki tüm fonksiyonel bağımlılıkları saptayın. Özellikle, asal olmayan özniteliklerin (hiçbir aday anahtarın parçası olmayanlar) bir bileşik anahtarın yalnızca bir kısmına bağlı olduğu bağımlılıkları arayın.
  3. Kısmi Bağımlılıkları Ortadan Kaldırın: Her bir kısmi bağımlılık için:
    • Bağımlı öznitelikleri, bağımlı oldukları anahtar kısmıyla birlikte yeni bir tabloya taşıyın.
    • Yeni tablonun benzersiz bir birincil anahtarı olduğundan emin olun.
  4. Kısmi Bağımlılıklar Kalmayana Kadar Tekrarlayın: Tüm tablolardaki her asal olmayan özniteliğin, ilgili birincil anahtarına tamamen bağımlı olduğunu doğrulayın.

Uygulamada İkinci Normal Form Örnekleri

Şimdi iki örneğe bakalım.

Örnek 1: Ders kaydı tablosu

Daha önce aşağıdaki ders kaydı tablosunu görmüştük:

Öğrenci No Ders No Ders Adı Eğitmen Adı
1001 201 SQL Fundamentals Ken Smith
1002 202 Introduction to Python Merlin O’Donnell
1001 202 Introduction to Python Merlin O’Donnell

Önceki bölümde özetlediğimiz adımları takip edelim.

1. Aday anahtarımızı belirleyelim.

Bu durumda aday anahtar, Öğrenci No ile Ders No bileşik anahtarıdır. Bu benzersiz kombinasyon, tablodaki her satırı tanımlar.

2. Fonksiyonel bağımlılıklarımızı belirleyelim

Ders Adı ve Eğitmen Adı, tam bileşik anahtara (Öğrenci No, Ders No) değil, Ders No ile ilişkilidir. Bu, bu öznitelikler bileşik anahtarın yalnızca bir kısmına bağlı olduğu için kısmi bağımlılıktır.

3. Kısmi bağımlılıkları ortadan kaldıralım

Anahtarın yalnızca bir kısmına bağlı olan öznitelikleri (Ders Adı ve Eğitmen Adı) yalnızca Ders No temelli yeni bir tabloya taşımamız gerekiyor.

Ayrıştırmadan sonra yeni tablolarımız şu şekilde görünür:

Ders kaydı tablosu

Öğrenci No Ders No
1001 201
1002 202
1001 202

Ders detayları tablosu

Ders No Ders Adı Eğitmen Adı
201 SQL Fundamentals Ken Smith
202 Introduction to Python Merlin O’Donnell

Ellerinizi kirletip kendi veritabanlarınızı oluşturmak isterseniz PostgresQL kursumuza göz atın. Biraz daha ilerideyseniz, varlık-ilişki ve boyutsal modelleme gibi fikirleri ele alan Snowflake’te Veri Modellemesine Giriş kursunu deneyebilirsiniz.

Örnek 2: Siparişler tablosu

Bu Siparişler tablosuyla başlayacağız. Yukarıda özetlediğimiz adımları takip etmeye çalışın ve tabloyu kendiniz ayrıştırın! 

Sipariş No Ürün No Sipariş Tarihi Ürün Adı Tedarikçi Adı
1 201 2024-11-01 Laptop TechSupply
1 202 2024-11-01 Mouse TechSupply
2 201 2024-11-02 Laptop TechSupply
3 203 2024-11-03 Keyboard KeyMasters

1. Aday anahtarımızı belirleyelim

Sipariş No ile Ürün No kombinasyonu her satırı benzersiz şekilde tanımlar ve (Sipariş No, Ürün No) kombinasyonunu bir bileşik aday anahtar yapar. Tek bir sütun satırları benzersiz şekilde tanımlayamaz çünkü:

  • Sipariş No tek başına benzersiz değildir; aynı siparişte birden fazla ürün olabilir.
  • Ürün No tek başına benzersiz değildir; aynı ürün farklı siparişlerde görünebilir.

Bu da (Sipariş No, Ürün No) kombinasyonunun aynı zamanda birincil anahtarımız olduğu anlamına gelir.

2. Fonksiyonel bağımlılıklarımızı belirleyelim

Sipariş Tarihi, tam bileşik anahtara değil, Sipariş No ile ilişkilidir. Bu bir kısmi bağımlılıktır.

Ürün Adı ve Tedarikçi Adı, tam bileşik anahtara değil, Ürün No ile ilişkilidir. Bunlar da kısmi bağımlılıklardır.

3. Kısmi bağımlılıkları ortadan kaldıralım

Her bir mantıksal bağımlılığı ele alan daha küçük tablolara bölmemiz gerekir. 

Önce, Sipariş No özelindeki bilgileri içeren bir sipariş bilgisi tablosu oluşturacağız.

Siparişler Tablosu

Sipariş No Sipariş Tarihi
1 2024-11-01
2 2024-11-02
3 2024-11-03

Ardından, Ürün No özelindeki bilgileri içeren bir tablo oluşturuyoruz.

Siparişler Tablosu

Ürün No Ürün Adı Tedarikçi Adı
201 Laptop TechSupply
202 Mouse TechSupply
203 Keyboard KeyMasters

Orijinal tablo artık yalnızca bileşik anahtara ve siparişlerle ürünler arasındaki ilişkilere indirgenmiş durumda.

Sipariş No Ürün No
1 201
1 202
2 201
3 203

Artık veritabanımız 2NF’tedir çünkü 1) tüm kısmi bağımlılıklar ortadan kaldırılmıştır ve 2) asal olmayan öznitelikler tamamen kendi birincil anahtarlarına bağlıdır.

İkinci Normal Form Ne Zaman Uygulanmalı

Peki, veritabanınızı neden 2NF’e göre yeniden düzenlemelisiniz? Tek başına yeterli midir yoksa bir adım daha atıp 3NF’i mi hedeflemelisiniz? 

İkinci normal formun faydaları ve sınırlamaları

İkinci normal form, veritabanı normalleştirme sürecinde faydalı bir adım olmasını sağlayan çeşitli avantajlar sunar:

  • Gelişmiş veri bütünlüğü: Kısmi bağımlılıkları ortadan kaldırarak, 2NF ekleme, güncelleme ve silme anomalilerini en aza indirir ve daha güvenilir bir veritabanı sağlar.
  • Fazlalığın azaltılması: 2NF veri tekrarını azaltır, depolama kullanımını optimize eder ve veri bakımını basitleştirir.
  • İyileştirilmiş veri yapısı: Daha temiz ve daha verimli bir veritabanı tasarımı oluşturarak üçüncü normal forma geçiş gibi daha ileri normalleştirme için zemin hazırlar.

Ancak bazı sınırlamaları da vardır:

  • Artan karmaşıklık: Tabloları 2NF’e uygun hale getirmek için ayrıştırmak, özellikle bileşik anahtarlar ve bağımlılıklarla uğraşırken tasarım sürecini daha karmaşık hale getirebilir.
  • Ek birleşimler (join): Tabloların bölünmesi, sorgularda daha fazla join gerektirebilir ve bu da büyük veri kümeleri veya karmaşık sorgular içeren sistemlerde performansı etkileyebilir – bununla ilgili daha fazla bilgi aşağıda.
  • Artık fazlalık: 2NF kısmi bağımlılıkları azaltırken, geçişken bağımlılıkları ele almaz; bu da 3NF’te ele alınana kadar bir miktar fazlalığın kalacağı anlamına gelir.

İkinci normal formda performansla ilgili hususlar

Kısmi bağımlılıkları ortadan kaldırmak için tabloların ayrıştırılması, veritabanı performansını doğrudan etkileyebilir. Bir yandan, 2NF’e ulaşmak veri fazlalığını azaltır ve tutarlılığı artırır; bu da ekleme, güncelleme veya silme işlemleri sırasında daha az anomali yaşanmasına yol açar. Öte yandan, normalleştirme tablo sayısını artırabilir; bu da ilişkili verileri getirirken ek join’ler gerektirir. Bu durum, büyük veri kümelerinde sorgu performansını etkileyebilir.

Normalleştirilmiş veritabanınızın performansını korumak için şu en iyi uygulamalara dikkat edin:

  • Dizinleme (Indexing): Ayrıştırılmış tablolar arasındaki join’leri hızlandırmak için dizinleri kullanın.
  • Sorgu optimizasyonu: Ek join maliyetini en aza indirmek için sorguları optimize edin.
  • Hibrit yaklaşım: Performansın önemli olduğu alanlarda, örneğin raporlama tablolarında, normalleştirmeyi denormalizasyonla birleştirin.
  • Düzenli izleme: Olası sorunları yakalamak için profil oluşturma araçlarıyla veritabanı performansınızı sürekli olarak değerlendirin.

2NF, üçüncü normal forma ulaşmak için sadece geçiş adımı mıdır?

Çoğu durumda veritabanı tasarımcıları, fazlalığı daha da azaltma ve genel veri bütünlüğünü geliştirme kabiliyeti nedeniyle üçüncü normal forma ulaşmayı hedefler. Ancak 3NF’e ulaşmak genellikle daha fazla tablo ve ilişki oluşturmak gibi ek çalışmalar gerektirir; bu da sorgu yürütümünde karmaşıklık ve performans ödünleri getirebilir.

Yalnızca ikinci normal formun yeterli olabildiği durumlar da vardır. Basitlik ve hızlı uygulama öncelikliyse; örneğin küçük ölçekli projelerde, prototiplemede veya veri fazlalığının minimum olduğu durumlarda 2NF yeterli olabilir. Örneğin, tüm özniteliklerin zaten basit bir birincil anahtara tamamen bağımlı olduğu sistemlerde, 2NF’e ulaşmak kısmi bağımlılığı azaltma ana hedefini yerine getirebilir ve daha ileri normalleştirmeye gerek kalmayabilir.

İkinci normal formun ötesine geçmek: üçüncü normal forma doğru

Veritabanınızı daha da normalleştirmek isterseniz, tablolarınızı yeniden düzenlemeye devam ederek üçüncü normal forma ulaşabilirsiniz.

3NF, geçişken bağımlılıkları ele alarak 2NF üzerine inşa edilir – anahtar olmayan özniteliklerin, birincil anahtar yerine diğer anahtar olmayan özniteliklere bağlı olduğu durumlar. Bu ilerleme, her özniteliğin doğrudan birincil anahtara ve yalnızca ona bağlı olmasını sağlar.

Örneğin, ders kayıtlarını izleyen bir tabloda:

  • 2NF: Ders adı ve öğrenci adı gibi özniteliklerin kendi birincil anahtarlarına (ör. Öğrenci No ve Ders No) tamamen bağlı olmasını sağlar. Bu, anahtar olmayan özniteliklerin bileşik anahtarın yalnızca bir kısmına bağlı olduğu kısmi bağımlılıkları ortadan kaldırır.
  • 3NF: Eğitmen detayları veya bölüm bilgileri gibi özniteliklerin ayrı tablolarda tutulmasını sağlayarak geçişken bağımlılıkları ortadan kaldırır.

3NF, veri bütünlüğü ve verimliliğin kritik olduğu daha karmaşık sistemler için idealdir; özellikle de veri hacmi arttıkça. 3NF ve daha kısıtlayıcı biçimi olan BCNF hakkında daha fazla bilgi edinmek isterseniz Üçüncü normal form nedir? yazımıza göz atın.

Sonuç

İkinci normal form, 1NF ile 3NF gibi daha üst düzey biçimler arasındaki boşluğu kapatan, veritabanı normalleştirmenin temel bir adımıdır. Kısmi bağımlılıkları kaldırarak 2NF, fazlalığı azaltır ve verilerinizin güvenilirliğini artırır. Bir miktar karmaşıklık ekleyebilse de gelişmiş veri bütünlüğü ve basitleştirilmiş bakım avantajları, onu etkili veritabanı tasarımının kritik bir parçası haline getirir.

Yeteneklerinizi bir adım öteye taşımaya hazırsanız, normalleştirme tekniklerini ve bunların pratik uygulamalarını daha derinlemesine öğrenmek için Veritabanı Tasarımı kursumuzu keşfedin. Ayrıca SQL Associate Sertifikamız ile SQL ve veritabanı yönetimi becerilerinizi doğrulayabilir ve uzmanlığınızı potansiyel işverenlere gösterebilirsiniz!

Son olarak şunu söylemek isterim: Bir işletmede karar verici konumundaysanız ve daha temiz, daha verimli veritabanları oluşturmanız gerektiğini biliyorsanız, bir DataCamp for Business demo talebi bırakmayı düşünün. Ekibinizin yetkinliklerini dönüştürerek işletme verimliliğini ve inovasyonu destekleyen ölçeklenebilir veritabanı sistemleri oluşturmanıza yardımcı olabiliriz. Hatta özel öğrenme yolları ve kişiselleştirilmiş track’ler de oluşturabiliriz. 


Marie Fayard's photo
Author
Marie Fayard

İlk prototipten ürün-pazar uyumuna ve ötesine kadar erken aşama girişimleri büyütme konusunda uzmanlaşmış, ürün odaklı bir teknik liderim. İnsanların teknolojiyi nasıl kullandığına dair bitmeyen bir merakım var ve kurucularla ile disiplinler arası ekiplerle yakın çalışarak cesur fikirleri hayata geçirmeyi seviyorum. Ürün inşa etmediğim zamanlarda ya dünyanın yeni köşelerinde ilham peşinde koşuyor ya da yoga stüdyosunda stres atıyorum.

2NF SSS

Bileşik anahtarlar olmadan da ikinci normal form (2NF) veritabanlarına uygulanabilir mi?

Evet! 2NF genellikle bileşik anahtarları içerse de, tüm asal olmayan öznitelikler birincil anahtara tamamen bağımlıysa tek anahtarlı tablolar da 2NF ilkelerine uyabilir.

2NF’e ulaşmak, bir veritabanındaki tüm fazlalıkların ortadan kaldırılmasını garanti eder mi?

Hayır. 2NF kısmi bağımlılıkları ortadan kaldırsa da geçişken bağımlılıkları ele almaz. Bunun için üçüncü normal forma (3NF) ilerlemeniz gerekir.

2NF’e ilerlemeden 1NF’te olan bir veritabanının yeterli olduğu durumlar var mıdır?

Evet. Veri fazlalığının çok az olduğu çok basit sistemlerde veya prototiplerde 1NF yeterli olabilir. Genel olarak, çok özel ve gerekçelendirilebilir bir nedeniniz olmadıkça 1NF’te kalmanızı önermem.

2NF ile üçüncü normal form (3NF) arasındaki fark nedir?

2NF, özniteliklerin tüm anahtara bağlı olmasını sağlayarak kısmi bağımlılıkları kaldırır. 3NF ise bir adım daha ileri giderek geçişken bağımlılıkları ortadan kaldırır ve özniteliklerin birincil anahtara doğrudan, anahtar olmayan özniteliklere değil, bağlı olmasını sağlar.

Mevcut veritabanımın zaten 2NF’te olup olmadığını nasıl kontrol ederim?

Bileşik anahtarlı tüm tabloları gözden geçirip, asal olmayan tüm özniteliklerin bileşik anahtarın tamamına, yalnızca bir kısmına değil, bağımlı olduğunu doğrulayarak kontrol edebilirsiniz.

Konular
Veri Mühendisliği
SQL

DataCamp ile öğrenin

Kurs

Veritabanı Tasarımı

4 sa
130.6K
Verileri daha verimli bir şekilde işlemek, depolamak ve düzenlemek için SQL'de veritabanı tasarlamayı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör