Tablo Birleştirmeleri *Bir veritabanı tablosu, birbirinden kesin sınırlarla ayrılmış alanlardan ve her bir alanın diğer alandan bağımsız, ancak ilişkisinin olduğu yatay ve dikey olarak sıralanmış bilgiler içeren yapıdır diyebiliriz.
Veritabanı tablolarını listeler olarak düşünebiliriz, bir film listesi gibi veya bir kitap listesi gibi ancak bir farkla veritabanı tabloları tek değildir birden fazladırlar ve birbirleriyle ilişkilendirilmişlerdir.
Tablolar arası ilişkilendirmeler, bir istek sonucunda içerdiği bilgileri bize ne kadar çabuk yansıtacağı ile ilgilidir.
Bu bize veritabanının yapısınını baştan iyi tasarlamamızı, tablolararası ilişkilendirmeyi çok iyi planlamamızı gerektirir.
Eğer bir bilgi kümesinin tamamını bir tabloya yazarsak ilişkilendirmeden söz edemeyiz.
Tablolar arasında bir ilişkilendirme yapılmadan açılacak bir sorgu sonucu tabloların içerdiği kayıt sayısı ile orantılıdır.
Eğer doğru ilişkilendirme ve doğru sorgu yoksa çok kayıt çok dakka demektir.
Bunu şöyle bir örnekle ifade edebiliriz, eğer tablolar arasında bir ilişkilendirme yoksa ve ilişkilendirmeli bir sorgu açılıyorsa bu kartezyen çarpımına neden olur,
yani 1.inci tablodaki her kayıt 2.inci tablodaki herkayıt ile ilişkilidir.
Bir örnek vermek gerekirse, 1.inci tabloda 500 kayıt var 2.inci Tabloda 1500 kayıt varsa birleştirme sonucu 500*1500=750000 kayıt olur. İlişkilendirilmemiş tablo birleştirmeleri veritabanının çalışmasına terstir.
TABLOLARI İLİŞKİLENDİRMEKHer tablonun içindeki bilgilerinin kayıt sırasını tutan eşi olmayan bir değer tanımı vardır buna anahtar=key denir ve genelde id diye ifade edilir.
Bunu daha iyi şu şekilde ifade ederiz, bir tabloya her kayıt açılışında otomatik olarak artan, başka bir kayıtla karışmasını engeleyen sayısal ifadesidir.
Tablolar arası ilişkilendirme, bir tablonun diğer tabloya kendi anahtar değerini vermesi ile olur.
Eğer tablolar birbirlerine anahtar değerleri vermiyorsa birleştirmenin bir mantığı yoktur.
Örneğin bir işletmenin müşterilerini bir tabloya kaydedersek her müşterinin eşi olmayan birer numarası olacaktır ve yine başka bir tabloda bu numarayı kullanarak o müşteriye yaptığımız işlerin kayıtlarını yazabilir ve yine başka bir tabloda para giriş çıkışlarımızı yazarken aynı müşteri numarasını kullanabiliriz.
Böylelikle tablolarımıza tek bir sorgu yani müşteri nolarını eşleştirerek sorgu açabiliriz.
Birleştirme tanımları:
Klasik Join İki tabloyu birlikte sorgulamanın en kolay yolu, asıl tablodaki birincil anahtar ile ikinci tablodaki yabancı anahtarı birbirine eşitlemektir.
ÖrneğinSELECT Kitap.kitapNo,Odunc.kitapNo
FROM Kitap,Odunc
WHERE Kitap.kitapNo=Odunc.kitapNo
Left [Outer] Join İki tablo arasında ilişkili sorgu yapılırken, birinci tablodaki tüm kayıtlar getirilir. 2. Tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına eklenir.
ÖrneğinSELECT uye.Adi,odunc.KitapNo
FROM uye LEFT JOIN odunc ON odunc.uyeNo=uye.uyeNo
Right [Outer] Joinİki tablo arasında ilişkili sorgu yapılırken, ikinci tablodaki tüm kayıtlar getirilir. 1. Tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına eklenir.
ÖrneğinSELECT Kitap.kitapAdi
FROM Kitap
RIGHT JOIN odunc ON odunc.KitapNo=Kitap.KitapNo
WHERE odunc.geldiMi=0
[Inner] JoinINNER JOIN en çok kullanılan tablo birleştirme yöntemidir. İki tablo arasında birleştirme yaparken, tablolardan her ikisinde de yer alan değerler seçilir, tek tabloda yer alan değerler seçilmez.
Aslında, Klasik Join ile INNER JOIN aynı şeydir. Sadece birleştirmede kullanılan teknik farklıdır.
ÖrneğinSELECT uye.Adi,odunc.KitapNo
FROM uye INNER JOIN odunc ON odunc.uyeNo=uye.uyeNo
Sadece iki tabloyu JOIN edilebilir diye bir kısıtlama yoktur. İkiden fazla tabloyu da ihtiyacımıza göre JOIN edebiliriz.
ÖrneğinSELECT Kitap.kitapAdi,uye.Adi,uye.Soyadi
FROM (odunc INNER JOIN Kitap ON Kitap.KitapNo=Odunc.kitapNo)
INNER JOIN uye ON uye.UyeNo = odunc.uyeNo
* Bu yazı
http://www.verivizyon.com adresindeki yazılardan derlenmiştir.