Kunci asing
menegakkan integritas referensial
. Batasan ini menjamin bahwa baris dalam tabel order_details
dengan bidang order_id
mereferensikan orders
tabel tidak akan pernah memiliki order_id
nilai yang tidak ada di orders
meja.
Kunci asing tidak diperlukan untuk memiliki database relasional yang berfungsi (sebenarnya penyimpanan default MySQL engine tidak mendukung FK), tetapi mereka pasti penting untuk menghindari hubungan yang rusak dan baris yatim piatu (mis. integritas referensial). Kemampuan untuk menegakkan integritas referensial di tingkat basis data diperlukan untuk C di ACID untuk berdiri.
Adapun kekhawatiran Anda mengenai kinerja, secara umum ada biaya kinerja, tetapi mungkin akan diabaikan. Saya sarankan untuk memasukkan semua batasan kunci asing Anda, dan hanya bereksperimen tanpanya jika Anda memiliki masalah kinerja nyata yang tidak dapat Anda selesaikan jika tidak.