Bölüm 7: İlşikisel Veritabanı Tasarımı ve Normalizasyon

Slides:



Advertisements
Benzer bir sunumlar
Microsoft Access Bu program Microsoft program paketinin içerisinde yer alan; çok büyük miktarlardaki verilerin depolanabileceği veritabanı oluşturmamıza.
Advertisements

ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Yığınlama Sıralaması (Heap Sort)
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
Veri Tabanı Tasarlama İlk kuralımız, olabildiğince bilgileri parçalamaktır.
mantIKSAL OPERATÖRLER
SINIFLANDIRMA VE REGRESYON AĞAÇLARI (CART)
Kofaktör Matrisler Determinantlar Minör.
KAVRAMSAL MODEL ikinci aşama.
RELATIONAL DATABASE MAGAMENT SYSTEM (RDMS)
MODÜLER ARİTMETİK.
AVL-Ağaçları (Trees).
Prof. Dr. Halil İbrahim Karakaş
Normalizasyon Kuralları & SQL
İLİŞKİSEL VERİ MODELİ Tablolar ile Gösterim
Veri Tabanı Normalizasyonu Devrim ALTINKURT
Birinci Dereceden Denklemler
BAĞINTI T ANIM: Boş olmayan A ve B kümeleri için, A×B nin her alt kümesine, Adan B ye bir bağıntı denir.A×B nin her alt kümesine de A dan A ya bir bağıntı.
İlişkisel Veri Modeli.
Veri Tabanı Yönetim Sistemleri
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Chapter 8: Deadlocks (ölümcül kilitlenmeler)
VERİ TABANI VE YÖNETİM SİSTEMLERİ  Birincil Anahtar Türleri  Access Veri Tabanında Bulunan İlişkiler  İlişkileri Tanımlama Bir – Çok İlişkisi Çok –
DERS 2 MATRİSLERDE İŞLEMLER VE TERS MATRİS YÖNTEMİ
EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ
Bölüm 4: Sayısal İntegral
Mantıksal Tasarım Mantıksal Tasarım – Prof.Dr. Ünal Yarımağan – HÜ Bilgisayar Mühendisliği Bölümü.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Akış Kontrol Mekanizmaları
VERİTABANI ve YÖNETİMİ
Veritabanı Tasarımı ve Yönetimi
SINIFLANDIRMA VE REGRASYON AĞAÇLARI
Normalizasyon Bütünlük Kısıtları. (integrity constraints) Veritabanında yer alacak değerleri sınırlar. Nesne bütünlüğü: Her nesne “unique” olarak ifade.
FONKSİYONLAR f : A B.
İŞLEM ve MODÜLER ARİTMETİK.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Lineer Cebir Prof.Dr.Şaban EREN
HAFTA 6-7.
DEVRE TEOREMLERİ.
Öğretmenin; Adı Soyadı :
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Bölüm 3: SQL.
Bölüm 4: İleri SQL.
Bölüm 6: Varlık-İlişki Modeli (Entity-Relationship Model)
Bölüm 8: SQL’de Yetkilendirmeler (Veri Kontrol Dili – DCL)
BAĞINTI & FONKSİYONLAR.
Bölüm 1 Giriş.
Bu Günkü Konular If yapısı ve karşılaştırma operatörleri
Veritabanı Kavramları
Bulanık Mantık Bulanık Mantığın Temel Kavramları
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
İnsan Kaynakları Bilgi Sistemleri
Veri Madenciliği Birliktelik Analizi: Temel Kavramlar ve Algoritmalar
TAM SAYILARLA ÇARPMA VE BÖLME İŞLEMLERİ
Doğal Sayılarda Toplama Ve Çıkarma İşlemi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
TAM SAYILAR.
Özel Çakabey Anadolu Lisesi
Excel’de VBA Programlama (Visual Basic Application)
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
VERİTABANI YÖNETİM SİSTEMLERİ 3-Normalizasyon
İleri Algoritma Analizi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
1 EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ Excel de bir veritabanı oluşturulabilir veya başka programlarda (Access gibi) oluşturulmuş olan Veri Tabanları.
Sunum transkripti:

Bölüm 7: İlşikisel Veritabanı Tasarımı ve Normalizasyon

Tablo Birliştirme nasıl olmalıdır? borrower ve loan tablolarını birliştirmeyi deneyelim bor_loan = (customer_id, loan_number, amount ) Bu durumda L-100 borcuna ait borç miktarı gereksiz şekilde tekrarlanıyor.

