vehbiakdogan

Senior Sofware Developer

PDOPHPSQL - MySQL

SQL Foreign Key Kullanımı

Sql foreign key ilişkisel veri tabanında bir tabloda belirlediğimiz bir event olması durumunda diğer tabloda işlem yapılmasını sağlayan bir yapıdır. bir nevi triggere benziyor.

Örneğin bizim urunler ve urun_resim diye iki adet tablomuz olsun birinci tabloda ürünlerimizi ikinci tabloda ürüne ait görselleri tutalım.

Biz eğer foreign key kullanmazsak üründe silme işlemi yapıldığı zaman ürün resimleri ya veri tabanında çöp olarak kalacak ki bu saçma olur yada ek kod yazıp urun_resim tablosundan da bu görselleri silmemiz gerekecek işte foreign key tam bu noktada devreye giriyor.

Eğer biz foreign key kullanırsak diyoruzki urunler tablomdan bir ürün silindiğinde sende o ürünün id sine ait ürün resimlerini otomatik sil diyoruz.

örneğin:

ALTER TABLE `urun_resim`
ADD CONSTRAINT `foreign_key_adi` FOREIGN KEY (`urun_id`) REFERENCES `urunler` (`urun_id`) ON DELETE CASCADE;

Yukarıdaki kodda urun_resim tablosuna foreign_key_adi adında bir trigger oluştruduk ve dedikki urunler tablosunda bir (DELETE) silme işlemi gerçekleştiğinde urun_id sini al ve urun_resim tablosundaki urun_resim.urun_id sütununda urunler.urun_id eşleşenleri sil dedik.

 

Yani biz urun_resim tablosuna bir foreign key oluşturduysak bir ürünü resimleriyle beraber silmek için aşağıdaki sql kodunu çalıştırmamız yeterli olacaktır.

DELETE FROM urunler WHERE urun_id='1'
-- urun_id si 1 olan ürünleri sil, urun_resim tablosunda urun_id si 1 olan resimleri sil

360 thoughts on “SQL Foreign Key Kullanımı

  • Ryzen

    selam kardes peki bu foreing key olusturduk diyelim tablolar arası ilişkiyi nasıl kaldırcaz yada 3 tane tablo arasında baglantı nasıl kurulur burda 2 tablo gosterilmis

    Yanıtla

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir