Veritabanı İlişkilendirme ile Çoklu Tablo Kullanımı
Web programcılığı stajımda veritabanında birden fazla tabloyu birleştirerek veri çekme işlemlerini öğrendim. INNER JOIN, LEFT JOIN gibi komutlarla ilişkili tablo sorguları yaptım.
Veritabanı İlişkilendirme (JOIN, INNER JOIN) ile Çoklu Tablo Kullanımı
Stajımın on dokuzuncu haftasında, projelerde veri yapısını daha sağlıklı oluşturmak adına veritabanı ilişkilendirme konusunu öğrendim. Özellikle INNER JOIN komutu ile birden fazla tabloyu birleştirerek nasıl veri çekebileceğimi uygulamalı olarak yaptım.
Neden İlişkili Tablolar Kullanılır?
Veritabanında tekrarlı veri kullanımını önlemek ve verileri kategorilere ayırmak için tablolar arasında ilişkiler kurarız. Örneğin kullanıcıların bilgileri bir tabloda, siparişleri başka bir tabloda tutulur.
Örnek Tablolar
kullanicilar tablosu:
id | ad | email
-----------------------
1 | Ali | ali@mail.com
2 | Zeynep | zeynep@mail.com
siparisler tablosu:
id | kullanici_id | urun_adi
-----------------------------
1 | 1 | Klavye
2 | 1 | Mouse
3 | 2 | Monitör
INNER JOIN ile Sorgulama
Hem kullanıcı adını hem de sipariş bilgilerini aynı satırda çekmek için şu SQL sorgusunu kullandım:
SELECT kullanicilar.ad, siparisler.urun_adi
FROM kullanicilar
INNER JOIN siparisler ON kullanicilar.id = siparisler.kullanici_id
PHP'de INNER JOIN Kullanımı
<?php
$baglan = mysqli_connect("localhost", "root", "", "stajveritabani");
$sorgu = mysqli_query($baglan, "
SELECT k.ad, s.urun_adi
FROM kullanicilar k
INNER JOIN siparisler s ON k.id = s.kullanici_id
");
while($satir = mysqli_fetch_assoc($sorgu)){
echo $satir['ad'] . " - " . $satir['urun_adi'] . "<br>";
}
?>
LEFT JOIN Nedir?
LEFT JOIN ile bir kullanıcı sipariş vermemiş olsa bile listede görüntülenebilir:
SELECT k.ad, s.urun_adi
FROM kullanicilar k
LEFT JOIN siparisler s ON k.id = s.kullanici_id
Karşılaştığım Zorluklar
- Tablolar arasında doğru ilişki kurulmaması hata verdi
- Aynı isimli kolonları çekerken alias (takma ad) kullanmam gerekti
- LEFT JOIN ve INNER JOIN farkını pratik yaparak daha iyi kavradım
Genel Değerlendirme
Bu konuyla birlikte projelerimde daha doğru veritabanı yapıları kurabildim. JOIN komutları sayesinde karmaşık verileri sade bir şekilde çekebilmeyi öğrendim. Bu beceri, özellikle kullanıcı işlemleri, sipariş sistemleri ve raporlama gibi birçok modülde kullanacağım güçlü bir araç oldu.