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

DBMS Normalizasyonu

Normalleşmenin Özeti

Normalizasyon, yedekliliği azaltmak ve tutarlılığı artırmak için bir veritabanını yapılandırma sürecidir. Basitçe söylemek gerekirse, büyük ve karmaşık tabloları daha küçük ve iyi organize edilmiş tablolara böler. Bu, verilerin mantıksal olarak depolanmasını sağlayarak veritabanlarının verimli, bakımı kolay ve tekrarlardan veya hatalardan arınmış olmasını sağlar.

Veritabanı Normalleştirmesi Nedir?

Veritabanı 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ı.

Neden Normalleşmeye İhtiyaç Duyuyoruz?

Normalizasyon olmadan veritabanları hızla tutarsız ve gereksiz hale gelir. ekleme anomalileri (eksik kayıtlar eklenemez), güncelleme anomalileri (bir yerdeki değişiklikler her yere yansımaz) ve silme anomalileri (Verilerin yanlışlıkla silinmesi değerli bilgilerin silinmesine neden olur) sıklıkla meydana gelir. Normalizasyon bu sorunları ortadan kaldırarak veri bütünlüğünü garanti altına alır, tekrarları azaltır ve veritabanı yönetimini basitleştirir.

DBMS'de Normal Form Türleri Nelerdir?

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…

Normalizasyonun Avantajları Nelerdir?

  • 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.

Normalizasyonun Dezavantajları Nelerdir?

  • 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!!!

SSS

VTYS'de normalizasyon, yedekliliği azaltmak ve veri bütünlüğünü iyileştirmek için bir veritabanındaki verileri düzenleme sürecidir. Büyük tabloları daha küçük, ilişkili tablolara ayırmayı ve aralarındaki ilişkileri tanımlamayı içerir. Bu, verilerin mantıksal ve tutarlı bir şekilde depolanmasını sağlayarak, anormallikleri önlerken güncelleme, ekleme ve silme işlemlerini daha verimli hale getirir.

Veri normalizasyonu, tekrarları önlemek için veritabanı tablolarını yapılandırır. Örneğin, bir müşterinin adresini her sipariş kaydında saklamak yerine, normalizasyon müşteri bilgilerini bir anahtarla bağlantılı ayrı bir "Müşteri" tablosuna yerleştirir. Bu, gereksiz tekrarları azaltır; böylece bir adres değişse bile yalnızca bir kez güncellenir. Sonuç, doğru ve tutarlı verilere sahip, daha temiz ve daha verimli bir veritabanıdır.

Normalizasyonun amacı, gereksiz verileri ortadan kaldırmak, anormallikleri en aza indirmek ve veritabanı verimliliğini sağlamaktır. İlgili bilgileri düzenli tutarak bakımı kolaylaştırır, depolama israfını azaltır ve veri tutarlılığını sağlar. Normalizasyon ayrıca, verileri mantıksal olarak yapılandırarak sorgu performansını artırır ve geliştiricilerin ve kullanıcıların yinelenen veya çakışan girdilerle uğraşmadan doğru bilgilere erişmesini sağlar.

Üçüncü Normal Form (3NF), anahtar olmayan her özniteliğin yalnızca birincil anahtara bağlı olmasını ve diğer anahtar olmayan özniteliklere bağlı olmamasını sağlayan bir normalleştirme aşamasıdır. Örneğin, bir çalışan tablosunda "Departman Adı", "Departman Kimliği"ne bağlı kalmak yerine bir departman tablosuna ayrılmalıdır. Bu, geçişli bağımlılıkları önleyerek veri yönetiminde doğruluk, tutarlılık ve verimlilik sağlar.

ÖZET

  • 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