SQL atau model relasional tidak terganggu oleh kunci asing yang merujuk kunci alami. Bahkan, merujuk kunci alami sering secara dramatis meningkatkan kinerja. Anda akan terkejut betapa sering informasi yang Anda butuhkan benar-benar terkandung dalam kunci alami; referensi bahwa perdagangan kunci gabungan untuk tabel yang lebih luas (dan akibatnya mengurangi jumlah baris yang dapat Anda simpan dalam satu halaman).
Menurut definisi, informasi yang Anda butuhkan selalu sepenuhnya terkandung dalam kunci alami dari setiap tabel "pencarian". (Istilah tabel pencarian bersifat informal. Dalam model relasional, semua tabel hanyalah tabel. Tabel kode pos AS mungkin memiliki baris yang terlihat seperti ini: {AK, Alaska}, {AL, Alabama}, {AZ, Arizona} , dll. Sebagian besar orang akan menyebutnya tabel pencarian.)
Pada sistem besar, tidak biasa menemukan tabel yang memiliki lebih dari satu kunci kandidat. Juga tidak biasa untuk tabel yang melayani satu bagian dari perusahaan untuk referensi satu kunci kandidat, dan tabel yang melayani bagian lain dari perusahaan untuk referensi kunci kandidat yang berbeda. Ini adalah salah satu kekuatan dari model relasional, dan ini adalah bagian dari model relasional yang didukung SQL dengan cukup baik.
Anda akan mengalami dua masalah saat Anda merujuk kunci alami di tabel yang juga memiliki kunci pengganti.
Pertama, Anda akan mengejutkan orang. Meskipun saya biasanya melobi dengan keras untuk Prinsip Surprise Terkejut , ini adalah satu situasi di mana saya tidak keberatan mengejutkan orang. Ketika masalahnya adalah bahwa pengembang terkejut dengan penggunaan kunci asing yang logis, solusinya adalah pendidikan, bukan desain ulang.
Kedua, ORM umumnya tidak dirancang di sekitar model relasional, dan mereka kadang-kadang mewujudkan asumsi yang tidak mencerminkan praktik terbaik. (Bahkan, mereka sering kali tampaknya dirancang tanpa pernah mendapat masukan dari profesional database.) Membutuhkan nomor ID di setiap tabel adalah salah satu asumsi itu. Yang lain berasumsi bahwa aplikasi ORM "memiliki" database. (Jadi gratis membuat, menjatuhkan, dan mengganti nama tabel dan kolom.)
Saya telah bekerja pada sistem database yang melayani data ke ratusan program aplikasi yang ditulis dalam setidaknya dua lusin bahasa selama 30 tahun. Basis data itu milik perusahaan, bukan milik ORM.
Garpu yang memperkenalkan perubahan yang melanggar haruslah menjadi show-stopper.
Saya mengukur kinerja dengan kedua kunci alami dan kunci pengganti di perusahaan tempat saya dulu bekerja. Ada titik kritis di mana kunci pengganti mulai mengungguli kunci alami. (Dengan asumsi tidak ada upaya tambahan untuk menjaga kinerja kunci alami tetap tinggi, seperti partisi, indeks parsial, indeks berbasis fungsi, tablespace tambahan, menggunakan disk solid-state, dll.) Dengan perkiraan saya untuk perusahaan itu, mereka akan mencapai titik kritis di sekitar 2045. Sementara itu, mereka mendapatkan kinerja yang lebih baik dengan kunci alami.
Jawaban relevan lainnya: Dalam Skema Basis Data Membingungkan