Veritabanı Normalizasyonu ve Disk Kullanımına Etkisi

Yusuf Sonmez
Bentego Teknoloji
Published in
4 min readJun 27, 2024

Veritabanı normalizasyonu, ilişkisel veritabanı tasarımında önemli bir süreçtir. Bu süreç, verilerin tekrarlanmasını azaltmak ve veri bütünlüğünü artırmak için verilerin düzenlenmesini içerir. Bu makalede, normalizasyonun gerekliliği, tarihsel arka planı ve üç ana normal form (1NF, 2NF ve 3NF) adımlarını inceleyeceğiz. Ayrıca, elektrikli arabalar ve sensörler içeren bir örnek kullanarak normalizasyon işlemini gösterecek ve disk kullanımına etkisini analiz edeceğiz.

Normalizasyon Neden Gereklidir?

Normalizasyon, birkaç sebepten dolayı gereklidir:

Tekrarı Ortadan Kaldırma: Tutarsızlıklara ve artan depolama maliyetlerine yol açabilir. Veritabanını normalize ederek, çoğaltmayı azaltır ve her bir veri parçasının yalnızca bir kez saklanmasını sağlarız.

Veri Bütünlüğünü Artırma: Verilerin doğru ve tutarlı olması hayati önem taşır. Normalizasyon, veri varlıkları arasındaki ilişkileri tanımlayarak veri bütünlüğünü sağlamaya yardımcı olur.

Sorgu Performansını İyileştirme: İyi yapılandırılmış bir veritabanı, veri alma işlemlerinin verimliliğini önemli ölçüde artırabilir.

Bakımı Kolaylaştırma: Normalleştirilmiş veritabanları, verileri güncellemek ve bakımını yapmak daha kolaydır çünkü veri yapısındaki değişiklikler yerelleştirilmiştir ve tüm veritabanını etkilemez. Özellikle silme, güncelleme gibi işlemler de çıkabilecek sorunlar büyük oranda azaltılmış olur.

Normal Formlar

Normalizasyonun her bir kuralı yani seviyeleri normal form olarak adlandırılır. Bu seviyeler gereksiz veri tekrarlarını ne derecede engellediği ve tutarlılığı ne kadar sağladığına bağlı olarak derecelendirilir. Seviye yükseldikçe veri tutarlılığı artar, veri tekrarı düşer.

Normalizasyon seviyeleri 1NF (Birinci Normal Form), 2NF, 3NF, BCNF(Boyce-Codd Normal Form, 3.5NF’de denir), 4NF şeklinde adlandırılır ve yukarı doğru devam eder. Bu yazıda 3nfe kadar göstereceğim.

UDF(Normal Olmayan Form)

Bir veya daha fazla tekrarlanan tekrarlanan gruplar içeren 2 boyutlu olmayan tablolardır.

Bu tabloda, sensör değeri kolonunda birden fazla değer vardır. Aracın sensör değerlerini ayrı ayrı farklı satırlarda yazmayıp , her veri geldiğinde kolon güncellenmiş.

Birinci Normal Form (1NF)

Bir tablo, aşağıdaki şartları sağlıyorsa 1NF’dedir:

Tüm sütunlar atomik (bölünemez) değerler içerir.
Her sütun tek bir tür değer içerir.
Her sütun benzersiz bir isim içerir.
Verilerin saklandığı sıra önemli değildir.

Örnek: Başlangıç Tablo Yapısı

Bu tablo bu haliyle 1NF’dedir çünkü tüm değerler atomik ve her sütun tek bir tür veri içerir.

İkinci Normal Form (2NF)

Bir tablo, aşağıdaki şartları sağlıyorsa 2NF’dedir:

1NF’dedir.
Tüm anahtar olmayan öznitelikler, birincil anahtara tam olarak bağımlıdır.

Örnek: 1NF’den 2NF’ye

2NF’ye ulaşmak için, tüm anahtar olmayan özniteliklerin birincil anahtara tam olarak bağımlı olduğunu sağlamamız gerekir.
Bizim örneğimiz için araba ve sensör tablosu yapıp, araba id yi sensör tablosuna key olarak eklemeliyiz.

Üçüncü Normal Form (3NF)

Bir tablo, aşağıdaki şartları sağlıyorsa 3NF’dedir:

2NF’dedir.
Tüm öznitelikler yalnızca birincil anahtara fonksiyonel olarak bağımlıdır.

Örnek: 2NF’den 3NF’ye

Bizim tablolarımız için, Bir tablo daha oluşturup bu tabloda en çok tekrar eden verileri sadece keyler ile göstereceğiz. Araba , sensör ve araba_sensör tabloları olacak.

Disk Kullanımına Etkisi

Normalizasyon, disk kullanımını önemli ölçüde etkileyebilir. Bu durumu bir örnekle açıklayalım:

Normalizasyon Olmadan:

Diyelim ki her biri 5 sensöre sahip 1000 araba var ve her sensör 3 özelliğe sahip (Sensör_Türü, Sensör_Değeri, Araba_ID).

Toplam satır: 1000 araba * 5 sensör = 5000 satır.

Satır başına toplam sütun: 8 (Araba_ID, Marka, Model, Motor, Renk, Sensör_ID, Sensör_Türü, Sensör_Değeri).

Yaklaşık depolama: 5000 satır * 8 sütun * 100 bayt = 4,000,000 bayt (4 MB).

Normalizasyon ile (3NF):

Araba Tablosu: 1000 satır * 5 sütun * 100 bayt = 500,000 bayt (0.5 MB).

Sensör Tablosu: 5000 satır * 3 sütun * 100 bayt = 1,500,000 bayt (1.5 MB).

Araba_Sensör Tablosu: 5000 satır * 2 sütun * 100 bayt = 1,000,000 bayt (1 MB).

Toplam depolama: 0.5 MB + 1.5 MB + 1 MB = 3 MB.

Normalizasyon, verileri verimli bir şekilde organize ederek ve tekrarlamayı ortadan kaldırarak disk kullanımını azaltır. Bu örnekte 4Mbtan 3Mb’a düşüyor. Bunu daha fazla veride düşünelim.Disk kullanımımız 4 PetaByte’dan 3PetaByte’a düşecek. Daha karmaşık veri tabanlarında daha da fazla disk avantajı sağlayabiliriz.

Sonuç

Veritabanı normalizasyonu, veritabanlarının verimli, güvenilir ve bakımının kolay olmasını sağlamak için temel bir süreçtir. 1NF, 2NF ve 3NF ilkelerine uyarak veri bütünlüğünü sağlayabilir, tekrarlamayı ortadan kaldırabilir ve depolama optimizasyonu yapabiliriz. Elektrikli araba ve sensörler örneği, normalizasyonun nasıl uygulanabileceğini ve disk kullanımına etkisini göstermekte olup, veritabanı yönetiminde bu uygulamanın önemini vurgulamaktadır.

--

--