Skip to main content

Veritabanını Üçüncü Normal Biçime Dönüştürme (3NF)

PKA 248 Taylors Bathroom Bandit Story, Kyle Hits a teacher, GOP Debates, and more (Nisan 2024)

PKA 248 Taylors Bathroom Bandit Story, Kyle Hits a teacher, GOP Debates, and more (Nisan 2024)
Anonim

Üçüncü normal form (3NF), Birinci Normal Form (1NF) ve İkinci Normal Form (2NF) tarafından sağlanan veri tabanı normalleştirme prensipleri üzerine inşa ederek verilerin bütünlüğünü destekleyen bir veri tabanı ilkesidir.

Üçüncü Normal Form Gereksinimleri

Bir veritabanının üçüncü normal formda olması için iki temel gereksinim vardır:

  • Veri tabanı zaten 1NF ve 2NF'nin gereksinimlerini karşılamalıdır.
  • Tüm veritabanı sütunları birincil anahtara bağlı olmalıdır, yani herhangi bir sütunun değeri yalnızca birincil anahtardan türetilebilir.

Birincil Anahtar Bağımlılığı Hakkında

Tüm sütunların birincil anahtara bağlı olması gerçeği ile kastettiğimiz şeyi daha da keşfedelim.

Bir sütunun değeri hem birincil anahtardan hem de tablodaki başka bir sütundan türetilebilirse, 3NF'yi ihlal eder. Bu sütunlarla bir Çalışan tablosu düşünün:

  • Çalışan kimliği
  • İsim
  • Soyadı

Hem LastName hem de FirstName, yalnızca ÇalışanNo değerine mi bağlı? Peki, LastName FirstName'e bağlı olabilir mi? Hayır, Soyadı’nın doğasında olan hiçbir şey FirstName değerini önerecektir. FirstName, LastName'e bağlı olabilir mi? Bir daha değil, çünkü aynı şey doğrudur: Bir Soyadı ne olursa olsun, İlk Adın değeri hakkında bir ipucu veremez. Bu nedenle, bu tablo 3NF uyumludur.

Ama bu Araçlar tablosunu düşünün:

  • VehicleID
  • Üretici firma
  • model

Üretici ve Model, VehicleID'den kaynaklanabilir - ancak Model, Üretici'den de türetilebilir, çünkü bir araç modeli sadece belirli bir üretici tarafından yapılır. Bu tablo tasarımı 3NF uyumlu değildir ve bu nedenle veri anomalileri ile sonuçlanabilir. Örneğin, modeli güncellemeden ve yanlışlıkları tanımadan üreticiyi güncelleyebilirsiniz.

Uyumlu hale getirmek için, ek bağımlı sütunu başka bir tabloya taşımalı ve bir yabancı anahtar kullanarak başvurmalıyız. Bu iki tabloyla sonuçlanır:

Araçlar Tablosu

Aşağıdaki tabloda, ModelID yabancı bir anahtardır. Modeller tablosu:

  • VehicleID
  • Üretici firma
  • ModelID

Modeller Tablosu

Bu yeni tablo modelleri üreticilere gösteriyor. Bir modele özgü herhangi bir araç bilgisini güncellemek isterseniz, bunu Araç tablosunda değil, bu tabloda yaparsınız.

  • ModelID
  • Üretici firma
  • model

3NF Modelinde Türetilmiş Alanlar

Tablo, türetilmiş bir alan içerebilir - tablodaki diğer sütunlara dayalı olarak hesaplanan bir alan. Örneğin, bu widget widget'larının tablosunu göz önünde bulundurun:

  • Sipariş numarası
  • Müşteri numarası
  • Birim fiyat
  • miktar
  • Genel Toplam

Toplam kırılma 3NF uygunluğu, ünite fiyatının, birincil anahtara tamamen bağımlı olmaktan ziyade, miktar ile çarpılmasıyla elde edilebildiği için. Üçüncü normal forma uygun olarak tablodan çıkarmalıyız.

Aslında, türetildiği için, veritabanında saklamak daha iyidir.

Veritabanı sorguları yaparken "anında" hesaplayabiliriz. Örneğin, sipariş numaralarını ve toplamları almak için daha önce bu sorguyu kullanmış olabiliriz:

SELECT OrderNumber, ToplamDEN WidgetOrders

Şimdi aşağıdaki sorguyu kullanabiliriz:

SELECT SiparişNumarası, BirimFiyatı * Miktar Toplam Toplam WidgetOrders

Normalizasyon kurallarını ihlal etmeden aynı sonuçları elde etmek.