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ı:
- 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üğü)
- 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 |

3. normal form nerede kullanılır acaba
En kısa cevapla, veri tabanı tasarımında bir ilişkisel veri tabanının normalleştirilmesinde (normalisation) kullanılan standardın ismidir.
Bu sayede, veri tabanında gereksiz bilgi tekrarları engellenecek, veri tabanındaki veri miktarı sonsuza giderken verinin daha verimli tutulması sağlanacaktır.
Örneğin yukarıda verilen örnekte, dersin kredisinin ayrı bir tabloda tutulması sayesinde JAVA dersinin kredisi sadece 1 kere veri tabanında tutulmaktayken, 3. normal şekle getirilmemiş bir önceki örnekte bu bilgi 2 kere tekrarlanmaktadır.