Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

SQL - İlişki Türleri



  October 20, 2018    Labels:,,,,,, 

İlişkisel veritabanının temelini tablolar ve bu tablolar arasındaki ilişkiler oluşturur. Bu yüzden ilişkisel veritabanında ilişkileri anlamak çok önemlidir. Bu yazımızda ilişkisel veritabanında kullanılan ilişki türlerinden bahsedeceğiz. İlişkisel veritabanında üç tip ilişki türü vardır.
  • Bire bir
  • Bire çok
  • Çoka çok
İlişkisel veritabanındaki ilişkilere geçmeden önce bilinmesi gereken çok önemli iki kavram vardır.
  • Birincil Anahtar (Primary Key): Tablolarda benzersiz kayıtlar elde etmemizi sağlayan sütuna verilen addır.
  • İkincil Anahtar (Foreign Key): Bir tabloda benzersiz kayıt oluşturmayı sağlayan sütunun diğer tabloda bir sütun olarak bulunmasına denir.


Bire Bir İlişki Türü

Eğer bir tablodaki verinin diğer tabloda ilişkili olduğu veri bir tane ise bu iki tabloda bire bir ilişki var demektir. Örnek verecek olursak kişiler tablosunun ilişkili olduğu kimlik bilgileri tablosu arasında bire bir ilişki vardır. Burada dikkat edilmesi gereken her kimlik bilgisi için de bir kişinin olması gerektiğidir. Yani bir kişinin kimlik bilgileri bir tane olmalı ve her kimlik bilgisi için bir kişi olmalıdır. Bu durumda iki tablo arasında bire bir ilişki kurulur. 
SQL'de ise bu ilişkiler iki tablonun primary key bilgileri karşılaştırılarak kurulur. Yani örnek verecek olursak kişiler tablosundaki kisi_id ile kimlik bilgileri tablosundaki kisi_id bilgileri aynı olan kayıtlar ilişkilidir denilebilir.

Bire Çok İlişki Türü

Eğer bir tablodaki verinin diğer tabloda ilişkili olduğu veri birden çok ise bire çok ilişki var demektir. Örnek verecek olursak kişiler tablosunun ilişkili olduğu araç bilgileri tablosu arasında bire çok ilişki vardır. Yani bir kişinin araç bilgileri birden çok olabilir, kişinin birden çok aracı bulunabilir. Burada dikkat etmemiz gereken ikinci konu ise araç tablosunun kişi tablosu ile ilişkisidir. Yani her aracında bir sahibinin olması gerektiğidir. Eğer bir aracın birden çok sahibi olsaydı burada bire çok ilişki olacaktı. Çünkü hem bir kişinin birden çok arabası olabiliyor olacaktı hem de her arabanın birden çok sahibi olacaktı. Ancak bir arabanın bir sahibinin olacağını düşündüğümüz için burada bire çok ilişki vardır. Bu yüzden bu iki tablo arasında bire çok ilişki kurmamız gerekir.
SQL'de ise bu ilişkiler birinci tablonun primary key bilgisi ile ikinci tablonun foreing key bilgisi arasında karşılaştırma yapılarak kurulur. Yani örnek verecek olursak kişiler tablosundaki kisi_id bilgisi ile araçlar tablosuna ekleyeceğimiz kisi_id adlı foreing key bilgisi karşılaştırılarak ilişkili kayıtlar bulunur.

Çoka Çok İlişki

İlişkisel veritabanında olmasını istemediğimiz ilişki türüdür. Bu ilişki türü normalizasyon ile bire çok ilişkilere dönüştürülür. Bu ilişki türü eğer birinci tablodaki bir verinin ikinci tabloda ilişkili olduğu birden çok veri varsa ve aynı şekilde ikinci tablodaki bir verinin de birinci tabloda ilişkili olduğu birden çok veri varsa ortaya çıkar. Örnek verecek olursak kişi tablosu ile adres tablosudur. Bir kişinin birden çok adresi olabileceği gibi bir adreste de birden çok kişi yaşayabilir.
SQL'de bu ilişki iki tablo arasına bir tablo ekleyerek gerçekleştirilir. Bu şekilde çoka çok ilişki iki adet bire çok ilişkiye dönüştürülür. Örnek verecek olursak kişiler tablosundaki kişi_id bilgisi ile adres tablosundaki adres_id bilgileri ayrı bir tabloda da tutulur. Bu şekilde kişiler ve adres tabloları arasında doğrudan bir ilişki olmaz bu iki tabloda araya eklediğimiz tablo ile ilişkili olur. Araya eklediğimiz tabloya adres kaydı dersek kişiler tablosundaki bir kişinin birden çok adres kaydı olacaktır ancak her adres kaydı sadece bir kişi ile ilişkili olacaktır. Aynı şekilde adres tablosu ile adres kaydı tablosu arasında da bire çok ilişki olur. Adres tablosundaki her adresin birden çok adres kaydı olabileceği gibi adres kaydı tablosundaki her adres kaydı bilgisinin bir adresi olacaktır. Bu örnekte bir kişinin adres bilgisine erişmek istediğimizde önce o kişinin adres kaydı bilgilerini bulmamız gerekir. Daha sonra her adres kaydı bilgisi için adres bilgisini bulabiliriz. Bu şekilde bir kişinin adres bilgilerini getirebiliriz. Aynı şekilde her adres için o adresin adres kayıt bilgilerini getirebiliriz. Daha sonra her adres kaydı bilgisinin ilişkili olduğu kişi bilgilerini getirerek o adreste yaşayan kişileri bulabiliriz.


No comments:

Post a Comment