Bu örneği anlayabilmek için bilinmesi gerekenler:
Transkript
Bu örneği anlayabilmek için bilinmesi gerekenler:
Bu örneği anlayabilmek için bilinmesi gerekenler: 1. Birincil Anahtar: Tablodaki her alana erişimi sağlayabilen alandır.Her satır için özeldir. Satırlarda tekrar etmez. Örneğin musteri(uyeno ,isim,adres) tablosunda birincil anahtar uye no’dur. Uyeno’su bilinen bir müşterinin isim ve adresine erişilebilir. 2. Bileşik Anahtar: Bir tablodaki birincil anahtar, birden fazla alandan oluşuyor ise bu anahtar bileşik anahtardır. Örneğin bu tabloda bölümno ve dersno birlikte birincil anahtardır. Neden? Çünkü bölümno her satır için tek değildir, başka satırlarda tekrar ediyor. Aynı şekilde DersNo ‘da. 3. Aday Anahtar: Birincil Anahtar dışındaki ve ya birincil anahtarla birlikte tablonun alanlarına erişimi sağlayan alanlara denir. Aday Anahtar Birincil Anahtar Aşağıdaki tabloda birincil anahtar ogr_no’dur. Fakat (ogr_no,ogr_name) ile de tüm tablodaki alanlara erişilebilir. Dolayısıyla (ogr_no,ogr_name) bir aday anahtardır. Ya da (kimlik_no,bolum) ile de tablonun diğer alanlarına erişilebilir. Dolayısıyla (kimlik_no,bolum) ‘de bir aday anahtardır. 4. Fonksiyonel Bağımlılık: Bir tablo içindeki erişim ilişkilerinin gösterilmesidir. Örneğin, bir tabloda öğrencinin numarasını bilerek öğrencinin adına ulaşabiliryor isek, Ögrencino ogrenci_adi şeklinde bağımlılık belirtilir. 5. Kısmı bağımlılık Bileşik anahtara sahip olan tablolarda, eğer bileşik anahtarın bir parçası tablonun diğer alanlarından bazılarına erişimi sağlayabiliyor ise Bu tabloda kısmı bağımlılık vardır. 6. Dolaylı Bağımlılık Eğer birincil anahtar dışındaki bir alan tablodaki başka bir alana erişim sağlıyor ise, bu tabloda dolaylı bağımlılık vardır. Aşağıdaki tabloda, Danışmanı bilirsek oda numarasını da bilebiliyoruz ve danışman alanı birincil anahtar değil. Dolayısıyla dolaylı bağımlılık vardır. 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? Tablolarda kısmi bağımlılık var mı diye bakmalıyız. Kısmi bağımlılık da bileşik anahtarı olan tablolarda görülebilir. 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. Yani tablolarda kısmi bağımlılık yoktur. (Eğer fonksiyonel bağımlılıklar arasında uyeno serino veya uyeno tarih verilseydi kira tablosunda kısmi bağımlılık var olacaktı. Dolayısıyla 2.NF uygun olmayacaktı. Tabloyu bölmek zorunda olacaktık. VEYA kira tablosu aşağıdaki şekilde olsaydı kira(xxx,uyeno,serino,tarih) ve fonksiyonel bağımlılıkta serino --> xxx olsaydı NF2 olmazdı. Tabloyu ikiye ayırmamız gerekecekti yenitablo(serino,xxx) ve kira(uyeno,serino,tarih) şeklinde.) 3NF? Tablolarda dolaylı bağımlılık var mı diye bakarız. 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çmek için dolaylı bağımlılığı kaldırmak gereklidir: 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 diye bakarız. (Her birincil anahtar bir aday anahtardır. Yani Aday Anahtarlar kümesi birincil anahtarlar kümesini kapsar.) film(baslik,serino) fonksiyonel bağımlılıklar: baslik->yonetmen,serino serino->baslik film tablosu BCNF’dir. (birincil anahtar) aday anahtar aday anahtar serino_yonetmen (serino,yonetmen) fonksiyonel bağımlılıklar: serino->yonetmen (birincil anahtar)aday anahtar serino_yonetmen tablosu BCNF’dir. musteri(isim,adres,uyeno) fonksiyonel bağımlılıklar: isim,adres -> uyeno aday anahtar uyeno -> isim,adres (birincil anahtar)aday anahtar musteri tablosu BCNF’dir. kira(uyeno,serino,tarih) fonksiyonel bağımlılıklar: serino,tarih -> uyeno (birincil anahtar)aday anahtar kira tablosu BCNF’dir.
Benzer belgeler
Bu örneği anlayabilmek için bilinmesi gerekenler: 1. Kısmı bağımlılık
Bu örneği anlayabilmek için bilinmesi gerekenler: