Yabancı anahtarlar, bir veritabanının başvuru bütünlüğünü sağlamanın en iyi yoludur. Sihir olduğu için kaskadlardan kaçınmak derleme içindeki her şeyi yazmak gibidir, çünkü derleyicilerin arkasındaki sihire güvenmezsiniz.
Kötü olan, yabancı anahtarların yanlış kullanılmasıdır, örneğin geriye doğru oluşturmak gibi.
Juan Manuel'in örneği kanonik örnektir, eğer kod kullanırsanız, veritabanında size gelip ısırmak için sahte DocumentItems bırakma şansı daha vardır.
Basamaklı güncellemeler, örneğin verilere değişebilecek bir şeyle referansınız olduğunda faydalıdır, bir kullanıcı tablosunun birincil anahtarının ad, soyadı birleşimi olduğunu varsayalım. Ardından, bu kombinasyondaki değişikliklerin başvurulan her yere yayılmasını istersiniz.
@Aidan, Bahsettiğiniz bu netlik yüksek bir maliyetle geliyor, veritabanınızda sahte veri bırakma şansı yok, ki bu küçük değil . Bana göre, genellikle DB'ye aşinalık eksikliği ve bu korkuyu besleyen DB ile çalışmadan önce hangi FK'lerin yerinde olduğunu bulamama. Ya bu, ya da sürekli olarak kötüye kullanımı, varlıkların kavramsal olarak ilişkili olmadığı ya da tarihi korumanız gereken yerlerde kullanmak.
sql-server
Etiketi kaldırırsanız topluluk için daha yararlı olur .