6-SQL DERSLERİ – JOİN

56
görünümler

Eğer ilişkisel bir veri tabanı dizayn edecekseniz , edeceğiniz ilişkisel veri tabanları IDler üzerinden yürümek zorundadır. Her şeyi her kolonda tutamazsınız.

Örneğin bizim ürünler diye bir tablomuz olsun. Ürünlerin UrunID diye bir ID si olsun , UrunAdi ve UrunFiyati olsun. Buradaki UrunID miz primary key yani her defasında bir bir artan otomatik ID. Birde müşteri tablomuz olsun bununda kolonları bu şekilde olsun (MusteriID,MusteriAdi,MusteriAdresi).

Aynı şekilde MusteriID miz unique ID olsun yani birbirini tekrar etmeyen ve auto increment i 1 olsun yani birer birer artsın IDmiz. Ve ürün satış tablomuz olsun. Bunun da kolonları (UrunSatisID,UrunID,MusteriID) şeklinde olsun. İşte JOIN ler burda devreye giriyor. Kolonlar arasındaki bağlantıyı sağlamaya yarıyor.

Örneğin ürünler tablosundaki UrunID ile ürün satış tablosundaki UrunID birbirinin aynısıdır. İki tarafta da aynısı olmak zorundadır.

Niye böyle birşey yaptık?

Niye direk ürün adıyla bağlamadık. Çünkü yarın birgün herhangi bir ürünün adı değişebilir. Bir harfi yanlış yazdığımızda bu sefer gidip öbür tarafıda update etmemiz gerekir. Herhangi bir unique lik sağlayamayız. Bu sebepten dolayı işi ID üzerinden yürütüyoruz. Eğer diyelim karakter kullanarakta bir ID seti üretebilirdik. Ama emin olun iş hayatında işler bu şekilde yürütülmektedir. Açıklama biraz uzun oldu ama JOIN ler gerçekten çok çok çok önemli ve iş hayatının olmazsa olmazlarındandır.

Şimdi örneklere geçelim.

joinsqlÖncelikle şunu hatırlatmakta fayda var. Alyanslar bizim için çok kolaylık sağlarlar ve bunları kullanmaya alışkın olmaya çalışın. Yukardaki örnekte DimCustomer tablosunun alyansı dc ,FactInternetSales tablosunun ki de fis dir. Bu iki tabloyu birbirine bağlamak zorundayız. INNER JOIN bire bir ilişkiyi temsil eder. Yani mutlaka INNER JOIN kullanıcaksak DimCustomer tablosundaki CustomerKey kolonunun mutlaka FactInternetSales tablosunda da olması gerekir. Olmazsa hiçbir kayıt gelmez. Sadece eşleşen kayıtlar gelir. İşin en önemli kısmı az öncede belirttiğim gibi CustomerKey kolonunun mutlaka her iki tablodada olması lazım. Select ten sonra yazdığımız kolon adları ise çağırmak istediğimiz kolonlardır.

Acaba bu insanlar neler aldılar. Bunu bulmak için de bir INNER JOIN daha yapmamız lazım.

Aşağıdaki örneği inceleyelim.

innerjoinsqlHangi ürünü aldıklarını öğrenmek içinde DimProduct tablosuna join attık. Burada bir şey dikkatinizi  çekmesi gerekiyor. Veri tabanı hazırlanırken kendinize bir şema oluşturmanız gerekir. Kendinizin bir standardı olması gerekir. Mesela bir Product tablosu varsa karşı tarafta mutlaka ProductKey diye bir kolon vardır. Ve bir satış tablosu varsa mutlaka ordaki kolonun ismide ProductKey. Eğer bu şekilde yapmazsanız hayatınız tablolardaki kolonları aramakla geçer. Yani belli bir isim standartınızın olması lazım. Aksi takdirde çok zorluk çekersiniz. Çünkü şuan burada az tablo var. Yarın büyük sistemlerde girdiğinizde binlerce tabloyla uğraştığınızda birbirinden farklı belki 50 database, her database in içinde binlerce tablo gördüğünüzde işin içinden çıkamazsınız. O yüzden kendi oluşturduğunuz tabloları mutlaka bir standartı yada çalıştığınız kurumların mutlaka bir standartı olması lazım ki büyük kurumların var zaten. Bu şekilde umarım INNER JOIN in ne olduğunu size anlatabilmişimdir.

Bir sonraki derse geçmek için tıklayınız.

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz