Bu örneği anlayabilmek için bilinmesi gerekenler:
1.
2.
3.
4.
Kısmı bağımlılık
Dolaylı Bağımlılık
Bileşik Anahtar
Aday Anahtar
Normalizasyon Örnek
Senaryo: Bir film arşivimiz var ve bu filmleri kiralıyoruz. Her film için başlık,
yönetmen ve seri numarası vardır. Müşterilerin ismi, adresi ve üye
numarası vardır. Her filmden yalnız bir kopya vardır.
Aşağıdaki tablolar veriliyor. Altı çizgili olan alanlar birincil anahtarlardır.
film(baslik,yonetmen,serino)
musteri(uyeno ,isim,adres)
kira(uyeno,serino,tarih)
Bu tablolar üzerindeki fonksiyonel bağımlılıklar da şu şekilde verilmiştir:
baslik->yonetmen,serino
serino->baslik
serino->yonetmen
isim,adres -> uyeno
uyeno -> isim,adres
serino,tarih -> uyeno
 Hangi Normal formdadır?
Tekrar eden bir sütun yoktur. Dolayısıyla 1NF’dir.
( Eğer bir tablo şu şekilde olsaydı NF1’e uygun olmazdı.
film(baslik,yonetmen1,yonetmen2,serino)
)
 2NF?
Kira tablosunda birleşik anahtar vardır – (serino, tarih ) . Detaylı
inceleyelim:
uyeno sadece serino veya sadece tarih ile buluna bilir mi? Yani
uyeno  serino veya uyeno tarih midir?
HAYIR. Dolayısıyla 2NF’dir.
(Eğer kira tablosu aşağıdaki şekilde olsaydı
kira(xxx,uyeno,serino,tarih)
ve fonksiyonel bağımlılıkta
olsaydı NF2 olmazdı. Tabloyu ikiye ayırmamız
gerekecekti yenitablo(serino,xxx) ve kira(uyeno,serino,tarih) şeklinde.)
serino --> xxx
 3NF?
Serino bilindiğinde yonetmen bilinebiliyor yani (serino->yonetmen )
dolayısıyla film tablosunda dolaylı bağımlılık vardır. 3NF değildir.
2NF ‘den 3NF’ye geçiş:
Tabloları yeniden düzenleyelim:
film(baslik,yonetmen,serino)tablosu ikiye bölünür:
film(baslik,serino)
serino_yonetmen(serino,yonetmen)
Dolayısıyla son durum şu şekilde olur:
film(baslik,serino)
serino_yonetmen (serino,yonetmen)
musteri(isim,adres,uyeno)
kira(uyeno,serino,tarih)
 BCNF? Her fonksiyonel bağımlılık bir aday anahtar mıdır?
film(baslik,serino)
fonksiyonel bağımlılıklar:
baslik->yonetmen,serino
serino->baslik
film tablosu BCNF’dir.
aday anahtar
aday anahtar
serino_yonetmen (serino,yonetmen)
fonksiyonel bağımlılıklar:
serino->yonetmen
aday anahtar
serino_yonetmen tablosu BCNF’dir.
musteri(isim,adres,uyeno)
fonksiyonel bağımlılıklar:
isim,adres -> uyeno
aday anahtar
uyeno -> isim,adres
aday anahtar
musteri tablosu BCNF’dir
kira(uyeno,serino,tarih)
fonksiyonel bağımlılıklar:
serino,tarih -> uyeno
aday anahtar
kira tablosu BCNF’dir.
Download

Bu örneği anlayabilmek için bilinmesi gerekenler: 1. Kısmı bağımlılık