**Üçüncü normal form** (**3NF**), verilerin tekrarlanmasını azaltmak, veri anormalliklerini önlemek, bilgi bütünlüğünü sağlamak ve veri yönetimini basitleştirmek için normalleştirme ilkelerini kullanan ilişkisel veritabanları için bir veritabanı şeması tasarım yaklaşımıdır. Veritabanı yönetimi için ilişkisel modeli icat eden İngiliz bilgisayar bilimcisi Edgar F. Codd tarafından 1971 yılında tanımlandı.

Bir veritabanı ilişkisinin (örneğin bir veritabanı tablosu), tüm özniteliklerin (örneğin veritabanı sütunları) işlevsel olarak yalnızca birincil anahtara bağlı olması durumunda üçüncü normal biçim standartlarını karşıladığı söylenir. Codd bunu, tüm asal olmayan özniteliklerin yalnızca aday anahtarlara bağlı olduğu ve başka bir anahtara geçişli bir bağımlılığın olmadığı ikinci normal biçim kriterlerine uyan bir ilişki olarak tanımladı.

Üçüncü normal formu karşılamamanın varsayımsal bir örneği, hasta tablosunda hastanın doktorunun telefon numarasını da içeren bir hastane veri tabanı olabilir. Telefon numarası hastadan çok doktora bağlıdır, bu nedenle bir doktor tablosunda saklanması daha iyi olur. Hasta tablosunda doktor telefon numarası bulunan bir tasarımda, birden fazla hastası olan bir doktor numarasının veri tabanında tekrar etmesi ve böylece hem girdi hatası olasılığını hem de numaranın değişmesi durumunda ilgili tüm kayıtlarda güncelleme yapılması maliyetini ve riskini arttırmasıdır.

Codd daha sonra 3NF'nin tüm istenmeyen veri anormalliklerini ortadan kaldırmadığını fark etti ve bunu çözmek için 1974'te Boyce – Codd normal formu (BCNF) olarak bilinen daha güçlü bir versiyon geliştirdi.

Üçüncü normal formun tanımı
---------------------------

Üçüncü normal form (3NF), veritabanı normalleştirmesinde kullanılan normal bir formdur. 3NF ilk olarak 1971'de E. F. Codd tarafından tanımlanmıştır.

Codd'un tanımı, ancak ve ancak aşağıdaki koşulların her ikisi de geçerliyse bir tablonun 3NF'de olduğunu belirtir:

* İkinci normal form (2NF) kriterlerini karşılaması.
* R'nin asal olmayan her özniteliğinin geçişli olmayan bir şekilde R'nin her anahtarına bağlı olması.

R'nin *asal olmayan* bir *özelliği, herhangi bir* aday anahtarda olmayan bir özellktir. Eğer X --> Y ve R’nin herhangi bir anahtarının altkümesi olmayan nitelikler kümesi Z söz konusu ise, X --> Y ve Y --> Z birlikte geçerli olmamalıdır.

Codd'un tanımına eşdeğer olan ancak farklı bir şekilde ifade edilen bir 3NF tanımı, 1982 yılında Carlo Zaniolo tarafından verildi. Bu tanım, bir tablonun, ancak ve ancak, *X* → *A* işlevsel bağımlılıklarının her biri için aşağıdaki koşullardan en az biri geçerliyse 3NF'de olduğunu belirtir:[*Alıntı gerek*]

* *X*, *A'yı* içerirse (yani, *A*, *X'in* bir alt kümesidir, yani *X* → *A*, önemsiz işlevsel bağımlılıktır)
* *X* bir süper anahtarsa
* *A* \ *X'in* her elemanı, *A* ve X arasındaki fark, bir *asal öznitelikse* (yani, *A* \ *X'deki* her öznitelik bazı aday anahtarda bulunursa).

Zaniolo'nun tanımı, 3NF ile daha katı Boyce – Codd normal formu (BCNF) arasındaki farkın net bir şekilde anlaşılmasını sağlar. BCNF, üçüncü alternatifi ortadan kaldırır (" *A* \ *X'in* her öğesi, *A* ve *X* arasındaki fark, bir asal özniteliktir." ).

"Anahtarın" varlığını zorunlu kılmak, tablonun 1NF'de olmasını sağlar; anahtar olmayan özniteliklerin "tüm anahtara" bağlı olmasını zorunlu kılmak 2NF'de olmasını sağlar; ayrıca anahtar olmayan özniteliklerin "anahtardan başka hiçbir şeye bağımlı olmamasını" gerektirmesi, 3NF'yi garanti eder. Bu cümle yararlı bir anımsatıcı olsa da, sadece tek bir anahtardan bahsediyor olması, 2. ve 3. normal formları sağlamak için bazı gerekli ancak yeterli olmayan koşulları tanımladığı anlamına gelir. Hem 2NF hem de 3NF, herhangi bir anahtarla değil, bir tablonun *tüm* aday anahtarlarıyla eşit derecede ilgilidir.

