Üçüncü normal form

Üçü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.

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.

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.

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.

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.