VERİTABANI YÖNETİMİ Veritabanı Normalizasyonu 5.HAFTA
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.
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.
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.
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
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.
Normalizasyon Basamakları Normal olmayan biçim (UDF) Birinci normal biçim (1NF) İkinci normal biçim (2NF) Üçüncü normal biçimm (3NF) Source: Hoffer et al. (1998), p. 609. Tekrarlanan grupları silmeli Kısmı bağımlılıkları aradan kaldırmalı Geçişken bağımlılıkları aradan kaldırmalı
Normalizasyon basamakları Normal olmayan biçim (UDF) Birinci normal biçim (1NF) İkinci normal biçim (2NF) Üçüncü normal biçimm (3NF) Boyce-Codd normal form (BCNF) Fourth normal form (4NF) Fifth normal form (5NF) Tekrarlanan grupları silmeli Kısmı bağımlılıkları aradan kaldırmalı Dolaylı bağımlılıkları aradan kaldırmalı Diğer işlevsel bağımlılık sorunlarını aradan kaldırılmalı Çokdeğerli bağımlılıkları aradan kaldırmalı Diğer sapmaları aradan kaldırmalı
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.
İş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.
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ı)
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
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.
Örnek(İşlevsel Bağımlılıklar) Personel ID ADI ŞEHİR 1 Ali Ankara 2 Fatma İstanbul 3 Arda Antalya Bölüm Bölüm kodu Bölüm adı DahiliTel 105 Bilgisayar Mühendisliği. 111 109 Matematik 204 Bölüm Kodu -> Bölüm Adını Öğrenci numara adsoyad bolum sınıf tck 1 Ali Bilgisayar 1 11 2 Fatma Elektronik 2 22 2 Arda Makine 1 33 Eğer ID numarasını biliyorsam, ismini de biliyorum ID numarası ismi belirmektedir. ADI niteliği, ID ye fonksiyonel bağımlıdır. 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. Yukarıdaki OGRENCI tablosunu ele aldığımız zaman aşağıdaki bağımlılıklardan söz edebiliriz. numara -> adsoyad numara - > adsoyad, bolum, sınıf, tck tck - > numara, adsoyad, bolum, sınıf
Ö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ı -- Kısmi Sicil No {Personel Adı, Personel Soyadı, Unvan} -- Kısmi {Personel Adı, Personel Soyadı} Unvan -- Dolaylı {Sicil No, Proje No} Çalışma Saati -- 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.
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.
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 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
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
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 değeri o an için bilinmeyebilir
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
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
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
İ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. İlk ikisi anahtara göre bağımlı, üçüncüsü geçişli 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üşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul MİKTARLAR müşteri_no gönderi_no miktar 1 1 30 1 2 20 1 3 40 1 4 20 1 6 10 2 1 30 2 2 40 3 2 20 4 2 20 4 4 30 4 5 40
İ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 Ekleme müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul Satır Silme müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 6 Ankara 4 34 İstanbul 35 İzmir 5 35 İzmir
Üçü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.
Üçüncü Normal Form Uygulandığında: ŞEHİRLER şehir_kodu şehir_adı 6 Ankara 34 İstanbul 35 İzmir MÜŞTERİLER müşteri_no şehir_kodu 1 34 2 6 3 6 4 34 5 35 MİKTARLAR müşteri_no gönderi_no miktar 1 1 30 1 2 20 1 3 40 1 4 20 1 6 10 2 1 30 2 2 40 3 2 20 4 2 20 4 4 30 4 5 40
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 3 NF Veri artıklığı giderilir Kısmi bağımlılıklar kaldırılır Dolaylı 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
Ö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
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.
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
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ı 1 Soner Kara 2 Ela Taş 3 Ali Coş Satır No Telefon Sicil No 1 2902451 1 2 2941821 1 3 2986883 1 4 2903912 2 5 2982039 2 6 2905793 3 7 2819283 3
İ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
İkinci Normal Biçim (2NF) Sicil No Proje No Proje Adı Personel Adı İşlevsel Bağımlılıklar Proje No Proje Adı -- Kısmi Sicil No {Personel Adı, Personel Soyadı, Unvan} -- Kısmi {Personel Adı, Personel Soyadı} Unvan -- Dolaylı {Sicil No, Proje No} Çalışma Saati -- 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. Personel Soyadı Unvan 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 Çalışma Saati
İkinci Normal Biçim (2NF) İkinci Normal Biçim kuralı uygulandığında oluşan tablolar: Sicil No Personel Adı Personel Soyadı Unvan 1 Taner Akbaş Uzman 2 Aysu Demir Mühendis 3 Fatih Sarı Teknisyen Proje No Proje Adı 23 F-16 17 UAV 21 Göktürk Sicil No Proje No Çalışma Saati 1 23 15 2NF 2 17 30 3 21 25
Üçü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.
Üçüncü Normal Biçim (3NF) 2N Formdaki bir tablo aşağıdaki gibidir: Sicil No Personel Adı Personel Soyadı Unvan Birim No Birim Adı 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 Birim Yönetici Tam Dolaylı Dolaylı İşlevsel Bağımlılıklar Sicil No {Personel Adı, Personel Soyadı, Unvan, Birim No} --- Tam {Personel Adı, Personel Soyadı} Unvan --- Dolaylı Birim No {Birim Adı, Birim Yönetici} --- Dolaylı 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.
İ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ı 23 F-16 15 17 UAV 30 21 Göktürk 25 Birim Yönetici Unvan No UnvanAdı 5 Uzman 2 Mühendis 7 Teknisyen
Örnek-3 Normal formlar 1.Normal form Tekrar eden gruplar, anahtar alanla ayrı bir tablo olarak ilk tablodan ayrılırlar Source: Kendall & Kendall (1998), pp. 627, 628.
İ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 Normal formlar 2. Normal Form 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.