MySQL Birleştirme ve İlişkili Tablolar Nedir?

MySQL Birleştirme ve İlişkili Tablolar Nedir?

MySQL veritabanında birleştirme işlemleri ve ilişkili tablolar kullanılarak veriler daha etkili bir şekilde yönetilir İki veya daha fazla tablonun eşleşen sütunları kullanılarak birleştirilmesi ile veriler tek bir tabloda toplanır INNER JOIN, LEFT JOIN ve RIGHT JOIN gibi birleştirme türleri mevcuttur İlişkili tablolarda ise veriler arasındaki bağlantı, belirli tablo sütunlarındaki veriler kullanılarak kurulur Bu şekilde veriler daha düzenli ve erişilebilir hale getirilir

MySQL Birleştirme ve İlişkili Tablolar Nedir?

MySQL veritabanı yönetim sistemi, özellikle büyük veri setlerinde verimli bir şekilde çalışmak için gereklidir ve bu nedenle veritabanını optimize etmek önemlidir. Bunun için ise birleştirme işlemleri ve ilişkili tablolar kullanılır.

Birleştirme işlemleri, iki veya daha fazla tabloyu bir araya getirerek verileri tek bir tabloda toplamak için kullanılır. Birçok birleştirme türü vardır, ancak en çok kullanılanları INNER JOIN, LEFT JOIN ve RIGHT JOIN'dur.

INNER JOIN, iki tablonun ortak olan sütunlarının eşleştiği verileri birleştirir. LEFT JOIN, sol tabloyu (ilk belirtilen tablo) ve sağ tabloyu birleştirir. Sol tablodaki tüm verileri ve sağ tablodaki eşleşen verileri gösterir. RIGHT JOIN ise sağ tabloyu (ikinci belirtilen tablo) ve sol tabloyu birleştirir. Sağ tablodaki tüm verileri ve sol tablodaki eşleşen verileri gösterir.

İlişkili tablolar, verileri daha düzenli ve erişilebilir hale getirmek için kullanılır. İlişkili tablolarda, tablolardaki veriler arasında bir bağlantı kurulur. Bu bağlantı, belirli tablo sütunlarındaki verileri kullanarak kurulur. Her tabloda, o tablodaki verileri tanımlayan tekil bir sütun belirlenir ve buna PRIMARY KEY denir. İki tablo arasındaki ilişkiyi belirlemek için, bir tablodaki PRIMARY KEY, diğer tablodaki bir sütünle eşleştirilir. Bu sütuna FOREIGN KEY denir.


Birleştirme İşlemleri

Birleştirme işlemleri, MySQL veritabanında iki veya daha fazla tablonun birleştirilmesi ile gerçekleştirilir. Bu işlem ile birlikte, birden fazla tablodaki veriler tek bir tabloda toplanarak veritabanının daha etkili bir şekilde kullanılması sağlanır.

Birleştirme işlemleri sırasında, tablolar arasındaki ilişkileri belirlemek adına belirli sütunlar özellikle seçilir. Bu sütunlar, tabloların ortak olan verileri ile eşleştirilerek tek bir tabloda birleştirilir.

MySQL'de üç farklı türde birleştirme işlemi bulunmaktadır. Bunlar INNER JOIN, LEFT JOIN ve RIGHT JOIN'dur. INNER JOIN işlemi, iki tablonun ortak olan sütunlarında eşleşme olduğu durumlarda bu verileri birleştirir. LEFT JOIN işlemi, sol taraftaki tabloyu bütün verileri ile sağ taraftaki tablo ile eşleştiren bir birleştirme işlemidir. RIGHT JOIN işlemi ise tam tersi şekilde sağ taraftaki tabloyu bütün verileri ile sol taraftaki tablo ile eşleştirir.


INNER JOIN

=

INNER JOIN, iki veya daha fazla tablonun belirli bir sütunu üzerinden eşleşen verilerini birleştirir. Bu işlem, birinci tablodaki sütun ile ikinci tablodaki sütun arasındaki bağlantıyı kullanır. Bu tür bir birleştirme işlemi, sadece verilerin eşleştiği satırların görüntülenmesi için kullanılır. INNER JOIN kullanılırken, sorguda belirtilen iki tablonun ortak olmayan sütunları yok sayılır. Tablo adları olarak, birleştirilecek tabloların adları ve ortak sütunların isimleri kullanılır.

Aşağıdaki örnek, 'Müşteriler' ve 'Siparişler' adlı iki tablo arasında INNER JOIN birleştirmesini göstermektedir. Ortak olan 'customer_id' sütunu kullanılarak, müşterilerin sipariş bilgileri birleştirilir.

SELECT *FROM customersINNER JOIN ordersON customers.customer_id = orders.customer_id;

Bu sorgu, her bir müşterinin siparişlerini listeler ve müşteri ve sipariş bilgilerini içeren tek bir sonuç kümesi üretir.


LEFT JOIN

LEFT JOIN, birleştirme işleminde sol taraftaki tabloyu (ilk belirtilen tablo) ve sağ taraftaki tabloyu bir araya getirir. Sol taraftaki tablodaki tüm verileri ve sağ taraftaki tablodaki eşleşen verileri gösterir. Bu işlemde sağ taraftaki tabloda eşleşme olmasa bile sol taraftaki tablodaki tüm veriler gözükür ve sağ taraftaki tablodaki veriler NULL değer olarak belirtilir.

LEFT JOIN işlemi, sol taraftaki tablonun tüm verilerinin, sağ taraftaki tabloda ilgili verileri olup olmadığına bakılmaksızın görüntülenmesini sağlar. Bu, sol taraftaki tablonun eksiksiz bir şekilde görüntülenmesini sağlar ve veritabanındaki diğer tablolardan gelen eksik verileri görüntülemek için kullanılabilir.

LEFT JOIN işlemi ayrıca, raporlar veya analizler gibi büyük veri kümelerinde verilerin daha kolay anlaşılmasını sağlar. Sol ve sağ taraflar arasındaki ilişki sayesinde, veriler daha anlamlı bir şekilde hızlı bir şekilde analiz edilebilir.

Bir örnek oluşturmak gerekirse, bir satış veritabanında, müşteri ve sipariş tabloları yer alabilir. Müşteri tablosunda müşteri adı, adresi ve diğer bilgiler yer alırken, sipariş tablosunda sipariş edilen ürünler, fiyatlar ve ödeme bilgileri bulunabilir. İki tablo LEFT JOIN ile birleştirildiğinde, sol taraftaki müşteri tablosundaki tüm müşteri bilgileri ve sağ taraftaki sipariş tablosundaki ilgili siparişler eşleştiği takdirde görüntülenebilir.


RIGHT JOIN

MySQL'de, RIGHT JOIN, birleştirme işlemi yapılacak tablolardan birincisinin sağında ve diğerinin solunda yer alır. İlk belirtilen tablo sol tarafta, ikinci belirtilen tablo sağ tarafta yer alır. Sol tablodaki tüm verileri ve sağ tablodaki eşleşen verileri gösterir. Ancak, sağ tabloda eşleşen veri bulunmuyorsa bile sol tablodaki verileri gösterir.

Bir örnek vermek gerekirse, öncelikle müşteriler ve siparişler adında iki farklı tablomuz olsun. İki tablonun ortak sütunu müşteri ID'sidir. RIGHT JOIN kullanarak, siparişler tablosundaki tüm verileri ve müşteri tablosundaki eşleşen verileri gösterebiliriz. Bunun sonucunda, müşteri tablosundaki her müşteri için sipariş tablosundaki tüm siparişler gösterilir. Eğer siparişler tablosunda eşleşen veri yoksa bile müşteri tablosundaki veriler gösterilir.

RIGHT JOIN, verileri daha anlaşılır hale getirmek için INNER JOIN ve LEFT JOIN ile birlikte kullanılabilir. Ancak, RIGHT JOIN ile birleştirme işlemi yapılırken, sorgunun doğru yazılmış olması gerekmektedir. Aksi halde, beklenmedik sonuçlar ortaya çıkabilir.


İlişkili Tablolar

İlişkili tablolar, veriler arasında bağlantılar kurarak, verilerin daha düzenli ve erişilebilir hale getirilmesini sağlayan bir tekniktir. Bu sayede, verilerin yönetimi ve analizi daha kolay hale gelir.

Bu teknik için her tabloda, o tablodaki verileri tanımlayan tekil bir sütun belirlenir. Bu sütuna PRIMARY KEY denir. Bu sütunlar, birbirlerinden farklı olmalıdır ve tekil olmalıdır. PRIMARY KEY'lerin belirlenmesi, verilerin daha hızlı ve etkin bir şekilde işlemesini sağlar.

