DBMS Normalleştirme: 1NF, 2NF, 3NF Veritabanı Örneği

Veritabanı Normalleştirmesi Nedir?

normalleştirme veri fazlalığını azaltan ve Ekleme, Güncelleme ve Silme Anomalileri gibi istenmeyen özellikleri ortadan kaldıran bir veritabanı tasarım tekniğidir. Normalleştirme kuralları, büyük tabloları daha küçük tablolara böler ve ilişkileri kullanarak bunları birbirine bağlar. SQL'de Normalleştirmenin amacı, gereksiz (tekrarlayan) verileri ortadan kaldırmak ve verilerin mantıksal olarak saklanmasını sağlamaktır.

Mucidi ilişkisel model Edgar Codd, Birinci Normal Formun tanıtılmasıyla verilerin normalleştirilmesi teorisini önerdi ve İkinci ve Üçüncü Normal Form ile teoriyi genişletmeye devam etti. Later Boyce-Codd Normal Form teorisini geliştirmek için Raymond F. Boyce'ye katıldı.

DBMS'deki Normal Form Türleri

SQL'deki Normal Formların listesi:

  • 1NF (İlk Normal Form): Veritabanı tablosunun her sütunun atomik (bölünemez) değerler içermesi ve her kaydın benzersiz olması için düzenlenmesini sağlar. Bu, tekrar eden grupları ortadan kaldırır ve böylece verileri tablolara ve sütunlara yapılandırır.
  • 2NF (İkinci Normal Form): 1NF üzerine kuruludur. Birden çok satıra uygulanan bir tablodaki gereksiz verileri kaldırmamız gerekir. ve bunları ayrı tablolara yerleştiriyoruz. Anahtar olmayan tüm niteliklerin birincil anahtarda tamamen işlevsel olmasını gerektirir.
  • 3NF (Üçüncü Normal Form): Anahtar olmayan tüm niteliklerin yalnızca birincil anahtarda tamamen işlevsel olmasını değil aynı zamanda birbirinden bağımsız olmasını da sağlayarak 2NF'yi genişletir. Bu geçişli bağımlılığı ortadan kaldırır.
  • BCNF (Boyce-Codd Normal Formu): 3NF tarafından ele alınmayan anormallikleri ele alan bir 3NF iyileştirmesi. Her belirleyicinin aday anahtar olmasını gerektirir ve normalizasyon kurallarına daha da sıkı bir şekilde uyulmasını sağlar.
  • 4NF (Dördüncü Normal Form): Çok değerli bağımlılıkları giderir. Bir kayıttaki bir varlık hakkında birden fazla bağımsız, çok değerli gerçeğin bulunmamasını sağlar.
  • 5NF (Beşinci Normal Form): “Projeksiyon-Birleştirme Normal Formu” (PJNF) olarak da bilinen bu form, bilgilerin daha küçük, farklı düzenlenmiş veri parçalarından yeniden yapılandırılmasıyla ilgilidir.
  • 6NF (Altıncı Normal Form): Teoriktir ve yaygın olarak uygulanmamaktadır. Zamansal olmayan tüm fazlalıkları ortadan kaldırmak için tabloları daha da ayrıştırarak zamansal verilerle (zaman içindeki değişiklikleri ele alarak) ilgilenir.

Veri Normalleştirme Teorisi MySQL sunucu halen geliştirilmeye devam etmektedir. Mesela 6’da bile tartışmalar var.th Olağan Biçim. Ancak çoğu pratik uygulamada normalizasyon en iyi şekilde 3 adımda elde edilir:rd normal biçim. SQL teorilerinde Normalleştirmenin evrimi aşağıda gösterilmektedir:

Veritabanı Normal Formları
Veritabanı Normal Formları

Örneklerle Veritabanı Normalleştirmesi

