Üçüncü normal şekil (Third Normal Form, 3NF)


Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerinde, veri tabanı teorisinde, bir veri tabanının daha verimli tutulması için geliştirilen şeklin ismidir. Bu şekil birinci ve ikinci normal şekillere göre daha başarılı çalışmayı hedefler.Unutulmamalıdır ki normal şekillerin hepsinde hedeflenen öncelikli performans, hafızanın daha verimli kullanılmasıdır. Hız için bazı durumlarda normal şekillerin dışına çıkılabilir.

Üçüncü normal şeklin, üzerine inşa edildiği mantık aslında matematikteki işlemlerde bulunan geçişlilik özelliğidir. Bu terim veritabanı teorisinde fonksiyonel bağımlılık (Functional Dependency) olarak isimlendirilmektedir ve kast edilen fonksiyonel bağımlılıkların geçişliliğidir.

Bu noktada hatırlanacağı üzere bir tablodaki aday anahtarın (candidate key) çıkarılması sırasında kritik olan husus, bu anahtarın tabloyu ifade etme kabiliyetidir. Şimdi aşağıdaki şekilde iki farklı anahtarın diğer anahtarları ifade etme kabiliyetlerini listeleyelim:

X → Y

Y → Z

Yukarıdaki bu gösterimlerin anlamı, X anahtarının Y’yi ve Y anahtarının da Z’yi ifade edebildiğidir. Diğer bir terimle fonksiyonel olarak bağlı olması durumudur.

Bu iki fonksiyonel bağlılık arasında geçişlilik özelliği (transitive property) kullanılırsa aslında

X → Z

Sonucuna da varılabilir.

İşte tam bu noktada üçüncü normal şekil devreye girer ve der ki bir veri tabanının üçüncü normal şekilde olması için veritabanında bulunan anahtarların birbirine fonksiyonel olarak bağlı olması gerekir. Bu bağlılık ya doğrudan ya da geçişlilik özelliği sayesinde olmalıdır.

Üçüncü normal şeklin diğer bir kuralı da bu şekilde olan veritabanlarının aynı zamanda ikinci normal şekilde (second normal form) olma zorunluluğudur.

Kısaca 3. normal şekildeki bir veritabanı:

  1. Anahtarlarının birbirine fonksiyonel bağlı olduğu (doğrudan veya geçişlilik özelliği ile) ve Geçişli bağlılığın bulunmadı (bütün bağlantıların non-transitive olduğu tablolara bölündüğü)
  2. Veri tabanındaki ilişkilerin 2. normal şekilde olduğu

veri tabanıdır diye tanımlanabilir.

Örneğin aşağıdaki ikinci normal şekilde bulunan tabloyu ele alalım:

Öğrenci Adı Doğum Tarihi Dersin Adı Dersin Kredisi
Ali 1980 JAVA 3
Rana 2007 Matematik 4
Elif 1980 Biyoloji 3
Veli 1979 JAVA 3

Yukarıdaki bu tablo ikinci normal şekildedir ancak üçüncü normal şekle uymamaktadır. Öncelikle bu tabloda, bütün tabloyu ifade etmeye yarayan aday anahtar olarak “Öğrenci Adı” ve “Doğum Tarihi” kolonlarının birleşimini düşünebiliriz. Bu aday anahtar’a fonksiyonel olarak bağlı olan “Dersin Adı” ve  “Dersin Kredisi” kolonları da kendi aralarında fonksiyonel olarak bağlıdırlar. Yani tablomuzdaki fonksiyonel bağımlılıkları aşağıdaki şekilde ifade etmek mümkündür:

{Öğrenci Adı, Doğum Tarihi} → Dersin Adı

Dersin Adı → Dersin Kredisi

Yukarıdaki bu bağımlılıklardan yola çıkarak {Öğrenci Adı, Doğum Tarihi} aday anahtarının Dersin kredisini ifade edebileceğini söyleyebiliriz. Ancak bu durumda Dersin Adı ve Dersin Kredisi kolonları arasında bir veri bütünlüğü sorunu doğmaktadır.

Dolayısıyla yukarıdaki fonksiyonel bağlılıkları çıkardıktan sonra aşağıdaki şekilde iki tabloya dönüştürmek veri tabanımızı üçüncü normal şekle getirecektir:

Öğrenci Adı Doğum Tarihi Dersin Adı
Ali 1980 JAVA
Rana 2007 Matematik
Elif 1980 Biyoloji
Veli 1979 JAVA

Ve ikinci bir tabloda da:

Dersin Adı Dersin Kredisi
JAVA 3
Matematik 4
Biyoloji 3


« Taklit (Masquerade)   |   BCNF (Boyce Codd Normal Form) »



Yorumlar

Kullanıcı girişi yaparak ya da zorunlu olan * alanlarını doldurarak yorum yapabilirsiniz.

İsminiz *

Email adresiniz *

Web siteniz

Mesajınızı buraya yazabilirsiniz:

Bu Yazı Hakkında

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Üçüncü normal şekil (Third Normal Form, 3NF)' isimli yazı 05 Mar 2009 tarihinde, saat: 01:43 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 1000 defa okunmuştur.

Benzer yazıları Veri Tabanı (Database) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Yazarın Kitabı

Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
Yapılan Son Yorumlar
Yakın Yazılar
Bağlantılar