Closure · Anahtarlar · BCNF · 3NF · 4NF Ayrıştırması — Soru & Çözümler
İlişki: R(A, B, C, D, E)
FD'ler: A → B · BC → D · D → E
Yalnızca A'dan başlayarak hangi niteliklere ulaşabilirsiniz?
A ve C'den başlayarak hangi niteliklere ulaşabilirsiniz?
Başlangıç kümesiyle başla. Her adımda: eğer bir FD'nin sol tarafı tamamıyla kapanışın içindeyse, sağ tarafı kapanışa ekle. Değişim olmayıncaya kadar tekrarla.
| Adım | Mevcut Kapanış | Uygulanan FD | Sonuç |
|---|---|---|---|
| 1 | {A} |
Başlangıç | — |
| 2 | {A} |
A → B ✅ (A kapanışta var) |
{A, B} |
| 3 | {A, B} |
BC → D ❌ (C kapanışta yok!) |
Değişim yok |
| 4 | {A, B} |
D → E ❌ (D kapanışta yok!) |
Değişim yok |
| 5 | {A, B} |
Uygulanabilir FD kalmadı | DUR |
{A}⁺ = {A, B}
C kapanışta olmadığı halde BC → D uygulamak. Sol tarafın tamamı kapanışta bulunmak zorunda!
| Adım | Mevcut Kapanış | Uygulanan FD | Sonuç |
|---|---|---|---|
| 1 | {A, C} |
Başlangıç | — |
| 2 | {A, C} |
A → B ✅ (A kapanışta) |
{A, B, C} |
| 3 | {A, B, C} |
BC → D ✅ (B ve C her ikisi de kapanışta!) |
{A, B, C, D} |
| 4 | {A, B, C, D} |
D → E ✅ (D kapanışta) |
{A, B, C, D, E} |
| 5 | {A, B, C, D, E} |
Tüm nitelikler kapsandı | DUR |
{A, C}⁺ = {A, B, C, D, E} → Tüm nitelikleri kapsıyor!
Bir kümenin kapanışı tüm R niteliklerini kapsıyorsa, o küme bir süper anahtardır. {A,C}⁺ = {A,B,C,D,E} olduğundan, {A,C} süper anahtardır!
İlişki: R(A, B, C, D, E)
FD'ler: A → B · BC → D · D → E
R ilişkisinin tüm anahtarlarını bulun. Kapanış hesaplayarak cevabınızı gerekçelendirin.
İpucu: Önce tekli nitelikleri test edin, sonra kombinasyonları deneyin.
Bir anahtar şu iki koşulu sağlamalı: (1) Tüm nitelikleri fonksiyonel olarak belirleyebilmeli, (2) Minimal olmalı — hiçbir alt kümesi de anahtar olmamalı.
| Küme | Kapanış | Tüm Nitelikleri Kapsıyor mu? |
|---|---|---|
{A} | {A, B} | ❌ Hayır |
{B} | {B} | ❌ Hayır |
{C} | {C} | ❌ Hayır |
{D} | {D, E} | ❌ Hayır |
{E} | {E} | ❌ Hayır |
Hiçbir tekli nitelik anahtar değil. İkili kombinasyonlara geçiyoruz.
| Küme | Kapanış | Tüm Nitelikleri Kapsıyor mu? |
|---|---|---|
{A, C} |
{A, B, C, D, E} |
✅ EVET — Süper Anahtar! |
{A, D} |
{A, B, D, E} |
❌ Hayır (C eksik) |
{B, C} |
{B, C, D, E} |
❌ Hayır (A eksik) |
{C, D} |
{C, D, E} |
❌ Hayır (A, B eksik) |
Bir kümenin minimal anahtar olması için, hiçbir gerçek alt kümesi süper anahtar olmamalı:
{A}⁺ = {A, B} ≠ tüm nitelikler → Hayır
{C}⁺ = {C} ≠ tüm nitelikler → Hayır
R'nin tek anahtarı: {A, C}
Alt kümelerin hiçbiri süper anahtar değil → {A,C} minimaldir → gerçek anahtar.
A olmadan BC üzerinden D'ye gidilebilir ama A'yı elde etmek mümkün değildir. C olmadan A üzerinden yalnızca B'ye ulaşılır. İkisi birlikte tüm zinciri başlatır: A→B, BC→D, D→E.
İlişki: R(A, B, C, D, E)
FD'ler: A → B · BC → D · D → E
Anahtar: {A, C}
R, BCNF'de mi? Değilse tüm ihlalleri belirleyin.
R, 3NF'de mi? Değilse tüm ihlalleri belirleyin.
R'nin asal (prime) nitelikleri nelerdir?
En az bir anahtar içinde yer alan nitelikler "asal" (prime), diğerleri "asal olmayan" (non-prime) olarak adlandırılır.
Her önemsiz olmayan FD X → Y için X, bir süper anahtar olmalıdır. İstisna yoktur.
| FD | Sol Taraf Kapanışı | Süper Anahtar mı? | BCNF İhlali? |
|---|---|---|---|
A → B |
{A}⁺ = {A,B} |
❌ Hayır | ⚠️ İHLAL |
BC → D |
{BC}⁺ = {B,C,D,E} |
❌ Hayır | ⚠️ İHLAL |
D → E |
{D}⁺ = {D,E} |
❌ Hayır | ⚠️ İHLAL |
R, BCNF'de DEĞİLDİR — 3 FD'nin tamamı ihlal oluşturur.
X → A ifadesi 3NF'yi ihlal eder ancak ve ancak: X süper anahtar DEĞİL VE A asal nitelik DEĞİL koşullarının ikisi birlikte sağlanıyorsa.
| FD | Sol Taraf Süper Anahtar? | Sağ Taraf Asal mı? | 3NF İhlali? |
|---|---|---|---|
A → B |
❌ Hayır | B asal değil ❌ | ⚠️ İHLAL |
BC → D |
❌ Hayır | D asal değil ❌ | ⚠️ İHLAL |
D → E |
❌ Hayır | E asal değil ❌ | ⚠️ İHLAL |
R, 3NF'de de DEĞİLDİR — 3 FD'nin tamamı ihlal oluşturur.
R, 3NF'de olmadığı için kesinlikle BCNF'de ve 4NF'de de değildir. Normal form hiyerarşisi: 4NF ⊂ BCNF ⊂ 3NF. Zayıf olanı sağlayamayan, güçlü olanı hiç sağlayamaz.
İlişki: R(A, B, C, D, E)
FD'ler: A → B · BC → D · D → E
Anahtar: {A, C}
R'yi tümüyle BCNF'de olan ilişkiler kümesine ayrıştırın. BCNF ayrıştırma algoritmasını kullanın. Nihai ilişkileri, anahtarlarını ve varsa kaybedilen FD'leri belirtin.
1. İhlal eden bir FD bul: X → Y (X süper anahtar değil)
2. X⁺ hesapla
3. R1 = X⁺ (tüm kapanış) · R2 = R − (X⁺ − X) yani X + X dışındaki nitelikler
4. Tüm ilişkiler BCNF'de olana kadar tekrarla
| FD | Süper Anahtar? | BCNF İhlali? |
|---|---|---|
A → B |
{A}⁺ = {A,B} ≠ tüm nitelikler ❌ |
⚠️ EVET — bunu seç! |
BC → D |
{BC}⁺ = {B,C,D,E} ≠ tüm nitelikler ❌ |
⚠️ EVET |
D → E |
{D}⁺ = {D,E} ≠ tüm nitelikler ❌ |
⚠️ EVET |
A → B ihlalini seçiyoruz. Herhangi birini seçebilirsiniz — farklı seçimler farklı ama eşdeğer ayrıştırmalara yol açar.
R1 = X⁺ olarak tanımlandığında, X her şeyi X⁺ içinde belirler → X, R1'in süper anahtarıdır. Orijinal R'de X'in hiçbir alt kümesi süper anahtar olmadığından, X aynı zamanda minimaldir → R1'in anahtarı olur.
R1'de yalnızca A → B uygulanabilir. {A}⁺ = {A,B} = R1'in tamamı → A anahtardır → İhlal yok → R1 BCNF'de. DUR.
Bir alt ilişkiye hangi FD'lerin geçerli olduğunu bulmak için: yalnızca sol ve sağ tarafları tamamen o ilişkinin nitelikleri içinde kalan FD'ler alınır.
| Orijinal FD | R2'ye Projekte Edilir mi? | Sebep |
|---|---|---|
A → B | ❌ Hayır | B, R2'de yok |
BC → D | ❌ Hayır | B, R2'de yok |
D → E | ✅ Evet | D ve E her ikisi de R2'de var |
| Test Kümesi | R2 İçindeki Kapanış | R2'yi Kapsıyor mu? |
|---|---|---|
{A} | {A} | ❌ Hayır |
{C} | {C} | ❌ Hayır |
{D} | {D,E} | ❌ Hayır |
{A,C} | {A,C} (D→E için D lazım, yok) | ❌ Hayır |
{A,C,D} | {A,C,D} → D→E → {A,C,D,E} | ✅ EVET — Anahtar! |
{D}⁺ = {D,E} ≠ R2'nin tüm nitelikleri (A,C,D,E). D süper anahtar değil → İhlal var → Ayrıştır!
| İlişki | Nitelikler | Anahtar | FD'ler | BCNF'de mi? |
|---|---|---|---|---|
| R1 | (A, B) | {A} | A → B |
✅ Evet |
| R3 | (D, E) | {D} | D → E |
✅ Evet |
| R4 | (A, C, D) | {A,C,D} | yok | ✅ Evet |
BC → D FD'si kayboldu! B, C ve D artık aynı tabloda birlikte bulunmuyor. Bu BCNF ayrıştırmasında zaman zaman bağımlılık korunumunun (dependency preservation) feda edildiği anlamına gelir. 3NF her zaman bağımlılık korur, BCNF her zaman korumaz.
İlişki: R(student, course, hobby)
MVD'ler: student →→ course · student →→ hobby
Anahtar: {student, course, hobby}
R, 4NF'de mi? İhlalleri belirleyin.
R'yi 4NF ilişkilerine ayrıştırın.
Bu ayrıştırma neden kayıpsızdır (lossless)?
X →→ Y, 4NF'yi ihlal eder ancak ve ancak: X süper anahtar DEĞİL ve MVD önemsiz (trivial) değilse.
Önemsiz MVD: Y ⊆ X veya X ∪ Y = R tüm nitelikleri.
| MVD | Sol Taraf Süper Anahtar mı? | Önemsiz mi? | 4NF İhlali? |
|---|---|---|---|
student →→ course |
{student} süper anahtar değil ❌ |
course ⊄ {student} & birlikte hepsi yok → Önemsiz Değil | ⚠️ İHLAL |
student →→ hobby |
{student} süper anahtar değil ❌ |
hobby ⊄ {student} & birlikte hepsi yok → Önemsiz Değil | ⚠️ İHLAL |
R, 4NF'de DEĞİLDİR — Her iki MVD da ihlal oluşturur.
Bir öğrencinin 3 dersi ve 2 hobisi varsa tablo 3×2 = 6 satır gerektirir. Oysa dersler ve hobiler tamamen bağımsızdır — birbirini etkilemez. Bu gereksiz kombinasyon tekrarı MVD kaynaklıdır.
student →→ course ihlalini kullanarak ayrıştır:
R1 = (student, course) · R2 = (student, hobby)
| student | course |
|---|---|
| Ali | Matematik |
| Ali | Fizik |
| Ayşe | Tarih |
| student | hobby |
|---|---|
| Ali | Satranç |
| Ali | Yüzme |
| Ayşe | Resim |
| İlişki | Nitelikler | Anahtar | 4NF'de mi? |
|---|---|---|---|
| R1 | (student, course) | {student, course} | ✅ Evet |
| R2 | (student, hobby) | {student, hobby} | ✅ Evet |
R1 ve R2'nin ortak niteliği student'tir. student →→ course MVD'si, R1 ⋈ R2 natural join işleminin orijinal R'yi tam olarak ürettiğini garanti eder — sahte (spurious) demet oluşmaz.
MVD'nin anlamı şudur: her student değeri için, course ve hobby kümeleri birbirinden tamamen bağımsızdır. Bu bağımsızlık, ayrıştırıldıktan sonra join ile yeniden birleştirildiğinde bilgi kaybı olmadığını garanti eder. Kayıpsız birleşim, doğal olarak MVD tanımından kaynaklanır.
Örnek: Ali'nin 2 dersi ve 2 hobisi varsa orijinal tablo 4 satır gerektirirdi. Ayrıştırma sonrası: R1'de 2 satır + R2'de 2 satır = toplam 4 satır ama tekrar yok, her gerçek bir kez saklanıyor.