İki tablo arasındaki ilişkiyi belirlemek için, bir tablodaki PRIMARY KEY, diğer tablodaki bir sütünle eşleştirilir. Bu sütuna FOREIGN KEY denir. FOREIGN KEY'ler, tekil olmak zorunda değillerdir. Ayrıca, bir tablonun FOREIGN KEY'leri, diğer tablolar tarafından kullanılabilir.

Normalde, ilişkili tablolar ayrı ayrı saklanarak yönetilir. Ancak, ilişkileri olan tablolar, JOIN işlemleriyle birleştirilebilir. Böylece, veriler tek bir tabloda toplanarak yönetilebilir.

Özetle, ilişkili tablolar, verilerin daha düzenli ve erişilebilir hale getirilmesini, yönetimini ve analizini daha kolay hale getirir. Bu sayede verilerin tutarlılığı ve doğruluğu artar.


PRIMARY KEY

Her MySQL tablosunda, verileri tanımlayan tekil bir sütun belirlenir. Bu sütuna PRIMARY KEY denir. PRIMARY KEY, bir tablodaki her bir satırı benzersiz bir şekilde tanımlamak için kullanılır. Bu sütundaki değerler hiçbir zaman tekrar edemez. PRIMARY KEY, tablo üzerinde sorgu çalıştırmak için çok önemlidir. Sorgular, anahtar sütununa göre yapılandırılabilir ve sorgu sonuçlarına göre şart koşulabilir. Bu sütun için INT, VARCHAR veya ENUM gibi veri türleri kullanılabilir.

Bir MySQL tablosunda sadece bir PRIMARY KEY olabilir ve bu sütunun boş veya NULL olması mümkün değildir. Ayrıca, PRIMARY KEY sütununda herhangi bir değişiklik yaparken özenli olmak gerekir. Örneğin, bu sütunda yer alan bir değeri değiştirdiğinizde, o değere sahip diğer tablolardaki tüm ilgili kayıtlar da değişir.

PRIMARY KEY kullanımı, veritabanı tasarımının önemli bir parçasıdır ve doğru bir şekilde ayarlanmazsa, performans ve veri bütünlüğü sorunlarına neden olabilir.


FOREIGN KEY

MySQL'de ilişkili tablolar arasındaki bağlantıya FOREIGN KEY denir. İki ya da daha fazla tablo arasındaki ilişkiyi belirlemek için kullanılır. Bu anahtar, bir tablodaki PRIMARY KEY ile diğer tablodaki sütunlar eşleştirilerek belirlenir.

Bir örnekle açıklayacak olursak, bir kitapçıda bulunan iki tablo var: bir tablo kitapların bilgilerini (id, başlık, yazar, yayınevi vb.) içerirken diğer tablo müşterilerin bilgilerini (id, ad, soyad, adres vb.) içerir.

Her bir kitap, müşterinin hangi kitabı satın aldığını takip etmek için bir id numarasına sahiptir. Kitap tablosundaki bu id numarası, müşteriler tablosundaki id numarası ile FOREIGN KEY olarak eşleştirilebilir. Bu şekilde, müşterilerin satın aldığı kitapları daha kolay bir şekilde takip etmek mümkündür.

Aşağıdaki örnek, bir kitapçıdaki kitaplar ve yazarlar tablolarının ilişkisini göstermektedir. İkinci tablo olan yazarlar tablosundaki yazar_id, kitaplar tablosundaki yazar_id ile FOREIGN KEY olarak eşleştirilmektedir:

kitaplar yazarlar
1 1 Stoner John Williams
2 2 Dune Frank Herbert
3 3 The Great Gatsby F. Scott Fitzgerald

Bu tablolardaki verileri birleştirmek için bir INNER JOIN kullanılabilmektedir. Örneğin, "Frank Herbert'in Dune adlı kitabı hangi müşteri tarafından satın alındı?" sorusu sorulduğunda, yukarıdaki tablolardan aşağıdaki sorgu çalıştırılabilir:

SELECT kitaplar.baslik, musteriler.ad, musteriler.soyadFROM kitaplarINNER JOIN yazarlar ON kitaplar.yazar_id = yazarlar.yazar_idINNER JOIN satislar ON kitaplar.id = satislar.kitap_idINNER JOIN musteriler ON satislar.musteri_id = musteriler.idWHERE yazarlar.ad = 'Frank' AND yazarlar.soyad = 'Herbert' AND kitaplar.baslik = 'Dune';

Bu sorgu sonucunda, "Frank Herbert'in Dune adlı kitabını John Doe adlı müşteri satın aldı." gibi bir sonuç elde edilebilir.