Tablo Birliştirme nasıl olmalıdır? loan_branch ve loan tablolarını birliştirmeyi deneyelim loan_amt_br = (loan_number, amount, branch_name) Bu durumda gereksiz veri tekrarı yoktur. Bu birliştirme doğru bir birleştirme olur.

Daha küçük tablolara bölme Daha küçük tablolara böldükten sonra elde edilen tablolar doğal birleştirme yöntemi ile birleştirildiğinde orijinal tablo elde edilebliyorsa bu birleştirme «kayıpsız» birleştirme olarak adlandırılır. Tablolar sadece kayıpsız birleştirme sonucu verecek şekilde bölünmelidirler.

Normalizasyon Normalizasyon, veritabanı tasarım aşamasında veri tekrarını, veri kaybını veya veri yetersizliğini önlemek için kullanılır. Tabloların oluşturulması, tablolar arasında artıklığı ve tutarsız bağımlılığı ortadan kaldırmak nornalizasyonun temel amacıdır. Normalizayonun amaçları: Veri bütünlüğünü sağlamak: eğer bir sütun için gereksiz veri tekrarı var ise, bu sütun bir süre sonra birbirinden farklı değerler içermeye başlayacaktır. Uygulamadan bağımsızlık: hazırlanacak ilişkisel model kullanılacak uygulamaya göre değil içereceği veriye göre hazıralanmalıdır. Performans artışı: Tam olarak normalleştirilecek veritabanı veri tekrarını en aza indireceğinden kullanılan disk alanı ve veritabanı boyutu azalacaktır. Böylece veritabanı işlemleri daha hızlı yapılabilecektir.

Normalizasyon Veritabanı normalizasyonu için kullanılan birkaç kural bulunmaktadır. Her kurala «Normal Form» adı verilir. Birinci (1NF), ikinci 2NF), üçüncü (3NF), Boyce-Codd (BCNF), dördüncü(4NF), beşinci normal (5NF) formlar vardır. Üst normal formlar alt normal formları kapsamaktadır 3NF, 2NF ve 1NF kurallarını kapsar (ama tersi doğru değildir) Çoğu uygulama için 3NF kuralları yeterlidir.

1. Normal Form (1NF) Birden fazla veri tek sütunda olamaz. Bir alan(sütun) içerisindeki bilgi özel karakterlerle ayrılarak tutulmamalıdır. Bir tablonun 1NF olabilmesi için o tabloyu oluşturan sütunların 1NF olması gerekir. 1Nf olmayan tablolarda veri tekrarı kaçınılmazdır. Genel olarak tüm tabloların en az 1NF kuralına uygun olduğunu varsayarız. Ör: Ders kodu sütununda CS0012 veya EE1127 gibi verilerin tutulması bu sütunun (ve de dolayısı ile tablonun) 1NF kuralın uymamasına neden olur. Ör: Not sütununda 80, 90, 75 gibi birden fazla değer tutulması bu sütunun (ve de dolayısı ile tablonun) 1NF kuralın uymamasına neden olur.

Amaç Amaç: Bir R tablosunun «iyi» formda olup olmadığına karar vermek. R tablosu «iyi» formda değil ise tabloyu {R1, R2, ..., Rn} ‘den oluşan iy tablolar kümesine bölmek gerekir. Bu bölünme sonucunda; Ortaya çıkan tüm tablolar «iyi» form da olmalıdr Bölünme kayıpsız-birleştirme (lossless-join) kuralına uygun şekilde yapılmalıdır. (daha sonra anlatılacaktır) Tercihen bölünme «fonksiyonel bağımlılığı koruyan» şeklinde olmalıdır. (daha sonra anlatılacaktır) Bu kuram Fonksiyonel Bağımlılık üzerine kuruludur.

Fonksiyonel Bağımlılık R kümesi(tablosu) X ve Y kümelerinden oluşsun Eğer X nitelik kümesinin değerleri Y nitelik kümesinin değerlerini belirliyorsa, Y niteliği X niteliğine Fonksiyonel Bağımlıdır denir Gösterliş: X  Y X değerlerini biliyorsak Y değerlerini bulabiliriz !!!!

Fonksiyonel Bağımlılık (devam) Ör: R(A,B) tablosu için aşağıdaki somutlaşan örneği (instance) inceleyelim: A  B fonksiyonel bağımlılığı sağlanmıyor ancak B  A sağlanıyor. A B 4 1 5 3 7 Not: Bir somutlaşan örneğin bir zaman diliminde bir fonksiyonel bağımlılığı sağlıyor olması bu fonksiyonel bağımlılığın ilgili tablo için her zaman sağlandığı anlamına gelmez. Ör: Yukardaki somutlaşan örnek daha sonraki bir anda yandaki duruma gelir ise BA fonksiyonel bağımlılığı artık geçerli değildir. A B 4 1 5 7