veritabanı Normalleştirme Örneği bir vaka çalışması yardımıyla kolayca anlaşılabilir. Bir video kütüphanesinin kiralanan filmlerden oluşan bir veritabanı tuttuğunu varsayalım. Veritabanında herhangi bir normalleştirme yapılmadan tüm bilgiler aşağıda gösterildiği gibi tek bir tabloda saklanır. Çözümlü normalleştirme örneğiyle Normalleştirme veritabanını anlayalım:

Örnekle Veritabanı Normalleştirmesi

İşte görüyorsun Kiralanan Filmler sütununda birden fazla değer var. Şimdi 1. Normal Formlara geçelim:

İlk Normal Form (1NF)

  • Her tablo hücresi tek bir değer içermelidir.
  • Her kaydın benzersiz olması gerekir.

1NF-'deki yukarıdaki tablo

1NF Örneği

1NF Kuralları

DBMS'de 1NF örneği

Devam etmeden önce birkaç şeyi anlayalım —

SQL'de ANAHTAR nedir

A SQL'de ANAHTAR Bir tablodaki kayıtları benzersiz şekilde tanımlamak için kullanılan bir değerdir. SQL KEY, tablodaki satırları veya dizileri benzersiz şekilde tanımlamak için kullanılan tek bir sütun veya birden çok sütunun birleşimidir. SQL Key, yinelenen bilgileri tanımlamak için kullanılır ve aynı zamanda veritabanındaki birden çok tablo arasında ilişki kurulmasına da yardımcı olur.

Not: Bir tablodaki bir kaydı benzersiz şekilde tanımlamak için KULLANILMAYAN sütunlara anahtar olmayan sütunlar denir.

Birincil Anahtar nedir?

Birincil anahtar

DBMS'de Birincil Anahtar

Birincil, bir veritabanı kaydını benzersiz şekilde tanımlamak için kullanılan tek bir sütun değeridir.

Aşağıdaki özelliklere sahiptir

  • A birincil anahtar Boş olamaz
  • Birincil anahtar değeri benzersiz olmalıdır
  • Birincil anahtar değerleri nadiren değiştirilmelidir
  • Yeni bir kayıt eklendiğinde birincil anahtara bir değer verilmesi gerekir.

Bileşik Anahtar Nedir?

Bileşik anahtar, bir kaydı benzersiz şekilde tanımlamak için kullanılan, birden çok sütundan oluşan bir birincil anahtardır

Veritabanımızda aynı isimde Robert Phil olan iki kişi var ama farklı yerlerde yaşıyorlar.

Veritabanındaki bileşik anahtar

Veritabanındaki bileşik anahtar

Bu nedenle, bir kaydı benzersiz bir şekilde tanımlamak için hem Tam Ad hem de Adrese ihtiyacımız var. Bu bileşik bir anahtardır.

İkinci normal form olan 2NF'ye geçelim

İkinci Normal Form (2NF)

  • Kural 1- 1NF'de olun
  • Kural 2- Aday anahtar ilişkisinin herhangi bir alt kümesine işlevsel olarak bağlı olmayan Tek Sütunlu Birincil Anahtar

Basit veritabanımızı 2'de oluşturmak için ilerleyemeyeceğimiz açıktır.nd Yukarıdaki tabloyu bölümlendirmediğimiz sürece normalleştirme formu.

2NF Kuralları

2NF Kuralları

1NF tablomuzu iki tabloya böldük, yani Tablo 1 ve Tablo 2. Tablo 1 üye bilgilerini içerir. Tablo 2 kiralanan filmlerle ilgili bilgileri içerir.

Tablo 1'in birincil anahtarı olan Membership_id adında yeni bir sütun ekledik. Kayıtlar, Tablo 1'de üyelik kimliği kullanılarak benzersiz bir şekilde tanımlanabilir.

Veritabanı – Yabancı Anahtar

Tablo 2'de Membership_ID Yabancı Anahtardır

Veritabanı – Yabancı Anahtar

Veritabanı – Yabancı Anahtar

DBMS'de Yabancı Anahtar

