Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 7: İlşikisel Veritabanı.

Benzer bir sunumlar


... konulu sunumlar: "Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 7: İlşikisel Veritabanı."— Sunum transkripti:

1 Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Bölüm 7: İlşikisel Veritabanı Tasarımı ve Normalizasyon

2 ©Silberschatz, Korth and Sudarshan7.2Database System Concepts - 5 th Edition, July 28, 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.

3 ©Silberschatz, Korth and Sudarshan7.3Database System Concepts - 5 th Edition, July 28, 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.

4 ©Silberschatz, Korth and Sudarshan7.4Database System Concepts - 5 th Edition, July 28, 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.

5 ©Silberschatz, Korth and Sudarshan7.5Database System Concepts - 5 th Edition, July 28, 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.

6 ©Silberschatz, Korth and Sudarshan7.6Database System Concepts - 5 th Edition, July 28, 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.

7 ©Silberschatz, Korth and Sudarshan7.7Database System Concepts - 5 th Edition, July 28, 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.

8 ©Silberschatz, Korth and Sudarshan7.8Database System Concepts - 5 th Edition, July 28, Amaç Amaç: Bir R tablosunun «iyi» formda olup olmadığına karar vermek. R tablosu «iyi» formda değil ise tabloyu {R 1, R 2,..., R n } ‘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.

9 ©Silberschatz, Korth and Sudarshan7.9Database System Concepts - 5 th Edition, July 28, 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 !!!!

10 ©Silberschatz, Korth and Sudarshan7.10Database System Concepts - 5 th Edition, July 28, 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 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

11 ©Silberschatz, Korth and Sudarshan7.11Database System Concepts - 5 th Edition, July 28, 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.

12 ©Silberschatz, Korth and Sudarshan7.12Database System Concepts - 5 th Edition, July 28, 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)

13 ©Silberschatz, Korth and Sudarshan7.13Database System Concepts - 5 th Edition, July 28, 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.

14 ©Silberschatz, Korth and Sudarshan7.14Database System Concepts - 5 th Edition, July 28, 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

15 ©Silberschatz, Korth and Sudarshan7.15Database System Concepts - 5 th Edition, July 28, Ö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

16 ©Silberschatz, Korth and Sudarshan7.16Database System Concepts - 5 th Edition, July 28, Nitelik Kümelerinin Kaplaması (Attribute closure) Verilen bir  nitelik kümesi için  kullanılarak F kümesinden fonksiyonel olarak elde edilen nitelik kümesine  ‘nın kaplaması denir.(Gösteriliş:  + )  + hesaplama algoritması sonuç:=  ; while (sonuç değişir) do her     F için begin if   sonuç then sonuç := sonuç   end end

17 ©Silberschatz, Korth and Sudarshan7.17Database System Concepts - 5 th Edition, July 28, 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ı? 1. AG super anahtarmı? 1. AG  R sağlanıyormu? == (AG) +  R ? Evet 2. AG ‘nin herhangi bir alt kümesi super anahtarmı? ( (A) + ve(G) + hesaplayıp kontrol et) 1. A  R sağlanıyormu? == (A) +  R ? (A + =ABCH hayır!) 2. G  R? Sağlanıyormu? == (G) +  R ? ((G + =G hayır!)

18 ©Silberschatz, Korth and Sudarshan7.18Database System Concepts - 5 th Edition, July 28, 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.

19 ©Silberschatz, Korth and Sudarshan7.19Database System Concepts - 5 th Edition, July 28, F kümesinin Doğal Kaplaması - F c 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ı (F c ) denir. F c ’nin özellikleri: F c deki hiçbir fonksiyonel bağımlılık «gereksiz» nitelik içermez. F c ‘deki her bir fonksiyonel bağımlılığın sol tarafı birbirinden farklıdır. F c 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

20 ©Silberschatz, Korth and Sudarshan7.20Database System Concepts - 5 th Edition, July 28, 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? 1. F kümesini kullanarak ({  } – A) + hesapla 2. ({  } – A) + kaplamsı  kümesindeki tüm nitelikleri içeriyormu? 3. İçeriyorsa A niteliği gereksizdir (Sağ taraf testi) A   gereksizmi? 1. F’ = (F – {    })  {   (  – A)}, kümesini kullanarak  + hesapla 2.  + kaplaması A niteliğini içeriyormu? 3. İçeriyorsa A niteliği gereksizdir

21 ©Silberschatz, Korth and Sudarshan7.21Database System Concepts - 5 th Edition, July 28, Kayıpsız Birleştirme Bölünmesi R = (R 1, R 2 ) ş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 R 1  R 2  R 1 R 1  R 2  R 2 fonksiyonel bağımlılıklarından en az bir tanesinin sağlanması gerekir. Bir başka deyişle; R 1  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)

