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