← Database Management System Ana Sayfa
Çok Değerli Bağımlılıklar & 4. Normal Form
Veritabanı Normalizasyonu

Çok Değerli Bağımlılıklar
& 4. Normal Form

MVD · 4NF · Ayrıştırma · Bağımsız Gerçeklerin Ayrılması

// 01

Neden 4NF'e İhtiyaç Duyarız?

BCNF FD tabanlı tekrarı çözer — ama bazı ilişkiler hâlâ sorunludur

💡
Ana Fikir Normalizasyon, büyük "mega ilişkileri" ve veri özelliklerini alarak bunları otomatik olarak parçalar. Sonuç ilişkiler bir normal formu sağlamalı, anomaliler içermemeli ve bilgi kaybetmemelidir. Normal formları tanımlayan şeyler: Fonksiyonel bağımlılıklar (FD) → BCNF, Çok değerli bağımlılıklar (MVD) → 4NF.

✅ BCNF'in Çözdüğü

Fonksiyonel Bağımlılıklardan (FD) kaynaklanan tekrar

Örnek: dept_name → building

Her eğitmen için aynı bina tekrar eder → BCNF ayrıştırması bunu düzeltir.

❌ BCNF'in Çözemediği

Çok Değerli Bağımlılıklardan (MVD) kaynaklanan tekrar

Örnek: SSN →→ hobby

Bir öğrencinin üniversiteleri ve hobileri birbirinden bağımsızdır → BCNF bunu atlıyor → 4NF Gerekli!

⚠️
Temel Sorun

Bir ilişki BCNF'de olabilir ama yine de ciddi tekrar sorunları taşıyabilir. Bu durum yalnızca bağımsız gerçeklerin aynı tabloda tutulmasından kaynaklanır.

// 02

Sorunlu Tablo: Apply(SSN, cName, hobby)

BCNF'de olmasına rağmen ciddi tekrar sorunları var

📌 Herhangi bir FD var mı?

Hayır. Hiçbir nitelik diğerini belirleyemez.

🔑 Anahtar nedir?

Tüm nitelikler. FD olmadığından {SSN, cName, hobby} tek anahtar.

✅ BCNF'de mi?

Evet. Önemsiz olmayan FD yok → BCNF ihlali yok.

❌ İyi bir tasarım mı?

HAYIR! Bağımsız gerçeklerden kaynaklanan devasa tekrar!

🔴
Sorun: Kombinasyon Patlaması

Öğrenci 123'ün 2 üniversitesi (MIT, Harvard) ve 2 hobisi (Tenis, Satranç) varsa → sadece bu kombinasyonlar için 4 satır gerekir!

SSNcName (Üniversite)hobby (Hobi)Açıklama
123MITTenis↑ Tekrar başlıyor
123MITSatranç
123HarvardTenis
123HarvardSatranç↓ 4 satır = 2×2 kombinasyon
📐
Genel Formül

Bir öğrencinin n üniversitesi ve m hobisi varsa → tabloda n × m satır tutmak gerekir. Bu tamamen gereksiz bir tekrardır çünkü üniversiteler ve hobiler birbirinden bağımsızdır.

// 03

Çok Değerli Bağımlılık (MVD) — Tanım

X →→ Y okunuşu: "X, Y'yi çok-belirler"

X →→ Y   |   R üzerinde Çok Değerli Bağımlılık

📖 Resmi Tanım

R'nin iki demeti X niteliklerinin tamamı üzerinde hemfikir oluyorsa, Y bileşenleri yer değiştirilebilir ve elde edilen yeni demetler de R'de bulunmak zorundadır.

🧠 Basit Anlatım

Her X değeri için Y değerlerinin kümesi, diğer tüm niteliklerden (R − X − Y) bağımsızdır.


Yani X'i bilmek, Y'nin hangi değerlere sahip olabileceğini belirler — ama bu Y değerleri geri kalan niteliklerle hiçbir şekilde bağlantılı değildir.

⚡ FD vs MVD Karşılaştırması

FD (→): X, Y'nin TEK bir değerini belirler.


MVD (→→): X, Y değerlerinin bir kümesini belirler.


MVD, FD'nin genelleştirilmiş halidir.

