SQL üzerinde oluşturduğumuz veritabanı içerisinde tablolarımız vardır. Bir veritabanı içerisinde birden fazla tablo oluşabileceği gibi bir özellik birden çok tablodan da istenilebilir. Bu işlemi yaparken SQL üzerinde veri tekrarı yapmamak için normalizasyon yapmamız gerekiyor. Normalizasyon yapımı, bizim veri tabanımızda veri tekrarını önlememizi sağlar. Veritabanımızın işlem yaptığı sırada hızını arttırır ve diskteki boyutunu azaltır. Yani kısaca bizim SQL üzerinde daha hızlı işlemleri halletmemizi sağlayan işleme normalizasyon denir.

Oluşturacağımız normalizasyonların seviyeleri var. Bu yazıda sizlere birebir ilişki, bire çok ilişki ve çoka çok ilişkiyi anlatacağım. Konuyu detaylı ve anlaşılır bir şekilde belirtmek adına kendime bir veritabanı oluşturacağım ve örnekler ile anlatacağım.

Sql Normalizasyon örneği

 

Tamamen konu anlaşılır olabilmesi için sadece bağlantılara odaklanmak adına bir veritabanı ve bağlantılarını oluşturdum. Bu tablolar üzerinden ilerleyeceğiz. Veritabanımda kullanmış olduğum kolonların veri tiplerini ne olarak girileceğini öğrenmek isteyenler buraya tıklayarak konuyu inceleyebilirler.

Birebir ilişki

Örnekler ile açıklama yapacağım. Üstteki tabloya göre konuştuğumuz zaman Calisan tablosunda TCNo girdiğimizde Kisisel Bilgiler tablosunda tek bir kayıt çıkıyorsa iki tablonun da TCNo sütunu arasında  birebir ilişki var anlamına gelmektedir. Çünkü 1 TCNo birden fazla kişide bulunamaz.

Peki birebir ilişkiyi neden kullanırız? İstediğimiz bilgilere daha hızlı ulaşabiliriz.

Bire çok ilişki (1 – N)

Oluşturduğumuz tablolarda Subeler ve Calisan tablosu arasında bire çok ilişki olduğunu görüyorum. Bir çalışan bir şubede çalışabilir ama Bir şubede birden fazla çalışan olabilir.

Bu yüzden çok olan kısma tek olanın id sini veriyoruz. Örnek tablomuzda da gördüğünüz gibi Calisan tablomuze SubeID ‘yi ekledik. Böylece Çalışan kişiye baktığımız zaman, çalıştığı şubenin adı konumu ve şube puanı da karşımıza gelebilir.

Çoka çok ilişki (N – N)

Tablomuza baktığımız zaman Subeler tablosu ile Urunler tablosu arasında UrunlerveSubeler ‘ara tablosu’ sayesinde bir çoka çok ilişki sağlandını görüyoruz. Bir şubenin birden fazla ürünü olabilir. Aynı zamanda bir ürün de birden fazla şubede olabilir.

Örnek verecek olursak, Bir kafede hem çikolata hem de baklava satılabilir. Bu çikolata ve baklavalar diğer kafelerde de satılabilir. Burada hem birden fazla kafe olduğunu hem de birden fazla çikolata ve baklava olduğunu görebiliyoruz.

Bunun için çoka çok ilişkide ara tablo oluştururuz ve bu ara tabloya diğer tablolarımızın id lerini veririz. Bu ID’lerin her birini ilgili oldukları tablo ID’leri ile ilişkilendiririz. ID’leri verdikten sonra iki kolonu da aynı anda seçip ikisine de foreign key veririz. Böylece çoka çok ilişkimiz yaratılmış olur.