Pertanyaan yang lebih besar adalah: apakah Anda akan mengemudi dengan penutup mata? Begitulah jika Anda mengembangkan sistem tanpa kendala referensial. Perlu diingat, bahwa perubahan persyaratan bisnis, perubahan desain aplikasi, asumsi logis masing-masing dalam perubahan kode, logika itu sendiri dapat di-refactored, dan sebagainya. Secara umum, kendala dalam database ditempatkan di bawah asumsi logis kontemporer, yang tampaknya benar untuk serangkaian asumsi dan asumsi logis tertentu.
Melalui siklus hidup suatu aplikasi, referensi dan pemeriksaan data membatasi pengumpulan data polisi melalui aplikasi, terutama ketika persyaratan baru mendorong perubahan aplikasi logis.
Untuk subjek daftar ini - kunci asing tidak dengan sendirinya "meningkatkan kinerja", juga tidak "menurunkan kinerja" secara signifikan dari sudut pandang sistem pemrosesan transaksi real-time. Namun, ada biaya agregat untuk pemeriksaan kendala dalam sistem "batch" volume tinggi. Jadi, inilah perbedaan, proses transaksi real-time vs batch; pemrosesan batch - di mana biaya yang bertambah, yang ditimbulkan oleh cek kendala, dari batch yang diproses secara berurutan menimbulkan hit kinerja.
Dalam sistem yang dirancang dengan baik, pemeriksaan konsistensi data akan dilakukan "sebelum" memproses batch melalui (bagaimanapun, ada biaya yang terkait di sini juga); oleh karena itu, pemeriksaan batasan kunci asing tidak diperlukan selama waktu pengambilan. Faktanya semua kendala, termasuk kunci asing, harus dinonaktifkan untuk sementara hingga batch diproses.
KINERJA QUERY - jika tabel digabungkan dengan kunci asing, sadari fakta bahwa kolom kunci asing TIDAK DIINDEKSEKSI (meskipun kunci utama masing-masing diindeks berdasarkan definisi). Dengan mengindeks kunci asing, dalam hal ini, dengan mengindeks kunci apa pun, dan bergabung dengan tabel pada indeks membantu dengan kinerja yang lebih baik, bukan dengan bergabung pada kunci non-indeks dengan batasan kunci asing di atasnya.
Mengubah subjek , jika database hanya mendukung tampilan situs web / konten rendering / etc dan merekam klik, maka database dengan batasan penuh pada semua tabel adalah over kill untuk tujuan tersebut. Pikirkan tentang itu. Sebagian besar situs web bahkan tidak menggunakan database untuk itu. Untuk persyaratan yang serupa, di mana data hanya direkam dan tidak direferensikan per katakan, gunakan basis data dalam memori, yang tidak memiliki kendala. Ini tidak berarti bahwa tidak ada model data, ya model logis, tetapi tidak ada model data fisik.