Fonksiyonel Bağımlılık ve Anahtarlar Fonksiyonel bağımlılık anahtar konseptini genişletilmiş biçimidir. K  R fonksiyonel bağımlılığının geçerli ise K nitelik kümesi R tablosu için süper anahtar oluşturur K nin R tablosu için aday anahtar oluşturabilmesi için: K  R, fonksiyonel bağımlılığının geçerli olması ve Hiçbir   K nitelik kümesi için   R fonksiyonel bağımlılığının geçerli olmaması gerekir.

Apaçık Fonksiyonel Bağımlılık Bir fonksiyonel bağımlılık bir tablonun tüm somutlaşan örnekleri için geçerli ise apaçık fonksiyonel bağımlılık olarak tanımlanır. Ör: musteri_ismi, borc_no musteri_ismi musteri_ismi  musteri_ismi Genel olarak    fonksiyonel bağımlılığında    durumu var ise    apaçık tır. (yani fonksiyonel bağımlılığı oluşturan sağ taraftaki nitelik kümesi sol tarafttaki nitelik kümesinin alt kümesidir)

Fonksiyonel Bağımlılık kümesinin Kaplaması (Closure) Fonksiyonel bağımlılıklardan oluşan bir F kümesi verilmiş olsun. Bu kümedeki fonksiyonel bağımlılıkları kullanarak yeni fonksiyonel bağımlılıklar türetmek mümkün olabilir. Ör: A  B ve B  C, sağlanmış ise A  C bağımlılığının sağlanması mantıksal olarak gerekli olur. F kümesi tarafından mantıksal olarak gerekli gösterilen tüm fonksiyonel bağımlılıklar kümesine F’in kaplaması denir. Gösterriliş: F+. F+ her durumda F’in üst kümesidir.

Fonksiyonel Bağımlılık kümesinin Kaplaması Armstrong Aksiyomlarını F+ ‘ ın tüm elemanlarını bulabiliriz.    ise,    sağlanır (yansıma)    sağlanıyorsa,      sağlanır (ekleme)    ve    sağlanıyorsa    sağlanır (geçişme) Aksiyomlara ek olarak F+’ ı elde etmek için kullanılabilecek 3 ek kural daha vardır.    ve    sağlanıyorsa,     sağlanır (birleşme)     sağlanıyorsa,    ve    sağlanır (bölünme)    ve     sağlanıyorsa,     sağlanır (sözde geçişme)            Not: Ek kurallar aksiyomlar kullanılarak türetilirler

Örnek R = (A, B, C, G, H, I) F = { A  B A  C CG  H CG  I B  H} F+’ kümesininnın bazı elemanları: A  H A  B ve B  H kullanılarak geçişme AG  I A  C ‘ye G ekleme sonucu AG  CG elde edilir sonrasında CG  I ile sözde geçişme kullanılır CG  HI CG  I her iki tarafına CG eklenerek CG  CGI elde edilir CG  H to her iki tarafına I eklenerek CGI  HI elde edilir Daha sonra geçişme uygulanır

Nitelik Kümelerinin Kaplaması (Attribute closure) Verilen bir a nitelik kümesi için a kullanılarak F kümesinden fonksiyonel olarak elde edilen nitelik kümesine a ‘nın kaplaması denir.(Gösteriliş: a+) a+ hesaplama algoritması sonuç:= a; while (sonuç değişir) do her     F için begin if   sonuç then sonuç := sonuç   end end