Yabancı Anahtar başka bir Tablonun birincil anahtarına başvuruyor! Tablolarınızı bağlamanıza yardımcı olur

  • Yabancı anahtar, birincil anahtarından farklı bir ada sahip olabilir
  • Bir tablodaki satırların diğerinde karşılık gelen satırlara sahip olmasını sağlar
  • Birincil anahtarın aksine benzersiz olmaları gerekmez. Çoğu zaman değiller
  • Birincil anahtarlar boş olmasa bile yabancı anahtarlar boş olabilir

Veritabanı – Yabancı Anahtar

Neden yabancı bir anahtara ihtiyacınız var?

Bir aceminin Tablo B'ye aşağıdaki gibi bir kayıt eklediğini varsayalım:

Neden Yabancı Anahtara ihtiyacınız var?

Yabancı anahtarınıza yalnızca ana tablodaki benzersiz anahtarda bulunan değerleri ekleyebileceksiniz. Bu, referans bütünlüğüne yardımcı olur.

Yukarıdaki sorun, Tablo2'deki üyelik kimliğinin Tablo1'deki üyelik kimliğinin yabancı anahtarı olarak bildirilmesiyle aşılabilir.

Artık birisi üyelik kimliği alanına ana tabloda bulunmayan bir değer eklemeye çalışırsa bir hata gösterilecektir!

Geçişli işlevsel bağımlılıklar nelerdir?

Geçişli işlevsel bağımlılık anahtar olmayan bir sütunu değiştirirken diğer anahtar olmayan sütunların da değişmesine neden olabilir

Tablo 1'i inceleyin. Anahtar olmayan sütun Tam Adını değiştirmek Selamlamayı değiştirebilir.

Geçişli işlevsel bağımlılıklar

3NF'e geçelim

Üçüncü Normal Form (3NF)

  • Kural 1- 2NF'de olun
  • Kural 2- Geçişli işlevsel bağımlılıkları yoktur

2NF tablomuzu 3NF'e taşımak için yine tablomuzu bölmemiz gerekiyor.

3NF Örneği

Aşağıda SQL veritabanındaki bir 3NF örneği verilmiştir:

3NF Örneği

3NF Örneği

3NF Örneği

Tablolarımızı yeniden böldük ve Selamlamaların saklandığı yeni bir tablo oluşturduk.

Geçişli işlevsel bağımlılıklar yoktur ve dolayısıyla tablomuz 3NF'dedir

Tablo 3'te Selamlama Kimliği birincil anahtardır ve Tablo 1'de Selamlama Kimliği, Tablo 3'teki birincil anahtara yabancıdır

Şimdi küçük örneğimiz, DBMS'de daha yüksek normal form tiplerinde normalizasyon elde etmek için daha fazla ayrıştırılamayacak bir seviyededir. Aslında, zaten daha yüksek normalizasyon formlarındadır. Karmaşık veritabanlarında, normalleştirme verilerinin bir sonraki seviyelerine geçmek için ayrı çabalar normalde gereklidir. Ancak, aşağıda DBMS'de bir sonraki normalizasyon seviyelerini kısaca tartışacağız.

Boyce-Codd Normal Formu (BCNF)

Bir veritabanı 3'te olsa bilerd Normal Form, birden fazla olması halinde yine anormallikler ortaya çıkacaktır. Aday Anahtar.

Bazen BCNF şu şekilde de anılır: 3.5 Normal Form.

Dördüncü Normal Form (4NF)

Hiçbir veritabanı tablosu örneği, ilgili varlığı tanımlayan iki veya daha fazla bağımsız ve çok değerli veri içermiyorsa, o zaman 4'tedir.th Olağan Biçim.

Beşinci Normal Form (5NF)

5'te bir masa varth Normal Form yalnızca 4NF'deyse ve veri kaybı olmadan herhangi sayıda daha küçük tabloya ayrıştırılamazsa.

Altıncı Normal Form (6NF) Önerilen

6th Normal Form henüz standartlaştırılmamış ancak bir süredir veritabanı uzmanları tarafından tartışılıyor. Umarız 6 için net ve standartlaştırılmış bir tanıma sahip oluruz.th Yakın gelecekte Normal Form…

