MVD · 4NF · Ayrıştırma · Bağımsız Gerçeklerin Ayrılması
BCNF FD tabanlı tekrarı çözer — ama bazı ilişkiler hâlâ sorunludur
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.
Ç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!
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.
Apply(SSN, cName, hobby)BCNF'de olmasına rağmen ciddi tekrar sorunları var
Hayır. Hiçbir nitelik diğerini belirleyemez.
Tüm nitelikler. FD olmadığından {SSN, cName, hobby} tek anahtar.
Evet. Önemsiz olmayan FD yok → BCNF ihlali yok.
HAYIR! Bağımsız gerçeklerden kaynaklanan devasa tekrar!
Öğrenci 123'ün 2 üniversitesi (MIT, Harvard) ve 2 hobisi (Tenis, Satranç) varsa → sadece bu kombinasyonlar için 4 satır gerekir!
| SSN | cName (Üniversite) | hobby (Hobi) | Açıklama |
|---|---|---|---|
| 123 | MIT | Tenis | ↑ Tekrar başlıyor |
| 123 | MIT | Satranç | |
| 123 | Harvard | Tenis | |
| 123 | Harvard | Satranç | ↓ 4 satır = 2×2 kombinasyon |
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.
X →→ Y okunuşu: "X, Y'yi çok-belirler"
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.
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 (→): 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ğerler | Aynı kombinasyonlar |
| Örnek | Her eğitmen için bölüm binası tekrarlanır | Her telefon, beğenilen her içecekle eşleştirilir |
| Çözen NF | BCNF | 4NF |
Customers(name, addr, phones, drinksLiked)
• 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
Sue'nun 2 telefonu (111, 222) ve 2 sevdiği içeceği (Coke, IceTea) varsa → her telefon × her içecek → 4 satır!
| name | addr | phones | drinksLiked |
|---|---|---|---|
| Sue | London | 111 | Coke |
| Sue | London | 111 | IceTea |
| Sue | London | 222 | Coke |
| Sue | London | 222 | IceTea |
İki demet name üzerinde hemfikirse, phones değerleri yer değiştirebilir ve oluşan yeni demetler de tabloda bulunmak zorundadır:
| name | addr | phones | drinksLiked | Durum |
|---|---|---|---|---|
| Sue | a | p1 | d1 | ← orijinal |
| Sue | a | p2 | d2 | ← orijinal |
| Sue | a | p2 ↕ | d1 | ← bulunmak zorunda! |
| Sue | a | p1 ↕ | d2 | ← bulunmak zorunda! |
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.
Çok değerli bağımlılıkları yöneten üç önemli kural
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
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
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.
FD'lerde X → Y,Z ifadesini X → Y ve X → Z olarak bölebilirsiniz. MVD'lerde bu yasaktır!
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!)
| name | areaCode | phone | drinksLiked | manf |
|---|---|---|---|---|
| Sue | 650 | 555-1111 | Coke | C.C. |
| Sue | 650 | 555-1111 | IceTea | Lipton |
| Sue | 415 | 555-9999 | Coke | C.C. |
| Sue | 415 | 555-9999 | IceTea | Lipton |
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ı!
Dördüncü Normal Form, MVD'leri ele almak için BCNF'yi genişletir
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.
(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 tanımı yalnızca FD'lere dayanır — MVD'lere değil.
X'in tüm nitelikleri fonksiyonel olarak belirleyebilmesi gerekir.
| BCNF | 4NF | |
|---|---|---|
| Dikkate Aldığı | Yalnızca FD'ler | FD'ler + MVD'ler |
| İhlal Koşulu | X→Y, X süper anahtar değil | X→→Y, X süper anahtar değil |
| Güç | Daha Zayıf | Daha Güçlü ⭐ |
| 4NF → BCNF? | — | ✅ Her Zaman! |
4NF'deki her ilişki otomatik olarak BCNF'dedir de. Ancak BCNF'deki bir ilişki her zaman 4NF'de olmayabilir (MVD ihlalleri olabilir).
BCNF ile aynı teknik — ama MVD ihlalleri tetikler
Anahtarlar yalnızca FD'lere dayanır — MVD'ler anahtarları etkilemez.
X süper anahtar değildir, Y önemsiz (trivial) değildir.
R1 = (X, Y) ve R2 = (R − (Y − X)) yani X + Y olmayan tüm nitelikler
Her alt ilişkide hangi bağımlılıkların geçerli olduğunu belirle.
Her alt ilişkiyi yeni ihlaller açısından kontrol et ve gerekirse yeniden ayrıştır.
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.
Adım adım 4NF ayrıştırması
İ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!
FD yok, MVD yok → 4NF'de
| SSN | cName |
|---|---|
| 123 | MIT |
| 123 | Harvard |
| 123 | Stanford |
3 satır — her üniversite için bir satır ✅
FD yok, MVD yok → 4NF'de
| SSN | hobby |
|---|---|
| 123 | Tenis |
| 123 | Satranç |
2 satır — her hobi için bir satır ✅
Önce: 3 üniversite × 2 hobi = 6 satır → Sonra: 3 + 2 = 5 satır. Tekrar yok!
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!
Tek bağımlılık: name → addr
name anahtardır → 4NF sağlandı!
name →→ phones ve name →→ drinksLiked hâlâ 4NF'yi ihlal ediyor!
İhlal yok → 4NF!
İhlal yok → 4NF!
Customers1(name, addr) · Customers3(name, phones) · Customers4(name, drinksLiked)
Normal form hiyerarşisi: 3NF → BCNF → 4NF
İ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
İ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
İ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
| 3NF | BCNF | 4NF | |
|---|---|---|---|
| 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 |
Tüm konuların hızlı tekrarı
Y, X verildiğinde diğer tüm niteliklerden bağımsızdır. Bu "bağımsız gerçekler" ayrı tablolarda tutulmalıdır.
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.
FD'lerin aksine, X →→ Y,Z ifadesinden X →→ Y ve X →→ Z türetilemez (aksi ayrıca ispat edilmedikçe).
X →→ Y ve X süper anahtar değilse → 4NF ihlali → ayrıştır!
4NF en güçlü normal formdur. Her 4NF ilişkisi otomatik olarak hem BCNF'de hem de 3NF'dedir.
İ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.
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!