Nitelik Kaplaması (Örnek) R = (A, B, C, G, H, I) F = {A  B A  C CG  H CG  I B  H} (AG)+ 1. sonuç= AG 2. sonuç= ABG (A  B) 3. sonuç= ABCG (A  C ) 4. sonuç= ABCGH (CG  H ve CG  AGBC) 5. sonuç= ABCGHI (CG  I ve CG  AGBCH) AG aday anahtarmı? AG super anahtarmı? AG  R sağlanıyormu? == (AG)+  R ? Evet AG ‘nin herhangi bir alt kümesi super anahtarmı? ( (A)+ ve(G)+ hesaplayıp kontrol et) A  R sağlanıyormu? == (A)+  R ? (A+=ABCH hayır!) G  R? Sağlanıyormu? == (G)+  R ? ((G+=G hayır!)

Nitelik Kaplamasının Kullanımı Super anahtar testi için:  nın super anahtar olup olmadığını bulmak için +, hesaplanır. + R tablosundaki tüm nitelikleri içeriyorsa  süper anahtardır. Fonksiyonel bağımlılık testi için:    nın sağlanıp sağlanmadığını bulmak için (bir başka deyişle F+ nın elemanı olup olmadığını bulmak için)   + mı diye kontro ederiz. + ’yı hesaplayıp  yı içerip içermediğine bakarız İçeriyorsa    sağlanıyordur. F’in kaplama kümesini bulmak için. Her bir   R, için + hesaplanır Her bir S  +,   S bir fonksiyonel bağımlılık tanımlanır.

F kümesinin Doğal Kaplaması - Fc F kümesindeki fonkksiyonel bağımlılıklara eşdeğer en küçük fonksiyonel bağımlılık içeren kümeye, F kümesinin doğal kaplaması (Fc) denir. Fc’nin özellikleri: Fc deki hiçbir fonksiyonel bağımlılık «gereksiz» nitelik içermez. Fc ‘deki her bir fonksiyonel bağımlılığın sol tarafı birbirinden farklıdır. Fc hesaplama algoritması: repeat F kümesindeki her bir fonksiyonel bağımlılığa birleştirme kuralı uygula 1  1 and 1  2 with 1  1 2 Her bir fonksiyonek bağımlılıktan gereksiz tüm nitelikleri kaldır until F daha fazla değişmez

Gereksiz Nitelik bulma F kümesinde    şeklinde bir fonksiyonel bağımlılığı ele alalım Sol tarafta () veya sağ tarafta () gereksiz nitelikleri bulmak için iki ayrı test vardır. (Sol taraf testi) A   gereksizmi? F kümesini kullanarak ({} – A)+ hesapla ({} – A)+ kaplamsı  kümesindeki tüm nitelikleri içeriyormu? İçeriyorsa A niteliği gereksizdir (Sağ taraf testi) A   gereksizmi? F’ = (F – {  })  { ( – A)}, kümesini kullanarak + hesapla + kaplaması A niteliğini içeriyormu?

Kayıpsız Birleştirme Bölünmesi R = (R1, R2) şeklindeki bir bölünmenin kayıpsız birleştirme özelliğine sahip olabilmesi için gerekli koşul: r = R1 (r ) R2 (r ) Bölünmenin kayıpsız olabilmesi için R1  R2  R1 R1  R2  R2 fonksiyonel bağımlılıklarından en az bir tanesinin sağlanması gerekir. Bir başka deyişle; R1  R2 kümesindeki niteliklerin R1 veya R2 kümesin süper anahtarı olması gerekir. (Not: süper anahtarı kontrol etmek için nitelik kapsama kümesini hesaplamak gerekebilir)

Fonksiyonel Bağımlılığın Korunması R = (R1, R2,.....Rn ) şeklindeki bir bölünmeyi ele alalım Her bir Fi kümesi sadece Ri deki nitelikler kullanılarak yazılabilecek F + ‘in alt kümeleri olsun Fonksiyonel Bağımlılığın Korunması için gerekli koşul: (F1  F2  …  Fn )+ = F +

Örnek R = (A, B, C) F = {A  B, B  C) İki farklı şekilde bölünebilir. R1 = (A, B), R2 = (B, C) Kayıpsız-birleştirme özellikli bölünmedir R1  R2 = {B} ve B  BC Fonksiyonel bağımlılık korunur R1 = (A, B), R2 = (A, C) R1  R2 = {A} ve A  AB Fonksiyonel bağımlılık korunmaz (B  C bağımlılığı R1 R2 bulunmadan elde edilemez)

Boyce-Codd Normal Form R tablosunun F kümesindeki fonksiyonel bağımlılıklara dayalı olarak BCNF, olabilmesi için F+ deki   (  R and   R) cinsinden tüm fonksiyonel bağımlılıkların aşağıdaki koşullardan en az birini sağlaması gerekir.    bağımlılığı apaçıktır (yani,   ) , R tablosunun süper anahtarıdır

Tabloların BCNF ‘na uygun bölünmesi Bir R tablosu için F+ de yer alan  fonksiyonel bağımlılığının her 2 BCNF koşulunu da sağlamadığını varsayalım; Bu durumda R tablosu aşağıdalkine uygun olarak R1 ve R2 tablolarına bölünür R1= (U  ) R2= ( R - (  -  ) ) Elde edilen R1 ve R2 tabloları BCNF’i sağlamıyorsa, sağlamayan tablo veya tablolar tekrardan bölünür. Not: BCNF bölünme yöntemi kullanılarak elde edilen tüm Ri tabloları BCNF koşulunu sağlar ve bölünme her zaman kayıpsız birleşme koşuluna uygundur Örnek: musteri_borc = ( musteri_id, borc_no, borc_miktari ) borc_no  borc_miktari (F kümesinde var olan fonk. bağ.)  = borc_no  = borc_miktari Bu durumda; R1= (U  ) = ( borc_no, borc_miktari ) R2= ( R - (  -  ) ) = ( musteri_id, borc_no )

Örnek R = (A, B, C ) F = {A  B B  C} Süper anahtar= {A} R, BCNF ‘i sağlamıyor. B  C her 2 koşuluda sağlamıyor! R’nin BCNF bölünmeye uygun olarak R1 = (A, B), R2 = (B, C) şeklinde bölünmesi sonucunda; R1 ve R2 BCNF’ i sağlıyor Kayıpsız-birleştirme özellikli bölünmedir Fonksiyonel bağımlılık korunur

Tabloların BCNF ‘na uygun bölünmesi Başlangıçtaki R tablosunun BCNF’ i sağlayıp sağlamadığını bulmak için sadece F kümesindeki fonksiyonel bağımlıkları test etmek yeterlidir. Ancak BCNF yöntemine uygun olarak yapılan bölünmeden sonra elde edilen R1, R2 kümelerinin BCNF’i sağlayıp sağlamadığını bulmak için sadece F kümesindeki fonksiyonel bağımlıkları test etmek yeterli değildrir Bu durumda F+ tüm bağımlıklarını test etmek gerekir.

BCNF ve Üçüncü Normal Form(3NF) BCNF koşuluna uygun bölünme sonucunda ortya çıkan tablolar her zaman fonksiyonel bağımlılığı koruyacağından, fonksiyonel bağımlılığı korunmasının zorunlu (veya tercih edilen) olduğu durumlarda daha zayıf olan bir başka normal form olan üçüncü normal form (3NF)’ u kullanabiliriz. 3NF kuralına uyan tablolarda bazı gereksiz veri tekrarları olabilmesine rağmen, 3NF’ e uygun bölünme sonucunda elde edilen tablolar her zaman fonksiyonel bağımlılığı korur ve kayıpsız birleşmşme koşulunu da sağlar.

Third Normal Form Bir R tablosunun (3NF) ‘i sağlayabilmesi için F+ de yer alan    şeklinde tüm fonksiyıonel bağımlılıkların aşağıdaki koşullardan en az birini sağlaması gerekir. Üçüncü koşul, fonksiyonel bağımlılığın korunması koşulunun sağlanması adına BCNF’ ten verilen bir esnemedir.    bağımlılığı apaçıktır (yani,   ) , R tablosunun süper anahtarıdır  –  kümesindeki herbir A nitaliği R kümesi için var olan aday anahtalardan en az birisinde bulunmalıdır.

3NF Decomposition Algorithm -11- i := 0; for each Fc de yer alan    türünden herbir fonksiyonel bağımlılık için do if hiçbir Rj, 1  j  i tablosu   ‘yı içermiyorsa then begin i := i + 1; Ri :=   end if hiçbir Rj, 1  j  i, R tablosun hiçbir anahtar niteliğini içermiyorsa then begin i := i + 1; Ri := R tablosu için tanımlanmış anahtar niteliklerden herhangi biri; end return (R1, R2, ..., Ri) Not: 3NF Bölünme her zaman bağımlılığı korur ve kayıpsız birleşmye uygun bir bölünmedir.

3NF Örnek Tablo R: R = (J, K, L ) F = {JK  L, L  K } İki aday anahtar: JK ve JL R tablosu 3NF’ sağlıyor (kontrol et) JK  L JK süper anahtardır L  K K niteliği, R için tanımlanmış aday anahtarlardan birinde içerilmiş (JK) (unutmayınız ki K-L=K)

Veritabanı Tasarımı Hedefleri İlişkisel bir veri tabanı tasarlanırken aşağıdaki hedefler gözönünde tutulur: BCNF. Kayıpsız Birleşmeye uygun Bölünme Fonksiyonel Bağımlılığın Korunması Yukarıdakilerin tamamının elde edilmesinin mükün olmadığı durumlarda Ya Fonksiyonel bağımlığın korunması hedefinden vazgeçilir Ya da 3NF kullanılarak bazı gereksiz veri tekrarlarına izin verilir.