22 ©Silberschatz, Korth and Sudarshan7.22Database System Concepts - 5 th Edition, July 28, Fonksiyonel Bağımlılığın Korunması R = (R 1, R 2,.....R n ) şeklindeki bir bölünmeyi ele alalım Her bir F i kümesi sadece R i deki nitelikler kullanılarak yazılabilecek F + ‘in alt kümeleri olsun Fonksiyonel Bağımlılığın Korunması için gerekli koşul:  (F 1  F 2  …  F n ) + = F +

23 ©Silberschatz, Korth and Sudarshan7.23Database System Concepts - 5 th Edition, July 28, Örnek R = (A, B, C) F = {A  B, B  C) İki farklı şekilde bölünebilir. R 1 = (A, B), R 2 = (B, C) Kayıpsız-birleştirme özellikli bölünmedir R 1  R 2 = {B} ve B  BC Fonksiyonel bağımlılık korunur R 1 = (A, B), R 2 = (A, C) Kayıpsız-birleştirme özellikli bölünmedir R 1  R 2 = {A} ve A  AB Fonksiyonel bağımlılık korunmaz  (B  C bağımlılığı R 1 R 2 bulunmadan elde edilemez)

24 ©Silberschatz, Korth and Sudarshan7.24Database System Concepts - 5 th Edition, July 28, Boyce-Codd Normal Form     bağımlılığı apaçıktır (yani,    ) , R tablosunun süper anahtarıdır 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.

25 ©Silberschatz, Korth and Sudarshan7.25Database System Concepts - 5 th Edition, July 28, 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 R i 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 )

26 ©Silberschatz, Korth and Sudarshan7.26Database System Concepts - 5 th Edition, July 28, Ö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 R 1 = (A, B), R 2 = (B, C) şeklinde bölünmesi sonucunda; R 1 ve R 2 BCNF’ i sağlıyor Kayıpsız-birleştirme özellikli bölünmedir Fonksiyonel bağımlılık korunur

27 ©Silberschatz, Korth and Sudarshan7.27Database System Concepts - 5 th Edition, July 28, 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.

28 ©Silberschatz, Korth and Sudarshan7.28Database System Concepts - 5 th Edition, July 28, 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.

29 ©Silberschatz, Korth and Sudarshan7.29Database System Concepts - 5 th Edition, July 28, 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.

30 ©Silberschatz, Korth and Sudarshan7.30Database System Concepts - 5 th Edition, July 28, NF Decomposition Algorithm -11- i := 0; for each F c de yer alan    türünden herbir fonksiyonel bağımlılık için do if hiçbir R j, 1  j  i tablosu   ‘yı içermiyorsa then begin i := i + 1; R i :=   end if hiçbir R j, 1  j  i, R tablosun hiçbir anahtar niteliğini içermiyorsa then begin i := i + 1; R i := R tablosu için tanımlanmış anahtar niteliklerden herhangi biri; end return (R 1, R 2,..., R i ) Not: 3NF Bölünme her zaman bağımlılığı korur ve kayıpsız birleşmye uygun bir bölünmedir.

31 ©Silberschatz, Korth and Sudarshan7.31Database System Concepts - 5 th Edition, July 28, NF Ö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  LJK süper anahtardır L  KK niteliği, R için tanımlanmış aday anahtarlardan birinde içerilmiş (JK) (unutmayınız ki K-L=K)

32 ©Silberschatz, Korth and Sudarshan7.32Database System Concepts - 5 th Edition, July 28, 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.


"Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 7: İlşikisel Veritabanı." indir ppt

Benzer bir sunumlar


Google Reklamları