MS SQL Server Eğitimleri 19 – Foreign Key Kavramı

SQL Eğitimlerimize Foreign Key kavramı ile devam ediyoruz.

Foreign İngilizce kelime anlamı olarak Yabancı demektir. SQL’de de temel anlamda Yabancı anahtar deyimiyle ifade edilir.

Bir önceki dersimizde T-SQL sorgu kodları ile bir veri tabanı üzerinde nasıl tablo oluşturacağımızı öğrenmiştik.

MS SQL Server Eğitimleri 18 – T-SQL Tablo Oluşturma

 

Sıfırdan bir veri tabanı tasarımında tasarım SQL üzerine aktarılmadan önce tabloların yapıları hangi tablonun hangi kolon üzerinden hangi tablo ile ilişkili olacağı belirlenir.

Bunları baştan bildiğimiz içinde kod ile veri tabanı oluştururken ilişki sağlayacak kolonlarımızı da sorgumuza yazabiliriz.

İlişki oluşturma olayını bir sonraki yazımıza bırakıp burada Foreign Key kavramına deyinmek istiyorum.

Bir senaryo düşünelim.

Bunu daha önceki derslerimizde de vermiştik aşinalığınız olduğu için yine o örnek ile devam edelim.

Bir kütüphane düşünelim. Kütüphanenin üyeleri olsun birde kitaplar listesi. Hangi kitabın hangi üyede olduğunu bilmek istediğimiz bir yapı olsun.

Bunun için bize 2 tane tablo yeterli gelecektir.

 

Tablo yapılarımız bu şekildedir. Üyeler tablosunda ÜyeNo Primary Key’dir.

Kitaplar tablosunda hangi kitabın hangi üyede olduğunu bilmek istiyoruz. Aynı zaman kitabı alan üyeyi biliyorsak o kişinin üyelik bilgilerini de öğrenmek istiyoruz.  Bunun için ÜyeNo kolonunu Kitaplar tablosuna ekliyoruz.

Böylece artık Kitaplar tablosundaki ÜyeNo o tablodaki bizim için Foreign Key yani bir yabancı anahtar oldu.

Örneğimizden sonra biraz daha teknik bir bilgi vermek gerekirse, Foreign Key iki tablo arasında ilişki kurmak veri yazmayı sınırlandırmak için kullanılır.

Önemli avantajları arasında veri tekrarını önlemesi ve herhangi bir güncelleme işleminin ilişki sağladığı tüm tablolarda tek seferde yapılmasını sağlamasıdır.

Daha önceki tablolarımızdan bir Foreign Key(FK) örneği görelim.

CUSTOMER Tablosunda bulunan CUSTOMERID ile ORDER tablosundaki sipariş bilgilerini ilişkilendirmek istiyoruz. Yani siparişi kimin yaptığını da bilmek istiyoruz. CUSTOMER tablosunda Primary Key olan CUSTOMERID’yi ORDER tablosuna ekliyoruz. Böylece artık CUSTOMERID ORDER tablosunun yabancı anahtarı oldu. Yani Foreign Key.

Önemli Not: Foreign Key ilişkilendirileceği Primary Key ile aynı veri tipi ve uzunluk değerine sahip olmalıdır. Ama aynı isme sahip olmak zorunda değildir.

Yani yukardaki örnekten yola çıkarsak CUSTOMER tablosunda CUSTOMERID kolonu ORDER tablosuda ID olarak farklı bir isimle de ifade edilip ilişki kurulabilirdi. Ama aynı isimde olması bize takip ve sonrasında anlamak için kolaylık sağlar bunu da belirtmeliyim.

Bir Foreign Key sayesinde Primary Key tablosunda olmayan bir değer önce gidip Order tablosuna yazılamaz.

Yani bunu yukarıdaki tablo yapımıza bakarak şöyle örnekleyebiliriz.

CUSTOMER tablosunda 100 numaralı müşteri yok böyle bir müşteri olmadığına göre siparişte veremez. İşte 100 numaralı müşteri için herhangi bir sipariş değerinin girilmesini önler Foreign Key. Bu zaten ilişkili veri tabanının en önemli özelliğidir. Veri tutarlılığını sağlar.

Umarım Foreign Key kavramı tam olarak anlaşılmıştır.

Bir sonraki yazımda tablolar arası ilişki oluşturmayı kodla nasıl yapabiliriz bunu anlatacağım.

Görüşmek üzere.

Bir sonraki yazı için tıklayınız.