Transaction ve foreign key nedir?

Bazı işlemler, birbirlerine olan bağımlılıkları yüzünden, tek bir işlem gibi yapılmalıdır. Eğer işlemlerden birisi yapılamayacaksa, bütün işlem bloğu iptal edilmelidir.

Örneğin web’den satış yapan bir site var diyelim. Bir sipariş alındığında, müşteri hesabına borç yazılmalı, ürün stoktan düşülmeli, paketleme/kargo servisine nakliye emri verilmeli…

Bu işlem bloğu yarıda kalırsa, sorunlu durumlar oluşur. Örneğin müşteriyi borçlandırdık, stoktan ürünü duştuk ama nakliye emrini veremedik, bir sebepten dolayi işlem kesildi. O zaman, muşterinin eline geçmeyecek bir ürün için müşteriyi borçlandırmıs oluruz.

Nakliye emri asamasinda bile sorun ciksa, butun islem blogunun iptal edilmesi gerekir.

Bu tip blok islemleri transaction yardimi ile yapiyoruz. Ya islem blogunun tamami basari ile sonuclanir veya herhangi bir asamadaki aksilikte, bloga ait butun islemler iptal edilir.

Foreign key (yabanci anahtar), referential integrity (veri tutarliligi) ve primary key (asil anahtar) ile ilgili bir olay.

Bu olay bir ornekle daha kolay aciklanabilir. Bir magazamiz olsun. Kayitlarda, mal aldigimiz firmalarin bilgileri ve aldigimiz urunlerle ilgili iki tablo olsun.

Urunler tablosundaki her urun, firmalar tablosundaki bir firma ile iliskilidir (yani urunun satin alindigi firma ile)

Bu iliskide, firmalar tablosundaki, firma kodu alani primary key (asil anahtar) ve urunler tablosundaki firma kodu alani foreign key (yabanci anahtardir)

Bu iliski nedeniyle, tablolar arasindaki veri tutarsizliklari, veritabani sunucusu tarafindan engellenir. Ornegin

* firma tablosunda kaydi bulunmayan bir firma icin urun bilgisi
girilemez.

* bir firma silindiginde, ya o firmaya ait butun urunler otomatik olarak silinir veya silme islemi engellenir.

* firma kodu degistiginde, otomatik olarak urunler tablosundaki firma kodlari da degisir. Boylece firma-urun iliskisi kaybedilmemis olur


ALINTIDIR : acemi

Bir yorum bırakın

This site uses Akismet to reduce spam. Learn how your comment data is processed.