3NF'nin gereksinimlerini karşılamayan bir 2NF tablosu örneği: 

Turnuva kazananları| Turnuva | Yıl | kazanan | Kazananın doğum tarihi |
| --- | --- | --- | --- |
| Indiana Invitational | 1998 | Al Fredrickson | 21 Temmuz 1975 |
| Cleveland Open | 1999 | Bob Albertson | 28 Eylül 1968 |
| Des Moines Masters | 1999 | Al Fredrickson | 21 Temmuz 1975 |
| Indiana Invitational | 1999 | Chip Masterson | 14 Mart 1977 |

Tablodaki her satırın, belirli bir Yılda belirli bir Turnuvayı kimin kazandığını bize bildirmesi gerektiğinden, bileşik anahtar {Turnuva, Yıl}, bir satırı benzersiz şekilde tanımlamak için garanti edilen minimum bir özellik kümesidir. Yani, {Turnuva, Yıl} tablo için aday bir anahtardır.

3NF ihlali, birincil olmayan bir nitelik olan Kazananın doğum tarihinin, birinci olmayan özellik Kazanan aracılığıyla {Turnuva, Yıl} aday anahtarına geçişli olarak bağlı olması nedeniyle oluşur. Kazananın doğum tarihi sütununun işlevsel olarak Kazanan sütununa bağlı olması, aynı kişinin farklı kayıtlarda farklı doğum tarihleriyle gösterilmesini engelleyecek bir şey olmadığı için tabloyu mantıksal tutarsızlıklara açık hale getirir.

Aynı gerçekleri 3NF'yi ihlal etmeden ifade etmek için tabloyu ikiye bölmek gerekir: 

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

Turnuva kazananları| Turnuva | Yıl | kazanan |
| --- | --- | --- |
| Indiana Invitational | 1998 | Al Fredrickson |
| Cleveland Open | 1999 | Bob Albertson |
| Des Moines Masters | 1999 | Al Fredrickson |
| Indiana Invitational | 1999 | Chip Masterson |

 | 

Kazananların doğum tarihleri| kazanan | Doğum tarihi |
| --- | --- |
| Chip Masterson | 14 Mart 1977 |
| Al Fredrickson | 21 Temmuz 1975 |
| Bob Albertson | 28 Eylül 1968 |

 |

Bu tablolarda güncelleme anormallikleri oluşamaz, çünkü öncekinden farklı olarak, Kazanan artık ikinci tabloda bir aday anahtardır ve böylece her Kazanan için doğum tarihi yalnızca bir değere referans verir.

Ayrıca bakınız
--------------

* Birinci normal form
* İkinci normal form
* Boyce–Codd normal formu

Kaynakça
--------

1. ↑  Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34.
2. ↑  Codd, E. F. "Further Normalization of the Data Base Relational Model". (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, May 24–25, 1971.) IBM Research Report RJ909 (August 31, 1971). Republished in Randall J. Rustin (ed.), *Data Base Systems: Courant Computer Science Symposia Series 6*. Prentice-Hall, 1972.
3. ↑  Codd, p. 43.
4. ↑  Codd, p. 45–46.
5. ↑  Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata". *ACM Transactions on Database Systems* 7(3), September 1982.
6. ↑  Abraham Silberschatz, Henry F. Korth, S. Sudarshan, *Database System Concepts 3 Ağustos 2020 tarihinde Wayback Machine sitesinde arşivlendi.* (5th edition), p. 276–277.

Dış bağlantılar
---------------

* Litt'in İpuçları: Normalleştirme10 Şubat 2007 tarihinde Wayback Machine sitesinde arşivlendi.
* Mike Chapple Tarafından Veritabanı Normalleştirme Temelleri5 Şubat 2007 tarihinde Wayback Machine sitesinde arşivlendi. (About.com)
* Mike Hillyer tarafından Veritabanı Normalizasyonuna Giriş4 Ağustos 2020 tarihinde Wayback Machine sitesinde arşivlendi. .
* Fred Coulson tarafından ilk 3 normal form üzerine bir eğitim15 Temmuz 2011 tarihinde Wayback Machine sitesinde arşivlendi.
* Microsoft tarafından veritabanı normalleştirme temellerinin açıklaması10 Şubat 2007 tarihinde Wayback Machine sitesinde arşivlendi.
* ExplorDatabase ile Basit Örneklerle Üçüncü Normal Form5 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.