VERİTABANI YÖNETİMİ Veritabanı Normalizasyonu 5.HAFTA ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalizasyon Normalizasyon, bir veritabanındaki verileri düzene koyma işlemidir. Normalizasyon, veri tabanlarında çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan arındırmak için daha az satır ve sütun içeren altkümelerine ayrıştırma işlemidir. Normalizasyon, aynı zamanda “ilk taslak” veri tabanı tasarımının üzerinde revizyonlar yaparak, taslağı son haline yaklaştırmanın yöntemlerden birisidir. Bu çerçevede en iyi tasarımı gerçekleştirmek için dikkat edeceğimiz kurallara Normalizasyon işlemleri diyoruz. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalizasyon Normalizasyon, birincil anahtarları ve işlevsel bağımlılıkları kullanarak bağıntıları analiz etme tekniğidir. Normalizasyon kuralları bir tablo içerisinde yer alacak kaydın nelerden oluşmasına karar vermeye yarar. İlişkisel veritabanı tasarımı aşamasında verinin tekrarlanmasını, kaybını veya yetersizliğini önlemek için Normalizasyon işlemi önem arzeder. İlişkisel veritabanı tasarımında amaç, veri tekrarını azaltan ve veri tutarlılığını yükselten bir yapının oluşturulmasıdır. İşte bunun için yapılması gereken işlemler Normalizasyonla sağlanır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalizasyon İlişkisel veri tabanlarının geliştirilme aşaması olan mantıksal veri modelinin oluşturulmasında başlıca hedef, verilerin, onların arasındaki ilişkilerin ve sınırlamaların kesin, tam ifade edilmesidir. Bu hedefe ulaşmak için uygun ilişkiler kümesi tanımlanmalıdır. Böyle ilişkilerin tanımlanması işlevine Normalizasyon denir. Normalizasyon; veri gereksinimlerinde tanımlanmış olan, arzu olunan nitelikleri bulunan ilişkiler kümesinin üretilmesi sürecidir. Normalizasyon, birincil anahtarları ve işlevsel bağımlılıkları kullanarak bağıntıları analiz etme tekniğidir. Bu teknik, bir takım kuralların dizisini içerir ve kurallar uygulanarak bir VT herhangi bir derecede normal hale getirilir. Her bir Normalizasyonun belli bir takım özellikleri vardır. Normalizasyon derecesi yükseldikçe bağıntılar biçim açısından daha kısıtlı ve güncelleme bozukluklarından zarar göremeyecek duruma gelir. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normal Formlar Normal formlar normalleştirmenin derecelerini veren formlar olup 1NF, 2NF, 3NF,BCNF, 4NF ve 5NF şeklindedir. En dışta Daha Yüksek Dereceli NF ve en içerde 1NF olmak üzere her üst form aynı zamanda alt formun özelliklerini de taşır. Daha Yüksek Dereceli NF 5NF 4NF BCNF 3NF 2NF 1NF ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normal Formlar Çeşitli kaynaklarda Normalizasyon formları bir çok farklı şekilde tanımlanır. Genel kabul görmüş 5 normalizasyon formu vardır. 5 Normalizasyon (5N) kuralı yaygın olarak kullanılmaktadır. 5N, tasarım aşamasında yol göstermek yerine hangi şartlara uygun tasarım yapılması gerektiğini anlatır. Bazen, bu kurallardan vazgeçmek durumunda olunabilir ancak, veritabanında saklanacak verilerin hacmi arttıkça yani veri tabanı büyüdükçe bu kuralların daha sıkı uygulanmasına ihtiyaç duyulur. Bir başka tanımlamada ise 1.NF, 2.NF, 3.NF, 4.NF, 5.NF hatta 6.NF, BOYCE‐CODD, DOMAIN/KEY olmak üzere 8 adet normalizasyon kuralı vardır. Aslında bu normal form olayına veritabanı öğrenme aşamasındayken dikkat ediliyor, daha sonra veritabanı analizi yaparken tecrübelerimizle otomatik olarak normalize yapmaya başlıyoruz. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalizasyon Basamakları Normal olmayan biçim (UDF) Tekrarlanan grupları silmeli Birinci normal biçim (1NF) İkinci normal biçim (2NF) Üçüncü normal biçimm (3NF) Source: Hoffer et al. (1998), p. 609. Kısmı bağımlılıkları aradan kaldırmalı Geçişken bağımlılıkları aradan kaldırmalı ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalizasyon basamakları Normal olmayan biçim (UDF) Tekrarlanan grupları silmeli Birinci normal biçim (1NF) Kısmı bağımlılıkları aradan kaldırmalı İkinci normal biçim (2NF) Dolaylı bağımlılıkları aradan kaldırmalı Üçüncü normal biçimm (3NF) Diğer işlevsel bağımlılık sorunlarını aradan kaldırılmalı Boyce-Codd normal form (BCNF) Çokdeğerli bağımlılıkları aradan kaldırmalı Fourth normal form (4NF) Diğer sapmaları aradan kaldırmalı Fifth normal form (5NF) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tablo Normalizasyon basamakları İşlem Basamakları Veri tabanınız için gerekli olan tüm alanları belirleyip tablonuzu oluşturunuz. Oluşturmuş olduğunuz tabloyu Birinci normal form(1NF) kuralını uygulayarak normalize ediniz. Tablolarınıza 2NF kuralını uygulayarak normalize ediniz. Tablolarınıza 3NF kuralını uygulayarak normalize ediniz. Eğer gerekiyorsa tablolarınıza BCNF kuralını uygulayarak normalize ediniz. Eğer gerekiyorsa tablolarınıza 4NF kuralını uygulayarak normalize ediniz. Eğer gerekiyorsa tablolarınıza 5NF kuralını uygulayarak normalize ediniz. Öneriler Veri tabanınız için gerekli olan alanları belirlerken piyasa araştırması da yapınız. Tekrarlanan grupları ortadan kaldırınız. Kısmi bağımlılıkları ortadan kaldırınız. Dolaylı bağımlılıkları ortadan kaldırınız. Diğer işlevsel bağımlılık sorunlarını ortadan kaldırınız. Çok değerli bağımlılıkları ortadan kaldırınız. Tüm sapmaları ortadan kaldırınız. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İşlevsel Bağımlılıklar (Functional Dependencies) İşlevsel bağımlılık kavramı, genel anlamda, ilişkisel tasarımların olması gerektiği gibi yapıldığının formal ölçütlerini belirlemede kullanılır. İşlevsel bağımlılıklar ve anahtarlar ilişkiler için normal biçimleri tanımlamada kullanılır. İşlevsel bağımlılıklar, bir ilişkideki özelliklerin anlamı ve birbirleri arasındaki ilişkilerden türetilen kısıtlamalardır. X özellikler kümesinin aldığı değerler, Y özellikler kümesindeki tek bir değere karşılık geliyorsa, X kümesi Y kümesini fonksiyonel olarak belirliyor demektir. (X Y : Y işlevsel olarak X’e bağımlıdır) Nitelikler arası bağımlılık, veri tabanındaki bazı niteliklerin birbirinden bağımsız olmaması; bu niteliklerin değerlerinin birbirinden bağımsız olarak belirlenememesi anlamına gelmektedir. Eğer ilişkiler oluşturulurken nitelikler arası bağımlılıklar dikkate alınmazsa, veri tabanında bir dizi aykırılık oluşabilir. Bu durumda veri tabanının bütünlük ve tutarlılığı korunamaz. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Nitelikler arası bağımlılıklar dikkate alınmadan tasarlanmış örnek bir tablo: Satıcı (üKodu, fNo, fAdı, fAdresi, sFiyatı) Bu ilişki şemasının yol açabileceği sorunlar: a. Veri tekrarlama problemi: Firmaların ad ve adresleri, pazarladıkları her ürün için tekrarlanmaktadır. b. Güncelleme problemi: Bir firmanın ad veya adresi değiştiğinde, bunun tüm kayıtlarda yapılması gerekir. c. Ekleme problemi: Bir firmanın veritabanında saklanabilmesi için, firmanın pazarladığı bir ürünün bulunması ve verilerin eklenmesi gerekir. Bir kayıt eklemeyle hem firma hem de pazarladığı ürün bilgisi eklenmektedir. Bu bir aykırılıktır. d. Silme problemi :Veritabanında bir firmaya ilişkin tek bir kayıt varsa, bu kaydın silinmesi de iki işleme (firma bilgisi silme ve firmanın pazarladığı ürün bilgisi silme) karşı gelir. Yukarıdaki tek ilişki yerine aşağıdaki iki ilişki oluşturulursa, sayılan aykırılıkların ortadan kalktığı görülür. Firma(fNo,fAdı, fAdresi) SÜrün(fNo, üKodu, sFiyatı) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tam İşlevsel Bağımlılık ve Kısmi Bağımlılık (Partial Dependency) Tam İşlevsel (Fonksiyonel) Bağımlılık : A ve B bir ilişki, eğer B işlevsel olarak A ’ ya bağımlı ise, (fakat A’nın herhangi alt kümesine bağımlı değilse), bu durumda B özellik kümesi A özellik kümesine tam işlevsel bağımlıdır. A -> B ise A fonksiyonel olarak B ’yi tanımlar. Yani B işlevsel olarak A’ya bağımlıdır ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tam İşlevsel Bağımlılık ve Kısmi Bağımlılık (Partial Dependency) Kısmi Bağımlılık A ve B özellik kümeleri işlevsel bağımlı ise (A B) ve A özellikler kümesinden herhangi bir özelliğin çıkarılması bu bağımlılığı bozmazsa, A B bağımlılığına kısmi bağımlılık denir. { Şirket No, Şirket Adı } { Şirket Adresi } bağımlılığı tam işlevsel değil (kısmi işlevsel), çünkü “Şirket Adresi” aynı zamanda “Şirket No” alanına da bağımlıdır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Örnek(İşlevsel Bağımlılıklar) Personel ID 1 2 3 Eğer ID numarasını biliyorsam, ismini de biliyorum” ADI Ali Fatma Arda ŞEHİR Ankara İstanbul Antalya ID numarası ismi belirmektedir. ADI niteliği, ID’ye fonksiyonel bağımlıdır. Bölüm Bölüm kodu 105 109 Bölüm adı Bilgisayar Mühendisliği. Matematik Bölüm Kodu -> Bölüm Adını Öğrenci numara 1 2 2 adsoyad Ali Fatma Arda bolum Bilgisayar Elektronik Makine sınıf 1 2 1 DahiliTel 111 204 Bölüm tablosu için; “Eğer bölüm kodunu biliyorsam Bölüm Adını da biliyorum”, Bölüm Kodu, Bölüm Adını belirlemektedir. Bölüm Adı Bölüm kodu ile fonksiyonel bağımlıdır diyebiliriz. tck 11 22 33 Yukarıdaki OGRENCI tablosunu ele aldığımız zaman aşağıdaki bağımlılıklardan söz edebiliriz. numara -> adsoyad numara - > adsoyad , bolum , ©Veritabanı sınıf , Yönetimi tck Prof. Dr. tck - > numara , adsoyad , bolum , İbrahim sınıfÇil Örnek(İşlevsel Bağımlılıklar) Sicil No Proje No Proje Adı Personel Adı Personel Soyadı Unvan Çalışma Saati 1 23 F-16 Taner Akbaş Uzman 15 2 17 UAV Aysu Demir Mühendis 30 3 21 Göktürk Fatih Sarı Teknisyen 25 İşlevsel Bağımlılıklar Proje No Proje Adı Sicil No {Personel Adı, Personel Soyadı, Unvan} {Personel Adı, Personel Soyadı} Unvan {Sicil No, Proje No} Çalışma Saati -- Kısmi -- Kısmi -- Dolaylı -- Tam Proje Adı, birincil anahtara kısmi bağımlıdır. {Personel Adı, Personel Soyadı, Unvan}, birincil anahtara kısmi bağımlıdır. Çalışma Saati, birincil anahtara {Sicil No, Proje No} tam bağımlıdır. Çünkü Sicil No veya Proje No, tek başına Çalışma Saati’ni belirleyemiyor. İkisi birlikte belirliyor. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Dolaylı yada Geçişken Bağımlılık (Transitive Dependency) A,B ve C, R tablosunun nitelikleri olsun. B, A’ya ve C de B’ye işlevsel bağımlı ise C, A’ya (B yoluyla) geçişken bağımlıdır denir. Yani; A, B ve C özellik kümelerini içeren bir R ilişkisinde A B ve B C işlevsel bağımlılıkları bulunmakta ise, C, A’ya B aracılığı ile dolaylı bağımlıdır. • Sicil No Personel Adı Personel Soyadı Birim Yönetici 1 Sevil kala Personel Ali kaya 2 Ayşe saka Kalite Serap er 3 Aslan bilgi Bilgi işlem Aylin ker 4 Can civelek Muhasebe Ahmet Celp Sicil No, Birim’i belirlemektedir. Anahtar olmayan Birim özelliği de, Yönetici özelliğini belirlemektedir. • Yönetici özelliği, Sicil No’ya dolaylı bağımlıdır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tek değerli ve Çok değerli bağımlılık Tek değerli bağımlılık Çok değerli bağımlılık ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Source: Fertuck (1995), p. 268. Örnek-1 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. DAGITIM müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1,2,3,4,6 30,20,40,20,10 2 6 Ankara 1,2 30,40 3 6 Ankara 2 20 4 34 İstanbul 2,4,5 20,30,40 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Birinci Normal Form Uygulandığında: müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1 30 1 34 İstanbul 2 20 1 34 İstanbul 3 40 1 34 İstanbul 4 20 1 34 İstanbul 6 10 2 6 Ankara 1 30 2 6 Ankara 2 40 3 6 Ankara 2 20 4 34 İstanbul 2 20 4 34 İstanbul 4 30 4 34 İstanbul 5 40 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Birinci Normal Formun Sorunları 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. Güncelleme –özelliğin değerinin değiştirilmesi veri tabanının tutarsızlığına neden ola bilir Ekleme – bazı tasarım kusurlarından dolayı satır eklenmesi mümkün olmaya bilir Silme - satır silinmesi bilgilerin beklenmeyen kaybına neden ola bilir Normalizasyon tüm bu sorunların kaldırılması için veri tabanı tasarımında yapılan düzenli süreçtir. Güncelleme, ekleme ve silme anomalilerini içermeyen bir ilişkisel şema tasarlanmalıdır. İlişkilerde NULL değerler içerecek tasarımlardan mümkün oldukça kaçınmalıdır Bir ilişkide sıklıkla NULL değeri alan özellikler, birincil anahtar tanımlanarak ayrı bir ilişkide toplanabilir. NULL değerlerin sebepleri; Özellik, aslında ilişki ile ilgili olmayabilir, Özelliğin neyle ilgili olduğu kullanıcı tarafından bilinmeyebilir, Özelliğin ©Veritabanı Yönetimi değeri o an için bilinmeyebilir Prof. Dr. İbrahim Çil Satır Ekleme Sorunu 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ı (gönderi_no ve miktar değerlerinin girilmiş olması) gerekiyor. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1 30 … … … … … 4 34 İstanbul 5 40 5 35 İzmir ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Satır Silme Sorunu 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 gönderi_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. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1 30 1 34 İstanbul 2 20 … … … … … 3 6 Ankara 2 20 … … … … … ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Güncelleme Sorunu 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. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1 30 1 34 İstanbul 2 20 1 34 İstanbul 3 40 1 34 İstanbul 4 20 … … … … … ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İkinci Normal Form 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. İşlevsel Bağımlılık DAĞITIM (müşteri_no, şehir_kodu, şehir_adı, gönderi_no, miktar) müşteri_no şehir_kodu, şehir_adı (müşteri_no, gönderi_no) miktar şehir_kodu şehir_adı (geçişli bağımlılık) İlkinde anahtar alanı oluşturan niteliklerden 1 tanesi, iki farklı niteliği belirleyebiliyor (kısmi bağımlılık) Bir müşteriye birden fazla defa ürün gönderilebildiği için ikincisinde iki nitelik bir anahtar oluşturuyor. ©Veritabanı Yönetimi Prof. Dr. İbrahimgeçişli Çil İlk ikisi anahtara göre bağımlı, üçüncüsü bağımlı. İkinci Normal Form şehir_kodu ve şehir_adı nitelikleri (müşteri_no, gönderi_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ı, gönderi_no, miktar) MÜŞTERİLER(müşteri_no, şehir_kodu, şehir_adı) MİKTARLAR(müşteri_no, gönderi_no, miktar) İkinci Normal Form Uygulandığında: MÜŞTERİLER MİKTARLAR müşteri_no gönderi_no miktar 1 1 30 1 2 20 1 3 40 1 4 20 müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 1 6 10 4 34 İstanbul 2 1 30 2 2 40 3 2 20 4 2 20 4 4 30 4 5 40 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İkinci Normal Formun Sorunları 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. Satır Ekleme Sorunu: 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. Sorunu: 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 Satır Ekleme müşteri_no şehir_kodu şehir_adı müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 1 34 İstanbul 2 6 Ankara 2 6 Ankara 3 6 Ankara 4 34 İstanbul 3 6 Ankara 4 34 İstanbul 5 35 İzmir 35 İzmir ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Üçüncü Normal Form 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. DAĞITIM (müşteri_no, şehir_kodu, şehir_adı, gönderi_no, miktar) şehir_kodu şehir_adı (geçişli bağımlılık) müşteri_no şehir_kodu şehir_adı gönderi_no miktar Örnekte “şehir_adı şehir_kodu” işlevsel bağımlılığının geçişli olduğu görülmektedir. Bir anahtara bağlı olmayan bu bağımlılığı ayrı bir tabloya dönüştürerek üçüncü normal formu (3NF) elde edebiliriz. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Üçüncü Normal Form Uygulandığında: ŞEHİRLER MİKTARLAR şehir_kodu şehir_adı 6 Ankara 1 1 30 34 İstanbul 1 2 20 35 İzmir 1 3 40 1 4 20 MÜŞTERİLER 1 6 10 müşteri_no şehir_kodu 2 1 30 müşteri_no gönderi_no miktar 1 34 2 2 40 2 6 3 2 20 3 6 4 2 20 4 34 4 4 30 5 35 4 5 40 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normal Formlar Her bir normal biçimin belli bir takım özellikleri vardır. Derece yükseldikçe bağıntılar biçim açısından daha kısıtlı ve güncelleme bozukluklarından zarar göremeyecek duruma gelir. Varlık-İlişki modeli için en önemli derece bağıntıların 1NF (1. Normal Form) olmasıdır. Geri kalan tüm NF seçime kalmıştır ancak güncelleme bozukluklarından tamamen kaçınmak için tablolar en az 3NF olmalıdır. Normal Olmayan Form (UNF) UNF 1 NF 2 NF • Veri artıklığı giderilir • Kısmi bağımlılıklar kaldırılır • Çok değerli özellikler, birleşik özellikler ve tekrarlayan gruplar kaldırılır •Anahtarlar tanımlanır ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil 3 NF • Dolaylı bağımlılıklar kaldırılır Örnek-2 Normal Olmayan Biçim (Unnormalized Form – UNF) Bir veya daha fazla tekrarlanan gruplar içeren iki boyutlu tablo normal olmayan tablodur. Tekrarlanan grup: Birincil anahtar değeri için birden fazla değeri bulunan özellik veya özellikler (multivalued attributes) kümesidir. Herhangi bir bilgi kaynağından verileri iki boyutlu tabloya olduğu gibi aktarmak, büyük olasılıkla, normal olmayan bir tablonun ortaya çıkmasına neden olacaktır. UNF Birleşik özellik Çok değerli özellik Sicil No Personel Adı Personel Soyadı Personel Adı Soyadı Telefonları 1 Soner Kara Soner Kara 2902451, 2941821, 2986883 2 Ela Taş Ela Taş 2903912, 2982039 3 Ali Coş Ali Coş 2905793, 2819283 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Birinci Normal Biçim (1NF) Anahtar özellikler tanımlanmıştır. İlişkide birleşik özellikler, çok değerli özellikler ve tekrarlanan gruplar yoktur. İlişkinin her bir hücresi yalnız ve yalnız tek değer içerir. Tüm özellikler birincil anahtara bağımlıdır. UNF den 1NF’ geçişte; İlişkiler için anahtar özellik kümesi belirlenir İlişkide çok değerli özelliğin her öğesi için yeni bir satır oluşturulur. Birleşik özellikler için ilişkilerden çıkarılır. İliişkide tekrarlanan gruplar için yeni bir ilişki tanımlanır ve bu ilişkide ana ilişkinin birincil anahtarı yabancı anahtar olarak yer alır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalize Edilmemiş Formdan, 1.NF’e ulaşmak için iki farklı yol izlenir 1. Tekrarlayan gruplar için tekrarlamayan nitelikler tekrarlanarak ayrı varlıklar oluşturulur. Oluşan tekrarla her satır ve her sütun bir değer bulunacak yeni tablo 1.NF’e ulaşacaktır. Bir tabloda her satır ve her sütunun kesişiminde bir ve yalnız bir değer vardır. Sicil No Personel Adı Personel Soyadı Telefon 1 Soner Kara 2902451 1 Soner Kara 2941821 1 Soner Kara 2986883 2 Ela Taş 2903912 2 Ela Taş 2982039 3 Ali Coş 2905793 3 Ali Coş 2819283 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Normalize Edilmemiş Formdan, 1.NF’e ulaşmak için iki farklı yol izlenir 2. Tekrarlayan grup ve anahtar öznitelik alınarak ayrı bir tablo oluşturulur. Yeni tablo için birincil anahtar tanımlanır. Bazen normalize edilmemiş tablo birden çok tekrarlayan gruba sahip olabilir. Bu durumda buradaki yaklaşım tekrar eden grup kalmayana kadar uygulanır! Her iki yaklaşım da doğrudur ancak ikinci yaklaşım daha az tekrara izin veren tablolar elde edilmesini sağlar. Sicil No Personel Adı Personel Soyadı Satır No Telefon Sicil No 1 Soner Kara 1 2902451 1 2 Ela Taş 2 2941821 1 3 Ali Coş 3 2986883 1 4 2903912 2 5 2982039 2 6 2905793 3 7 2819283 3 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İkinci Normal Biçim (2NF) Tam işlevsel bağımlılık kavramına dayalıdır. Birincil anahtarı birden çok özelliğe sahip olan ve 2NF olmayan ilişkilere uygulanır. İlişki, öncelikle 1 NF şartını sağlamalıdır. Ayrıca; İlişkide, birincil anahtar olmayan tüm özellikler birincil anahtara tam işlevsel bağımlı olmalıdır. 1 NF den 2 NF’ geçişte • İlişkideki işlevsel bağımlılıklar listelenir. • Kısmi bağımlılıklar kaldırılır. Bunun için; • Birincil anahtar üzerindeki kısmi bağımlılıkları oluşturan özellikler yeni bir ilişkiye taşınır ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İkinci Normal Biçim (2NF) Sicil No Proje No Proje Adı Personel Adı Personel Soyadı Unvan Çalışma Saati 1 23 F-16 Taner Akbaş Uzman 15 2 17 UAV Aysu Demir Mühendis 30 3 21 Göktürk Fatih Sarı Teknisyen 25 İşlevsel Bağımlılıklar Proje No Proje Adı Sicil No {Personel Adı, Personel Soyadı, Unvan} {Personel Adı, Personel Soyadı} Unvan {Sicil No, Proje No} Çalışma Saati -- Kısmi -- Kısmi -- Dolaylı -- Tam Proje Adı, birincil anahtara kısmi bağımlıdır. {Personel Adı, Personel Soyadı, Unvan}, birincil anahtara kısmi bağımlıdır. Çalışma Saati, birincil anahtara {Sicil No, Proje No} tam bağımlıdır. Çünkü Sicil No veya Proje No, tek başına Çalışma Saati’ni belirleyemiyor. İkisi birlikte belirliyor. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İkinci Normal Biçim (2NF) İkinci Normal Biçim kuralı uygulandığında oluşan tablolar: Sicil No Personel Adı Personel Soyadı Unvan Proje No Proje Adı 1 Taner Akbaş Uzman 23 F-16 2 Aysu Demir Mühendis 17 UAV 3 Fatih Sarı Teknisyen 21 Göktürk Sicil No Proje No Çalışma Saati 1 23 15 2 17 30 3 21 25 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil 2NF Üçüncü Normal Biçim (3NF) Dolaylı bağımlılık kavramına dayalıdır. İlişki, öncelikle 2 NF şartını sağlamalıdır. Ayrıca; İlişkide, birincil anahtar olmayan özellikler birincil anahtara dolaylı bağımlı olmamalıdır. 2NF den 3NF’ geçişte; İlişkideki işlevsel bağımlılıkları listelenir İlişkide birincil anahtara dolaylı bağımlı özellikler, yeni bir ilişkiye(tabloya) taşınır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Üçüncü Normal Biçim (3NF) 2N Formdaki bir tablo aşağıdaki gibidir: Sicil No Personel Adı Personel Soyadı Unvan Birim No Birim Adı Birim Yönetici 1 Taner Akbaş Uzman 23 F-16 15 2 Aysu Demir Mühendis 17 UAV 30 3 Fatih Sarı Teknisyen 21 Göktürk 25 Tam Dolaylı Dolaylı İşlevsel Bağımlılıklar Sicil No {Personel Adı, Personel Soyadı, Unvan, Birim No} {Personel Adı, Personel Soyadı} Unvan Birim No {Birim Adı, Birim Yönetici} Unvan, dolaylı olarak Sicil No’ya bağlıdır. Birim Adı ve Birim Yöneticisi, dolaylı olarak Sicil No’ya bağlıdır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil --- Tam --- Dolaylı --- Dolaylı İkinci Normal Biçim (2NF) Üçüncü Normal Biçim kuralı uygulandığında oluşan tablolar: Sicil No Personel Adı Personel Soyadı Unvan No Birim No 1 Taner Akbaş 5 23 2 Aysu Demir 2 17 3 Fatih Sarı 7 21 Birim No Birim Adı Birim Yönetici 23 F-16 15 17 UAV 30 21 Göktürk 25 Unvan No UnvanAdı 5 Uzman 2 Mühendis 7 Teknisyen ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Örnek-3 Normal formlar 1.Normal form Tekrar eden gruplar, anahtar alanla ayrı bir tablo olarak ilk tablodan ayrılırlar ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Source: Kendall & Kendall (1998), pp. 627, 628. Normal formlar 2. Normal Form • İlişki, öncelikle 1 NF şartını sağlamalıdır. Ayrıca; İlişkide, birincil anahtar olmayan tüm özellikler birincil anahtara tam işlevsel bağımlı olmalıdır. • 1 NF den 2 NF’ geçişte • İlişkideki işlevsel bağımlılıklar listelenir. • Kısmi bağımlılıklar kaldırılır. Bunun için; Birincil anahtar üzerindeki kısmi bağımlılıkları oluşturan özellikler yeni bir ilişkiye taşınır ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Source: Fertuck (1995), p. 273. Normal formlar 3.Normal Form • İlişkide, birincil anahtar olmayan özellikler birincil anahtara dolaylı bağımlı olmamalıdır. • 2NF den 3NF’ geçişte; • İlişkideki işlevsel bağımlılıkları listelenir • İlişkide birincil anahtara dolaylı bağımlı özellikler, yeni bir ilişkiye taşınır. Source: Fertuck (1995), p. 276. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil