MySQL Veritabanında İlişkiler ve Join İşlemleri

MySQL Veritabanında İlişkiler ve Join İşlemleri

MySQL veritabanında, farklı tablolar arasındaki verileri birleştirmek için ilişki ve join işlemleri kullanılabilir Bir-bir, bir-çok ve çok-çok gibi farklı ilişki türleri, birincil ve ikincil tablolar arasındaki bağlantıları kurabilir İlişkiler sayesinde veriler daha anlaşılır ve organize edilmiş hale gelir Bir-bir ilişkisi, birinci tablodaki her kaydın sadece bir ikinci tablo kaydı ile uyumlu olduğu durumlarda kullanılır Bir-çok ilişkisi, birinci tablodaki her kaydın ikinci tablodaki birçok kayda uygun olabileceği durumlarda kullanılır Çok-çok ilişkisi, iki ana tablodaki her bir kaydın diğer ana tablodaki birçok kayda uygun olduğu durumlarda kullanılabilir

MySQL Veritabanında İlişkiler ve Join İşlemleri

MySQL veritabanında, ilişkiler ve join işlemleri kullanarak farklı tablolar arasındaki verileri birleştirmek mümkündür. İlişkili tablolar arasındaki veri akışını inceleyerek, farklı tiplerdeki ilişkileri anlayabilirsiniz. Bu sayede, veri tabanınızda tuttuğunuz verileri daha anlaşılır ve organize edilmiş bir şekilde kullanabilirsiniz.

Bir-bir, bir-çok ve çok-çok gibi farklı ilişki türleri ile birincil ve ikincil tablolar arasındaki bağlantılar kurulabilir. Bu bağlantıların yanı sıra, join işlemleri kullanarak birden fazla tablodan ilgili bilgiler tek bir sonuç kümesinde birleştirilebilir.

İlişkiler ve join işlemleri sayesinde veri tablolarınızdaki bilgileri daha verimli bir şekilde kullanabilirsiniz. Örneklerle daha detaylı bir şekilde incelediğimiz bu ilişki ve join işlemlerini kullanarak, veri tabanınızda tuttuğunuz verileri daha da organize edebilirsiniz.


İlişkiler

Daha karmaşık verilerin depolanması için birden fazla tablo kullanmak gerekebilir. Ancak, bu tablolar arasındaki verilerin doğru bir şekilde iletilmesi önemlidir. İşte burada ilişki kavramı devreye girer. Birbirleriyle bağlantılı olan tablolar arasındaki ilişki, verilerin düzenlenmesine ve doğru bir şekilde kullanılmasına olanak sağlar.

Birinci tablo (ana tablo) genellikle daha genel bilgiler içerirken, ikinci tablo (ikincil tablo) daha spesifik bilgiler içerir. İlişki oluşturulduktan sonra, farklı tiplerdeki ilişkileri analiz etmek daha kolay hale gelir. MySQL veritabanında üç farklı ilişki türü vardır: Bir-bir, Bir-çok ve Çok-çok ilişkileri.

İlişki Türü Açıklama Örnek
Bir-bir Her birinci tablo kaydı sadece bir ikinci tablo kaydı ile uyumludur. Bir öğrencinin sadece bir öğrenci numarası olabilir.
Bir-çok Birinci tablodaki her kayıt, ikinci tablodaki birçok kayıta uygun olabilir. Bir öğrencinin birden fazla dersi olabilir.
Çok-çok Birinci tablodaki her kayıt, ikinci tablodaki birçok kayıta uygun olabilir ve ikinci tablodaki her kayıt birinci tablodaki birçok kayıta uygun olabilir. Bir öğrencinin birden fazla dersi olabilir ve bir derste birden fazla öğrenci olabilir.

Bir-bir İlişkisi

Bir-bir İlişkisi:

Birinci tabloda yer alan her kayıt sadece ikinci tablodaki bir kayıtla uyumludur. Yani aynı kayıt birden fazla ikinci tablo kaydıyla eşleşemez. Bu tip bir ilişki, özellikle benzersiz değerlere sahip olan tablolarda sıkça kullanılır.

Örneğin, bir öğrencinin sadece bir öğrenci numarası olabilir veya bir kitabın ISBN numarası yalnızca bir kez yer alabilir. Bu tip tablolarda, birinci tablonun anahtar alanı, ikinci tablonun anahtar alanıyla eşleştirilerek bir-bir ilişkisi kurulur.


Örnek: Bir öğrencinin sadece bir öğrenci numarası olabilir.

MySQL veritabanında bir-çok ilişkisi kullanarak birinci tablodaki her kaydın, ikinci tablodaki birçok kayda uygun olacağı tanımlanır. Bu ilişki türü sayesinde, örneğin bir öğrencinin birden fazla dersi olabilir. Ancak bir öğrencinin sadece bir öğrenci numarası olabilir. Bu örnekteki öğrenci numarası, aynı veritabanı içindeki farklı tablolarda da tekil olmalıdır.

Benzer şekilde, bir kitabın ISBN numarası da sadece bir kez mevcut olabilir. Bu nedenle, bir-çok ilişkisi, farklı tablolara depolanabilecek veriler arasındaki tutarlılığı sağlamak için oldukça önemlidir.

Bir-çok ilişkisi, işletmelerin birden fazla kaynaktan gelen verileri birleştirebileceği ve analiz edebileceği veri madenciliği ve iş zekası gibi işlemler için de önemlidir. Bu sayede, farklı kaynaklardan gelen veriler birleştirilerek, işletmelerin daha kapsamlı bir görüntü elde etmeleri mümkün hale gelir. Bu ilişki türü, birinci tablodaki her kayıt için ikinci tablodaki birçok kaydın uygun olabileceği gibi, tersi de geçerlidir.


Örnek: Bir öğrencinin birden fazla dersi olabilir.

Çok-çok ilişkisi, birinci tablodaki kayıtların ikinci tablodaki birçok kayıta uygun olabileceği ve ikinci tablodaki her kaydın birinci tablodaki birçok kayda uygun olduğu bir ilişki türüdür. Bu tipte bir ilişki, bir öğrencinin birden fazla dersi olabileceği veya bir bölgedeki birden fazla müşterinin bulunabileceği gibi senaryolarda kullanılabilir.

Bu tür bir ilişkide, iki tablo arasındaki ilişki, ara tablo olarak adlandırılan üçüncü bir tablo kullanılarak kurulabilir. Ara tablo, iki ana tablonun her birinde kendisine özel bir anahtar taşıyan bir tablodur. İki ana tablo arasındaki ilişki, her bir tablonun ilgili anahtar alanının ara tabloda eşleştirilmesiyle belirlenir. Böylece, iki ana tablonun birbirleriyle ilişkileri, ara tablodaki verilere bağlıdır.

  • Çok-çok ilişkisi örneği
Öğrenciler Dersler Ara Tablo
ÖğrenciID DersID ÖğrenciDersleri
1 1 1
1 2 2
1 3 3
2 1 4
2 2 5

Yukarıdaki tabloda, öğrenciler ve dersler arasında birçok-çok ilişkisi bulunmaktadır. Öğrenci 1, üç farklı dersi alırken, öğrenci 2, iki farklı ders aldı.

Bu ilişki türü, birden fazla kaydın bağlanması gerektiğinde oldukça kullanışlıdır. Ayrıca, tümüyle ayrı tabloların birbirleriyle ilişkilendirilmesine olanak tanıdığından, verilerin saklanması ve yönetimi açısından oldukça esnek bir çözüm sunar.


Örnek: Bir öğrencinin birden fazla dersi olabilir ve bir derste birden fazla öğrenci olabilir

Bir öğrencinin birden fazla dersi olabileceği gibi bir derste birden fazla öğrenci de olabilir. Bu durumda, öğrenci ve ders tablolarında bir-çok ilişkisi bulunmaktadır. Benzer şekilde, bir müşterinin birden fazla siparişi olabilir ve bir siparişte birden fazla müşteri adı yer alabilir. Bunun gibi ilişkileri birleştirmek için Join işlemleri kullanılır.

Join işlemleri, farklı tablolarda bulunan ve birbiriyle ilgili olan verileri birleştirerek tek bir sonuç kümesi almanıza izin verir. Bu işlemler sayesinde verilerin daha anlamlı ve kullanışlı hale gelmesi sağlanır. İki tablodan sadece ortak kayıtları döndüren İç Join, tüm kayıtları döndüren ve taşımayan değerleri NULL olarak dolduran Dış Join, sol taraftaki tablodaki tüm kayıtları döndürerek sağ taraftaki tablodaki ortak kayıtları getiren Sol Join ve sağ taraftaki tablodaki tüm kayıtları döndürerek sol taraftaki tablodaki ortak kayıtları getiren Sağ Join işlemleri kullanılır. Join işlemlerinin nasıl kullanılacağına karar vermek, veritabanı yöneticisinin ve tasarımcının görevidir.


İç Join

İç join işlemi, iki farklı tablodan sadece ortak kayıtları getirir. Bu işlem, iki tablonun birleştirilebilmesi için birbirleriyle eşleştirildiği yerlerde kullanılır. İç join işlemi, tüm tablolardaki ortak kayıtları listeleyerek, birleştirilen tablolarında yalnızca ortak olan verileri getirir.

Bir örnek vermek gerekirse; öğrenci bilgilerin yer aldığı bir tablo ile ders bilgilerinin yer aldığı bir tablo varsa ve bu iki tablo arasında bir öğrencinin aldığı derslerin bilgileri yer alıyorsa, bu kayıtların bir arada listelenmesi için iç join kullanılabilir. İki tablodan ortak olarak öğrenci numarası bilgisi alınarak, her bir öğrencinin aldığı derslerin bilgisi de ortak olarak getirilebilir.

Öğrenci Tablosu Ders Tablosu
Öğrenci No Ders Adı
İsim Ders Kodu
Soyisim Sınıf

Yukarıdaki örnekte öğrenci bilgileri bir tabloda yer alırken, ders bilgileri başka bir tabloda yer alıyor. İki tablonun ortak alanı olan öğrenci numaraları kullanarak, iç join işlemi kullanarak öğrencilerin sınıf ve ders bilgileri bir arada getirilebilir. Bu sayede, öğrencilerin hangi dersleri aldığı ve bu derslerin sınıfı gibi detaylı bilgiler gösterilebilir.


Örnek: Bir öğrencinin sadece kayıtlı olduğu bölümleri getirir.

Dış Join, iki tabloyu birleştirir ve tablolardaki tüm kayıtları döndürür. Ancak, herhangi bir eşleşme olmayan değerler NULL olarak doldurulur. Örneğin, bir öğrencinin sadece kayıtlı olduğu bölümlerin tümünü getirmek için, öğrenci tablosu ile bölüm tablosunu birleştirebilir ve Dış Join işlemi uygulayabilirsiniz.

Öğrenci Tablosu Bölüm Tablosu
Öğrenci ID Bölüm ID
Öğrenci Adı Bölüm Adı
Bölüm ID

Aşağıdaki SQL sorgusu, öğrenci ve bölüm tablolarını dış join işlemine tabi tutar:

SELECT öğrenci.ad, bölüm.ad FROM öğrenci LEFT OUTER JOIN bölüm ON öğrenci.bölüm_id = bölüm.id;

Bu sorgu, öğrenci tablosunda bulunan tüm öğrencileri döndürür ve her öğrencinin kayıtlı olduğu bölümün adını yanında taşır. Ancak, hiçbir bölümle eşleşmeyen öğrencilerin bölüm adı NULL olarak doldurulur.


Örnek: Bir öğrencinin bile kaydının olmasa, kayıtlı bölümler listelenir.

Bir öğrencinin kaydı olmasa bile ilgili bölümleri getirebilmek için sol join işlemi kullanılır.

Bölüm Tablosu Öğrenci Tablosu
Tıp Ali
İşletme Aysel
Mühendislik NULL
Hukuk NULL

Yukarıdaki tabloya baktığımızda öğrenci tablosunda hiçbir kayıt olmamasına rağmen, bölüm tablosundaki tüm kayıtlar sol join işlemi kullanılarak getirilebilir.


Örnek: Tüm öğrencilerin kaydı, ancak sadece belirli dersleri olan öğrencilerin ders kayıtları getirilir

Sağ Join işlemi, sol taraftaki tablodaki tüm öğrenci kayıtlarını ve belirli bir dersi alan öğrencilerin ders kayıtlarını getirir. Örnek olarak, Öğrenci ve Ders tabloları kullanarak sağ join işlemi yapabiliriz. Sağ tablo olarak Ders tablosunu seçeriz ve sol tablo olarak Öğrenci tablosunu seçeriz. Bunun sonucunda, Ders tablosundaki tüm kayıtlar geri döndürülür ve Öğrenci tablosundaki ders kaydı olan öğrencilerin kayıtları da bulunur.

Öğrenci Tablosu Ders Tablosu
1 Matematik
2 Fizik
3 Biyoloji
4 Matematik

Yukarıdaki örnekte, matematik dersi alan öğrencileri listeleyelim. Bu sağ join işlemiyle yapılabilir. Sonuç aşağıdaki gibi olacaktır:

Öğrenci Numarası Ders
1 Matematik
4 Matematik

Sağ Join işlemi, özellikle büyük veritabanlarında kullanışlıdır. Bu örnek ile sağ join işlemini anlamış oldunuz. Şimdi farklı join işlemlerini kullanarak veritabanındaki verileri daha iyi anlamak için deneyebilirsiniz.


Örnek: Tüm kursların kaydı ve belirli derslerde kayıtlı olan kursların kaydı getirilir

Join işlemleri kullanarak MySQL veritabanında farklı tablolarda bulunan kayıtları birleştirmek mümkündür. Sağ Join işlemi, sağ taraftaki tablodaki tüm kayıtları ve sol taraftaki tablodaki belirli bir kısımla eşleşen kayıtları getirir.

Örneğin, bir eğitim kurumunda kayıtlı olan tüm kurslar ve belirli bir dersi alan kursların kayıtları getirilebilir. Tablolar, Kurslar ve Dersler olabilir. Kurslar tablosunda yer alan her bir kaydın, her bir ders kaydına karşılık gelmesi için Dersler tablosunda kursların kodu alanı bulunabilir. Bu şekilde, Kurslar tablosunda kayıtlı olan tüm kurslar ve Dersler tablosunda belirli bir dersi alan kursların bilgileri elde edilir.

Kurslar Tablosu Dersler Tablosu
Kurs Kodu Kurs Adı Bölüm Kodu Ders Kodu
101 Matematik A 001
102 Fizik B 002
103 Tarih A 003
104 Biyoloji C 004

Bu örnekte, Kurslar tablosundaki her bir kaydın Dersler tablosundaki bir ders kaydına karşılık gelmesi gerektiği için Kurslar tablosu ile Dersler tablosu arasında bir Join işlemi gerçekleştirilebilir. Sağ Join işlemi kullanılarak, Dersler tablosundaki belirli bir dersi alan tüm kurs kayıtları getirilebilir.

  • Matematik (Kurs Kodu: 101)
  • Fizik (Kurs Kodu: 102)
  • Tarih (Kurs Kodu: 103)

Bu şekilde, ilgili veriler birleştirilerek istenilen sonuç elde edilir.