FD TekrarıMVD Tekrarı
Ne tekrar eder?Aynı tekil değerlerAynı kombinasyonlar
ÖrnekHer eğitmen için bölüm binası tekrarlanırHer telefon, beğenilen her içecekle eşleştirilir
Çözen NFBCNF4NF
// 04

MVD Örneği — Müşteriler Tablosu

Customers(name, addr, phones, drinksLiked)

🌍 Gerçek Dünya Kuralları

• Bir müşterinin birden fazla telefon numarası olabilir.

• Bir müşteri birden fazla içecek sevebilir.

• Bu iki gerçek tamamen bağımsızdır!


FD: name → addr

MVD: name →→ phones

MVD: name →→ drinksLiked

🚨
Tekrar Problemi

Sue'nun 2 telefonu (111, 222) ve 2 sevdiği içeceği (Coke, IceTea) varsa → her telefon × her içecek → 4 satır!

nameaddrphonesdrinksLiked
SueLondon111Coke
SueLondon111IceTea
SueLondon222Coke
SueLondon222IceTea

🔄 MVD Değişimi Nasıl Çalışır? (name →→ phones)

İki demet name üzerinde hemfikirse, phones değerleri yer değiştirebilir ve oluşan yeni demetler de tabloda bulunmak zorundadır:

nameaddrphonesdrinksLikedDurum
Sueap1d1← orijinal
Sueap2d2← orijinal
Sueap2 ↕d1← bulunmak zorunda!
Sueap1 ↕d2← bulunmak zorunda!
MVD'nin Anlamı

Eğer tabloda (Sue, a, p1, d1) ve (Sue, a, p2, d2) varsa, (Sue, a, p2, d1) ve (Sue, a, p1, d2) de olmalıdır. Bu zorunluluk tekrarı doğurur.

// 05

MVD Kuralları

Çok değerli bağımlılıkları yöneten üç önemli kural

1

Her FD aynı zamanda bir MVD'dir

Eğer X → Y ise, X →→ Y de geçerlidir.

Neden? İki demet X üzerinde hemfikirse, Y değerleri FD gereği zaten aynıdır. Aynı değerleri değiştirmek hiçbir şeyi değiştirmez → yeni demetler zaten ilişkide mevcuttur.

name → addr  ⟹  name →→ addr
2

Tamamlayıcılık Kuralı (Complementation Rule)

Eğer X →→ Y ise, X →→ Z de geçerlidir; burada Z = R − X − Y (kalan tüm nitelikler).

Neden? Y, X verildiğinde Z'den bağımsızsa, Z de X verildiğinde Y'den bağımsızdır. Bağımsızlık simetriktir!

name →→ phones  ⟹  name →→ drinksLiked
3

⛔ Bölme (Splitting) MVD'lerde Geçerli DEĞİLDİR

FD'lerin aksine, bir MVD'nin hiçbir tarafını bölemezsiniz!

name →→ areaCode phone ifadesi, name →→ areaCode anlamına GELMEZ. Alan kodu ve telefon her zaman birlikte hareket etmek zorundadır.

⚠️
Sık Yapılan Hata

FD'lerde X → Y,Z ifadesini X → Y ve X → Z olarak bölebilirsiniz. MVD'lerde bu yasaktır!

📋 Bölmenin Neden Başarısız Olduğunun Detaylı Örneği

Customers(name, areaCode, phone, drinksLiked, manf)


Geçerli MVD'ler (sağ taraflar bir arada kalmalı):

name →→ areaCode phone   (alan kodu + 7 rakam = TEK telefon numarası — ayrılamaz!)

name →→ drinksLiked manf   (içecek, üreticisiyle her zaman birlikte gelir!)

nameareaCodephonedrinksLikedmanf
Sue650555-1111CokeC.C.
Sue650555-1111IceTeaLipton
Sue415555-9999CokeC.C.
Sue415555-9999IceTeaLipton
name →→ areaCode neden tek başına geçerli değil?

Alan kodlarını bağımsız olarak değiştirseydik, 650'yi 555-9999 ile ve 415'i 555-1111 ile karıştırırdık. Bunlar GEÇERSİZ telefon numaralarıdır — 650-555-9999 Sue'nun gerçek telefonu değil. Çift her zaman birlikte kalmalı!

// 06

4NF — Tanım

Dördüncü Normal Form, MVD'leri ele almak için BCNF'yi genişletir

4NF Kuralı