Normal Formun Avantajları

  • Veri Tutarlılığını Artırın: Normalleştirme, her veri parçasının yalnızca tek bir yerde saklanmasını sağlayarak tutarsız veri olasılığını azaltır. Veriler güncellendiğinde tutarlılığın sağlanması için yalnızca tek bir yerde güncellenmesi gerekir.
  • Veri Artıklığını Azaltın: Normalleştirme, yinelenen verileri birden fazla ilgili tabloya bölerek ortadan kaldırmaya yardımcı olur. Bu, depolama alanından tasarruf edebilir ve aynı zamanda veritabanını daha verimli hale getirebilir.
  • Sorgu Performansını Artırın: Normalleştirilmiş veritabanlarının sorgulanması genellikle daha kolaydır. Veriler mantıksal olarak organize edildiğinden sorgular daha hızlı çalışacak şekilde optimize edilebilir.
  • Verileri Daha Anlamlı Hale Getirin: Normalleştirme, verileri anlamlı ve sezgisel bir şekilde gruplamayı içerir. Bu, özellikle veritabanını tasarlamayan kişiler için veritabanının anlaşılmasını ve kullanılmasını kolaylaştırabilir.
  • Anormallik Olasılığını Azaltın: Anormallikler, veri eklerken, güncellerken veya silerken oluşabilecek sorunlardır. Normalleştirme, verilerin mantıksal olarak düzenlenmesini sağlayarak bu anormalliklerin olasılığını azaltabilir.

Normalleştirmenin Dezavantajları

  • Artan Karmaşıklık: Normalizasyon karmaşık ilişkilere yol açabilir. Yabancı anahtarlara sahip çok sayıda tablonun yönetilmesi zor olabilir ve bu da karışıklığa yol açabilir.
  • Azaltılmış Esneklik: Normalleştirmenin katı kuralları nedeniyle, bu kurallara uymayan verilerin depolanmasında daha az esneklik söz konusu olabilir.
  • Artan Depolama Gereksinimleri: Normalleştirme yedekliliği azaltırken, ek tablo ve dizinlere uyum sağlamak için daha fazla depolama alanı ayırmak gerekebilir.
  • Performans Yükü: Birden fazla tabloyu birleştirmek performans açısından maliyetli olabilir. Veriler ne kadar normalleştirilirse, o kadar fazla birleştirmeye ihtiyaç duyulur ve bu da veri alma sürelerini yavaşlatabilir.
  • Veri Bağlamının Kaybı: Normalleştirme, verileri ayrı tablolara böler ve bu da iş bağlamının kaybına neden olabilir. İlgili tabloların incelenmesi bir verinin bağlamını anlamak için gereklidir.
  • Uzman Bilgisi İhtiyacı: Normalleştirilmiş bir veritabanının uygulanması, verilerin, veriler arasındaki ilişkilerin ve normalleştirme kurallarının derinlemesine anlaşılmasını gerektirir. Bu, uzman bilgisi gerektirir ve zaman alıcı olabilir.

SQL Normalleştirmenin hepsi bu kadar!!!

Sonuç

  • Veritabanı tasarımı kurumsal sistemin veri gereksinimlerini karşılayan bir veritabanı yönetim sisteminin başarılı bir şekilde uygulanması için kritik öneme sahiptir.
  • DBMS'de normalleştirme, uygun maliyetli ve daha iyi güvenlik modellerine sahip veritabanı sistemlerinin üretilmesine yardımcı olan bir süreçtir.
  • İşlevsel bağımlılıklar normalleştirme veri sürecinin çok önemli bir bileşenidir
  • Çoğu veritabanı sistemi, DBMS'deki üçüncü normal formlara kadar normalleştirilmiş veritabanıdır.
  • Birincil anahtar, bir Tablodaki kaydı benzersiz şekilde tanımlar ve boş olamaz
  • Yabancı anahtar tabloyu bağlamaya yardımcı olur ve birincil anahtara referans verir