Üçü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ı.Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34. Üçü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, 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. 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.Codd, p. 43. 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, p. 45–46. 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:Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata". ACM Transactions on Database Systems 7(3), September 1982.Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts (5th edition), p. 276–277. * 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: {| class="wikitable" _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 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 == == Dış bağlantılar == * Litt'in İpuçları: Normalleştirme * Mike Chapple Tarafından Veritabanı Normalleştirme Temelleri (About.com) * Mike Hillyer tarafından Veritabanı Normalizasyonuna Giriş . * Fred Coulson tarafından ilk 3 normal form üzerine bir eğitim * Microsoft tarafından veritabanı normalleştirme temellerinin açıklaması * ExplorDatabase ile Basit Örneklerle Üçüncü Normal Form Kategori:Veritabanları Kategori:Veri modelleme