Sıra | DOSYA ADI | Format | Bağlantı |
---|---|---|---|
01. | Veri Tabanı Yönetimi | ppt | Sunumu İndir |
Transkript
Normalleştirme Veri Tabanı Yönetimi Ders 6
• İlişkisel veri tabanı tasarlanması aşamasında verinin tekrarlanmasını, kaybını veya yetersizliğini önlemek için normalleştirme (normalization) işlemi uygulanır. • Normalleştirme, aynı zamanda “ilk taslak” veri tabanı tasarımının üzerinde revizyonlar yapmanın yolu, taslağı son haline yaklaştırmanın yöntemlerden birisidir. • Normalleştirmenin altyapısı da, ilişkisel modelin altyapısı gibi matematikseldir. Temel alınan kavram, işlevsel bağımlılık (functional dependency) (bak slayt 6) denilen bir kavramdır. Veri Modelini Normalleştirmek
• Sadece bu öğe bile normalleştirme ile uğraşmak için yeterli bir sebeptir. • Eğer veri gereksiz yere tekrarlanıyorsa, bu değişik kopyalar, kopyalardan habersiz olan uygulama kodları yüzünden bir süre sonra birbirinden farklı değerleri taşımaya başlayabilirler. Bu, doğruluk ve tutarlılık açısından çok kötü bir sonuçtur. • Bu gibi durumlarda ilişkisel veri tabanı yönetim sisteminin otomatik bütünlük (automatic integrity) mekanizmaları bile işe yaramaz. Düzeltmenin, uygulama seviyesinde yapılması gerekir. Fakat bu da uygulama programlarını daha karmaşıklaştıracak, dolayısıyla bakımını zorlaştıracaktır. Normalleştirmenin Amaçları - 1 Veri bütünlüğünü sağlamak
• Normalleştirme, genelde bilinen ve takip edilen “ilişkisel model, verinin içeriğine göre kurulmalı, uygulamaya göre değil” kavramını bir adım daha öne alır. • Bu sayede veri modeli, üzerinde onu kullanan uygulama değişse bile daha tutarlı, sabit ve değişmez olarak kalacaktır. • Uygulama programının gereksinimlerinin veri tabanının mantıksal modeli üzerinde herhangi bir etkisi olmamalıdır. • Uygulama, mantıksal model üzerinde değil, fiziksel model üzerinde etki yapar. Normalleştirmenin Amaçları - 2 Uygulamadan bağımsızlık
• Saklama ihtiyaçlarını en aza indirgemek ve arama süresini azaltmak. • Yabancı anahtarların haricinde, tamamıyla normalleştirilmiş bir veri tabanı gereksiz (kopyalanmış) veri miktarını en aza indirecektir. • Kopyalanma miktarı azaldığı için, saklama yerine olan ihtiyaç ta azalır. Bu sayede, veri tabanı motorunun arama süresi azalacaktır. Normalleştirmenin Amaçları - 3 Performansı arttırmak
• R bir ilişki şeması, X ve Y nitelik kümeleri ise R’nin alt kümeleri olsun (X R, Y R). • Eğer X nitelik kümesinin değerleri Y nitelik kümesinin değerlerini belirliyorsa (X’in her bir değeri Y’nin bir değerine karşılık geliyorsa); “Y niteliği X niteliğine işlevsel bağımlıdır” denir ve “X Y” şeklinde gösterilir. • X’ten bir nitelik çıkarıldığı halde bu bağımlılık hâlâ geçerli ise kısmi bağımlılık (partial dependency) söz konusudur. İşlevsel Bağımlılık
• DAĞITIM (müşteri_no, şehir_kodu, şehir_adı, parti_no, miktar) 1. müşteri_no şehir_kodu, şehir_adı 2. (müşteri_no, parti_no) miktar 3. şehir_adı şehir_kodu (geçişli bağımlılık) • İlk ikisi anahtara göre bağımlı, üçüncüsü geçişli bağımlı (transitive dependent). • Bir müşteriye birden fazla parti ürün gönderilebildiği için ikincisinde iki nitelik bir anahtar oluşturuyor. İşlevsel Bağımlılık
Normalleştirme Aşamaları • Birinci Normal Form • İkinci Normal Form • Üçüncü Normal Form • Boyce-Codd Normal Formu • Dördüncü Normal Form • …
Normal Olmayan Form • İlişkisel veri tabanı modelinin temel kuralına göre bütün niteliklerin aldığı değerler atomik (tek ve basit) olmalıdır. • Aşağıdaki DAĞITIM tablosu bu kurala uymamaktadır, bu yüzden normal değildir. müşteri_no şehir_kodu şehir_adı parti_no miktar 1 34 İstanbul 1,2,3,4,6 300,200,400,200,100 2 6 Ankara 1,2 300,400 3 6 Ankara 2 200 4 34 İstanbul 2,4,5 200,300,400
Birinci Normal Form Uygulandığında: müşteri_no şehir_kodu şehir_adı parti_no miktar 1 34 İstanbul 1 300 1 34 İstanbul 2 200 1 34 İstanbul 3 400 1 34 İstanbul 4 200 1 34 İstanbul 6 100 2 6 Ankara 1 300 2 6 Ankara 2 400 3 6 Ankara 2 200 4 34 İstanbul 2 200 4 34 İstanbul 4 300 4 34 İstanbul 5 400
• Birinci normal formdaki bir tablo bazı alanlarda tekrarlı verilere sahiptir. Örneğimizde şehir_kodu ve şehir_adı alanlarında her müşteri için tekrarlı veriler vardır. • Bu tekrarlar ekleme, silme ve güncelleme işlemlerinde sorunlara neden olacaktır. Birinci Normal Formun Sorunları
• Başka bir müşterinin bilgilerinin (müşteri_no, şehir_kodu, şehir_adı) girilmesi için mutlaka o müşteriye bir dağıtım işleminin yapılması (parti_no ve miktar değerlerinin girilmiş olması) gerekiyor. Satır Ekleme Sorunu müşteri_no şehir_kodu şehir_adı parti_no miktar 1 34 İstanbul 1 300 … … … … … 4 34 İstanbul 5 400 5 35 İzmir
• Bir müşteriye tek bir dağıtım yapıldıysa (örn. 3 no’lu müşteri), o dağıtım işlemi iptal edildiğinde, sadece parti_no ve miktarı değil, o dağıtımın yapıldığı müşteri hakkındaki diğer bilgiler de (müşteri_no, şehir_kodu, şehir_adı) yok olur. Satır Silme Sorunu müşteri_no şehir_kodu şehir_adı parti_no miktar 1 34 İstanbul 1 300 1 34 İstanbul 2 200 … … … … … 3 6 Ankara 2 200 … … … … …
• 1 numaralı müşteri Ankara’ya taşınırsa, bu müşteri ile ilgili tüm satırların güncelleştirilmesi gerekecektir. Eğer tablo çok büyük ise, sadece bir müşteri ile ilgili küçük bir değişiklik bile binlerce kaydın güncelleştirilmesini gerektirebilir. Güncelleme Sorunu müşteri_no şehir_kodu şehir_adı parti_no miktar 1 34 İstanbul 1 300 1 34 İstanbul 2 200 1 34 İstanbul 3 400 1 34 İstanbul 4 200 … … … … …
• Birinci normal formdaki sorunlardan (en azından güncelleme sorunundan) kurtulmak için nitelikler arasındaki işlevsel bağımlılıktan yararlanılarak birinci normal form (1NF) tablolarının birden fazla tabloya dönüştürülmesi sonucunda ikinci normal forma (2NF) ulaşılır. • İkinci normal formda, ilişkisel tablonun her bir anahtar olmayan sütunu birincil anahtara kısmi bağımlı değil, tam işlevsel bağımlı olmalıdır. İkinci Normal Form
• şehir_kodu ve şehir_adı nitelikleri (müşteri_no, parti_no) birleşik anahtarının sadece müşteri_no niteliği üzerinde tam işlevsel bağımlıdır. • O halde şehir_kodu ve şehir_adı nitelikleri müşteri_no ile beraber ayrı bir tablo oluşturmalıdır. – DAĞITIM(müşteri_no, şehir_kodu, şehir_adı, parti_no, miktar) – ŞEHİRLER(müşteri_no, şehir_kodu, şehir_adı) – MİKTARLAR(müşteri_no, parti_no, miktar) İkinci Normal Form
İkinci Normal Form Uygulandığında: müşteri_no parti_no miktar 1 1 300 1 2 200 1 3 400 1 4 200 1 6 100 2 1 300 2 2 400 3 2 200 4 2 200 4 4 300 4 5 400 müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul ŞEHİRLER MİKTARLAR
• Birinci normal formdaki güncelleme sorununu ikinci normal forma dönüştürme ile ortadan kaldırmış olsak ta, ikinci normal formda da ekleme ve silme sorunları olabilmektedir. İkinci Normal Formun Sorunları
• ŞEHİRLER tablosuna yeni bir müşteri kaydı girilmediği sürece yeni bir şehir tanımı yapılamaz. İzmir ilini tabloya dahil edebilmek için İzmir’de bulunan bir müşteriye ihtiyaç vardır. Satır Ekleme Sorunu müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul 35 İzmir
• Tablodan bir müşteri silindiğinde, eğer o şehirdeki tek müşteri ise, şehir_kodu ve şehir_adı bilgileri de yok olacaktır. Satır Silme Sorunu müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul 5 35 İzmir
• Birinci normal formdaki sorunlardan kurtulmak için nitelikler arasındaki kısmi işlevsel bağımlılıkları ortadan kaldırmıştık. • İkinci normal formdaki sorunlardan kurtulmak için de nitelikler arasındaki geçişli işlevsel bağımlılıkları ortadan kaldırmamız gerekir. • Örneğimizde “şehir_adı şehir_kodu” işlevsel bağımlılığının geçişli olduğunu belirtmiştik (bak slayt 7). Bir anahtara bağlı olmayan bu bağımlılığı ayrı bir tabloya dönüştürerek üçüncü normal formu (3NF) elde edebiliriz. Üçüncü Normal Form
Üçüncü Normal Form Uygulandığında: müşteri_no parti_no miktar 1 1 300 1 2 200 1 3 400 1 4 200 1 6 100 2 1 300 2 2 400 3 2 200 4 2 200 4 4 300 4 5 400 şehir_kodu şehir_adı 6 Ankara 34 İstanbul 35 İzmir ŞEHİRLER MİKTARLAR müşteri_no şehir_kodu 1 34 2 6 3 6 4 34 5 35 MÜŞTERİLER
Boyce-Codd Normal Formu ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN • Her belirleyicinin bir anahtar oluşu halidir. • Örnek olarak aşağıdaki ilişkiyi düşünelim: ÖĞRENCİ(ÖğrNo, Bölüm, Danışman) ÖĞRENCİ
Boyce-Codd Normal Formu ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN 1NF ? 2NF ? 3NF ? EVET (bütün niteliklerin aldığı değerler atomik) EVET (kısmi bağımlılık yok) EVET (geçişli bağımlılık yok)
Boyce-Codd Normal Formu ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN • Her üç normal formu da sağlıyor. Sorun var mı? • EVET 1. 456 numaralı öğrenci silinirse Biyoloji ve K.SÖNMEZ yok olacak 2. Bir öğrenci Matematik bölümüne kayıt olana kadar bu bölüm var olmayacak.
Çözüm: Belirleyicileri anahtar yap • Birincil Anahtar: – (ÖğrNo, Bölüm) • Aday Anahtar: – (ÖğrNo, Danışman) • İşlevsel Bağımlılıklar: – (ÖğrNo, Bölüm) Danışman – Danışman Bölüm ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN Belirleyiciler
Boyce-Codd Normal Formu (BCNF) Uygulandığında: ÖĞRENCİ ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN ÖĞRENCİ_DANIŞMAN ÖğrNo Danışman 123 A. ERCAN 123 M. AKINCI 456 K. SÖNMEZ 789 A. ERCAN 999 B. ÖZKAN DANIŞMAN_BÖLÜM Danışman Bölüm A. ERCAN Fizik M. AKINCI Kimya K. SÖNMEZ Biyoloji B. ÖZKAN Kimya
• NF: Normal olmayan form • 1NF: Bütün alan değerleri atomik ise R 1NF’de • 2NF: R 1NF’de ise ve anahtar olmayan tüm nitelikler anahtara tam bağımlı ise R 2NF’de • 3NF: R 2NF’de ise ve anahtar olmayan tüm nitelikler anahtara geçişsiz bağımlı ise R 3NF’de • BCNF: Her belirleyici bir aday anahtar ise R BCNF’de Belirleyici: Başka bir niteliğin tam işlevsel bağımlı olduğu nitelik Özet
• Bazı durumlarda BCNF’daki bir ilişkide de sorunlar görülebilmektedir. Örneğin; ÖĞRENCİ(ÖğrNo, Bölüm, Spor) Dördüncü Normal Form ÖĞRENCİ ÖğrNo Bölüm Spor 123 Fizik Kayak 123 Kimya Kayak 123 Fizik Tenis 123 Kimya Tenis 999 Kimya Tenis
• Burada bir öğrenci birden çok bölüme kayıt olabilmekte ve birden çok spor etkinliğine katılabilmektedir. • Bu nedenle ÖğrNo ile Bölüm ve ÖğrNo ile Spor arasındaki ilişkiler birer işlevsel bağımlılık değil çok- değerli bağımlılık (multivalued dependency) halindedir. Dördüncü Normal Form ÖĞRENCİ ÖğrNo Bölüm Spor 123 Fizik Kayak 123 Kimya Kayak 123 Fizik Tenis 123 Kimya Tenis 999 Kimya Tenis ÖğrNo Bölüm ÖğrNo Spor çok-değerli bağımlılık
• 123 numaralı öğrencinin bir bölüme daha kayıt olması yada bir spor etkinliğine daha katılması halinde iki kayıt daha ilave edilmelidir. • Bu gibi yineleme sorunlarını ortadan kaldırmak için ÖĞRENCİ ilişkisi ikiye ayrılırak dördüncü normal form (4NF) oluşturulur. Dördüncü Normal Form ÖĞRENCİ_BÖLÜM ÖğrNo Bölüm 123 Fizik 123 Kimya 999 Biyoloji ÖĞRENCİ_SPOR ÖğrNo Spor 123 Kayak 123 Tenis 999 Yüzme
Örnek 1 Ö.NO Ö.AD Ö.SOYA D DERS_N O DERS_ADI VIZ E FINAL H.N O H.AD H.SOYA D 200100 1 Ahmet Solmaz 202 Matematik 2 70 60 11 Özlem UÇAR 200100 1 Ahmet Solmaz 203 Fizik 2 80 40 11 Özlem UÇAR 200100 1 Ahmet Solmaz 204 Bilgisayar Mühendisliğine Giriş 2 60 45 3 Aydın CARUS 200100 1 Ahmet Solmaz 205 Atatürk İlkeleri ve İnkılap Tarihi 2 90 95 9 Zeki DURMUŞ 200100 1 Ahmet Solmaz 206 Türk Dili 2 70 75 12 Nebaha t YILDIZ 200100 5 Seyha n Gülmez 202 Matematik 2 80 95 11 Özlem UÇAR 200100 5 Seyha n Gülmez 203 Fizik 2 80 70 11 Özlem UÇAR 200100 5 Seyha n Gülmez 204 Bilgisayar Mühendisliğine Giriş 2 60 70 3 Aydın CARUS 200100 2 Selim Solmaz 702 Veri Tabanı Yönetimi 60 50 6 Altan MESUT 200100 3 Ahmet Vardar 702 Veri Tabanı Yönetimi 60 60 6 Altan MESUT 200100 4 Sezai Kantar 702 Veri Tabanı Yönetimi 65 55 6 Altan MESUT
• Verilen şema 1. Normal Formda (atomik değerler) – OKUL (Ö.No, Ö.Ad, Ö.Soyad, Ders_No, Ders_Adı, Vize, Final, H.No, H.Ad, H.Soyad) • 2. NF’ye geçerken kısmi bağımlılıklar ortadan kaldırılır – NOTLAR(Ö.No, Ders_No, Vize, Final) – ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad) – DERSLER(Ders_No, Ders_Adı, H.No, H.Ad, H.Soyad) • 3. NF’ye geçerken geçişli bağımlılıklar ortadan kaldırılır – NOTLAR(Ö.No, Ders_No, Vize, Final) – ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad) – DERSLER(Ders_No, Ders_Adı, H.No) – HOCALAR(H.No, H.Ad, H.Soyad)
Örnek 2 UrunNo UrunAd ParcaNo ParcaAd Miktar UreticiN o UreticiA d UreticiSeh ir UreticiTel 1002620 1 Pavilion DV2620ET 1 Intel Core 2 Duo T5450 1 100 HP Seattle 12345678 9 1002620 1 Pavilion DV2620ET 2 Kingston 512MB DDR2 2 100 HP Seattle 12345678 9 1002620 1 Pavilion DV2620ET 3 Samsung 160GB HDD 1 100 HP Seattle 12345678 9 1002620 1 Pavilion DV2620ET 4 Nvidia GeForce 8400M 1 100 HP Seattle 12345678 9 1002650 1 Pavilion DV2650ET 1 Intel Core 2 Duo T7500 1 100 HP Seattle 12345678 9 1002650 1 Pavilion DV2650ET 2 Kingston 1024MB DDR2 2 100 HP Seattle 12345678 9 1002650 1 Pavilion DV2650ET 3 Samsung 160GB HDD 1 100 HP Seattle 12345678 9 1002650 1 Pavilion DV2650ET 4 Nvidia GeForce 8400M 1 100 HP Seattle 12345678 9 1022001 2 Satellite A200-1N2 1 Intel Core 2 Duo T5250 1 102 Toshiba Tokyo 33567891 2 1022001 2 Satellite A200-1N2 2 Samsung 1024MB DDR2 2 102 Toshiba Tokyo 33567891 2 1022001 2 Satellite A200-1N2 3 Maxtor 120GB HDD 1 102 Toshiba Tokyo 33567891 2 1022001 2 Satellite A200-1N2 4 Intel GMA X3100 1 102 Toshiba Tokyo 33567891 2
• Verilen şema 1. Normal Formda (atomik değerler) – Urun_Parca (UrunNo, UrunAd, ParcaNo, ParcaAd, Miktar, UreticiNo, UreticiAd, UreticiSehir, UreticiTel) • 1NF → 2NF (kısmi bağımlılıklar giderilir) – Urun_Parca (UrunNo, ParcaNo, ParcaAd, Miktar) – Urunler (UrunNo, UrunAd, UreticiNo, UreticiAd, UreticiSehir, UreticiTel) • 2NF → 3NF (geçişli bağımlılıklar giderilir) – Urun_Parca (UrunNo, ParcaNo, ParcaAd, Miktar) – Urunler (UrunNo, UrunAd, UreticiNo) – Ureticiler (UreticiNo, UreticiAd, UreticiSehir, UreticiTel)
Örnek 3 SiparisN o Tarih UrunAd UrunN o Adet MusN o MusA d MusSoya d 1 23.11.200 7 Nokia 6300 57463 1 875 Ali Korkmaz 1 23.11.200 7 Kingston 2 GB USB 73624 2 875 Ali Korkmaz 2 23.11.200 7 Samsung D600 72352 1 932 Selin Atasoy 3 24.11.200 7 Nokia 5070 71224 1 123 Kamil Sönmez 4 24.11.200 7 Philips DVP 5160/12 90876 1 452 Metin Kaplan 5 25.11.200 7 Samsung Digimax S850 98123 1 786 Kemal Durukan 6 25.11.200 7 Sinbo SBS-4414 Baskül 35465 2 932 Selin Atasoy 7 25.11.200 7 Canon Powershot A560 95293 1 875 Ali Korkmaz 7 25.11.200 7 Kingston 2 GB SD 37285 1 875 Ali Korkmaz 8 26.11.200 7 Nokia 6300 57463 1 321 Ece Çağlayan
• Verilen şema 1. Normal Formda (atomik değerler) – SIPARIS (SiparisNo, Tarih, UrunAd, UrunNo, Adet, MusNo, MusAd, MusSoyad) • 1NF → 2NF (kısmi bağımlılıklar giderilir) – SIPARIS_URUN (SiparisNo, UrunNo, Adet) – SIPARIS_MUSTERI (SiparisNo, Tarih, MusNo, MusAd, MusSoyad) – URUN (UrunNo, UrunAd) • 2NF → 3NF (geçişli bağımlılıklar giderilir) – SIPARIS_URUN (SiparisNo, UrunNo, Adet) – SIPARIS_ MUSTERI (SiparisNo, Tarih, MusNo) – MUSTERILER (MusNo, MusAd, MusSoyad) – URUN (UrunNo, UrunAd)