Saya kira Anda berbicara tentang batasan kunci asing yang diberlakukan oleh database . Anda mungkin sudah menggunakan kunci asing, Anda belum memberi tahu database tentangnya.
Misalkan seorang programmer benar-benar melakukan ini dengan cara yang benar, lalu apakah kita benar-benar membutuhkan konsep kunci asing?
Secara teoritis, tidak. Namun, tidak pernah ada perangkat lunak tanpa bug.
Bug dalam kode aplikasi biasanya tidak terlalu berbahaya - Anda mengidentifikasi bug dan memperbaikinya, dan setelah itu aplikasi berjalan kembali dengan lancar. Tetapi jika bug memungkinkan data Currupt masuk ke database, maka Anda terjebak dengannya! Sangat sulit untuk memulihkan dari data yang rusak dalam database.
Pertimbangkan jika bug halus di FogBugz mengizinkan kunci asing yang rusak untuk ditulis di database. Mungkin mudah untuk memperbaiki bug dan dengan cepat memberikan perbaikan kepada pelanggan dalam rilis perbaikan bug. Namun, bagaimana cara memperbaiki data yang korup di lusinan database? Kode yang benar sekarang mungkin tiba-tiba rusak karena asumsi tentang integritas kunci asing tidak berlaku lagi.
Dalam aplikasi web Anda biasanya hanya memiliki satu program yang berbicara ke database, jadi hanya ada satu tempat di mana bug dapat merusak data. Dalam aplikasi perusahaan mungkin ada beberapa aplikasi independen yang berbicara ke database yang sama (belum lagi orang yang bekerja langsung dengan shell database). Tidak ada cara untuk memastikan bahwa semua aplikasi mengikuti asumsi yang sama tanpa bug, selalu dan selamanya.
Jika batasan dikodekan dalam database, maka hal terburuk yang dapat terjadi dengan bug adalah bahwa pengguna diperlihatkan pesan kesalahan jelek tentang beberapa batasan SQL tidak puas. Ini lebih disukai daripada membiarkan data saat ini masuk ke dalam database perusahaan Anda, yang pada gilirannya akan merusak semua aplikasi Anda atau hanya menyebabkan semua jenis keluaran yang salah atau menyesatkan.
Oh, dan batasan kunci asing juga meningkatkan kinerja karena diindeks secara default. Saya tidak dapat memikirkan alasan apa pun untuk tidak menggunakan batasan kunci asing.