Bir R ilişkisi 4NF'dedir: eğer her önemsiz olmayan (nontrivial) MVD olan X →→ Y için X, R'nin bir süper anahtarı olmak zorundadır.

📌 "Önemsiz Olmayan MVD" Ne Demektir?

(1) Y, X'in bir alt kümesi DEĞİLDİR.

(2) X ve Y birlikte R'nin tüm niteliklerini kapsamamaktadır.


Bu iki koşuldan biri sağlanmıyorsa, MVD "önemsiz" (trivial) sayılır ve 4NF ihlali oluşturmaz.

🔑 Süper Anahtar Notu

Süper anahtar tanımı yalnızca FD'lere dayanır — MVD'lere değil.

X'in tüm nitelikleri fonksiyonel olarak belirleyebilmesi gerekir.

BCNF4NF
Dikkate AldığıYalnızca FD'lerFD'ler + MVD'ler
İhlal KoşuluX→Y, X süper anahtar değilX→→Y, X süper anahtar değil
GüçDaha ZayıfDaha Güçlü ⭐
4NF → BCNF?✅ Her Zaman!
🎯
Önemli Sonuç

4NF'deki her ilişki otomatik olarak BCNF'dedir de. Ancak BCNF'deki bir ilişki her zaman 4NF'de olmayabilir (MVD ihlalleri olabilir).

// 07

4NF Ayrıştırma Algoritması

BCNF ile aynı teknik — ama MVD ihlalleri tetikler

1

R için anahtarları hesapla

Anahtarlar yalnızca FD'lere dayanır — MVD'ler anahtarları etkilemez.

2

4NF'yi ihlal eden önemsiz olmayan bir X →→ Y bul

X süper anahtar değildir, Y önemsiz (trivial) değildir.

3

R'yi R1 ve R2'ye ayır

R1 = (X, Y)    ve    R2 = (R − (Y − X))   yani X + Y olmayan tüm nitelikler

4

FD'leri ve MVD'leri R1 ve R2'ye yansıt

Her alt ilişkide hangi bağımlılıkların geçerli olduğunu belirle.

5

Tüm ilişkiler 4NF'de olana kadar tekrarla

Her alt ilişkiyi yeni ihlaller açısından kontrol et ve gerekirse yeniden ayrıştır.

ℹ️
Kayıpsız Birleşim (Lossless Join) Garantisi

Bu ayrıştırma her zaman kayıpsız birleşim özelliğini korur. R1 ve R2'yi doğal birleştirme ile birleştirdiğinizde orijinal R'yi geri elde edersiniz.

// 08

Ayrıştırma Örnekleri

Adım adım 4NF ayrıştırması

Örnek 1: Apply(SSN, cName, hobby)

İki bağımsız gerçeği ayırma

Verilen bilgiler:

MVD'ler: SSN →→ cName ve SSN →→ hobby

Anahtar: {SSN, cName, hobby}Tüm MVD'ler 4NF'yi ihlal ediyor!

✅ Apply1(SSN, cName) — 4NF

FD yok, MVD yok → 4NF'de

SSNcName
123MIT
123Harvard
123Stanford

3 satır — her üniversite için bir satır ✅

✅ Apply2(SSN, hobby) — 4NF

FD yok, MVD yok → 4NF'de

SSNhobby
123Tenis
123Satranç

2 satır — her hobi için bir satır ✅

🎉
Sonuç

Önce: 3 üniversite × 2 hobi = 6 satır → Sonra: 3 + 2 = 5 satır. Tekrar yok!

Örnek 2: Customers(name, addr, phones, drinksLiked)

Adım adım çok aşamalı ayrıştırma

Başlangıç bilgileri:

FD: name → addr

MVD'ler: name →→ phones, name →→ drinksLiked

Anahtar: {name, phones, drinksLiked}Tümü 4NF'yi ihlal ediyor!

📌 Adım 1: name → addr kullanarak ayır

✅ Customers1(name, addr) — 4NF

Tek bağımlılık: name → addr

name anahtardır → 4NF sağlandı!

❌ Customers2(name, phones, drinksLiked)

name →→ phones ve name →→ drinksLiked hâlâ 4NF'yi ihlal ediyor!

📌 Adım 2: Customers2'yi name →→ phones kullanarak ayır

✅ Customers3(name, phones) — 4NF

İhlal yok → 4NF!

✅ Customers4(name, drinksLiked) — 4NF

İhlal yok → 4NF!

🏁
Nihai Sonuç: 3 Tablo

Customers1(name, addr)  ·  Customers3(name, phones)  ·  Customers4(name, drinksLiked)

// 09

3NF vs BCNF vs 4NF — Tam Karşılaştırma

Normal form hiyerarşisi: 3NF → BCNF → 4NF

3NF — Üçüncü Normal Form

İhlal: X→A; X süper anahtar DEĞİL VE A asal (prime) nitelik DEĞİL

Garantiler: Kayıpsız birleşim ✅   Bağımlılık korunumu ✅

En Zayıf · Bağımlılık koruma kritikse kullan

BCNF — Boyce-Codd Normal Form

İhlal: X→Y; X süper anahtar DEĞİL (istisna yok, 3NF'den daha katı)

Garantiler: Kayıpsız birleşim ✅   Bağımlılık korunumu ❌ (her zaman değil)

Orta Güç · MVD yok, bağımlılık koruma gerekmiyorsa kullan

4NF — Dördüncü Normal Form

İhlal: X→→Y (MVD); X süper anahtar DEĞİL (önemsiz olmayan MVD)

Garantiler: Kayıpsız birleşim ✅   Bağımlılık korunumu ❌ (her zaman değil)

En Güçlü ⭐ · Bağımsız çok değerli gerçekler varsa kullan

3NFBCNF4NF
Kontrol Ettiği FD'ler (asal nitelik istisnasıyla) FD'ler (katı, istisnasız) FD'ler + MVD'ler
İhlal Kuralı X→A: X süper anahtar değil VE A asal değil X→Y: X süper anahtar değil X→→Y: X süper anahtar değil
Kayıpsız Birleşim ✅ Her Zaman ✅ Her Zaman ✅ Her Zaman
Bağımlılık Korunumu ✅ Her Zaman ❌ Her zaman değil ❌ Her zaman değil
Kaldırılan Tekrar ⚠️ Bir kısmı kalır ✅ FD tekrarı gider ✅ FD + MVD gider
Güç En Zayıf Daha Güçlü En Güçlü ⭐
Ne Zaman Kullan Bağımlılık koruma zorunluysa MVD yok, dep. koruma gerekmiyorsa Bağımsız çok değerli gerçekler varsa
// 10

Özet — Temel Noktalar

Tüm konuların hızlı tekrarı

1

MVD (X →→ Y): X, Y değerlerinin bir kümesini belirler

Y, X verildiğinde diğer tüm niteliklerden bağımsızdır. Bu "bağımsız gerçekler" ayrı tablolarda tutulmalıdır.

2

Tamamlayıcılık: X →→ Y ise, X →→ Z de geçerlidir

Z = kalan tüm nitelikler (R − X − Y). Bağımsızlık simetriktir — bir yönde geçerliyse diğer yönde de geçerlidir.

3

Bölme Yasak: MVD'nin hiçbir tarafını bölemezsiniz

FD'lerin aksine, X →→ Y,Z ifadesinden X →→ Y ve X →→ Z türetilemez (aksi ayrıca ispat edilmedikçe).

4

4NF Kuralı: Her önemsiz olmayan MVD'de X süper anahtar olmalı

X →→ Y ve X süper anahtar değilse → 4NF ihlali → ayrıştır!

5

4NF > BCNF: 4NF'deysen BCNF'desindir, ama tersi her zaman doğru değil

4NF en güçlü normal formdur. Her 4NF ilişkisi otomatik olarak hem BCNF'de hem de 3NF'dedir.

6

Ayrıştırma: BCNF ile aynı teknik, MVD tetikler

İhlal eden MVD X →→ Y için: R1 = (X, Y) ve R2 = (X, R−Y) oluştur. Tüm alt ilişkiler 4NF'de olana kadar tekrarla.

⚡ Hızlı Referans: 4NF İhlalini Nasıl Tespit Ederim?


1. Tabloda bağımsız çok değerli gerçekler var mı? (örn. hobiler VE üniversiteler)

2. X →→ Y (önemsiz olmayan) var mı?

3. X süper anahtar mı değil mi?

→ Üçü de evet ise: 4NF ihlali var, ayrıştır!