Saya memiliki tabel dengan empat kolom yang semuanya tidak dapat dibatalkan, dan datanya sedemikian rupa sehingga keempatnya diperlukan untuk membedakan catatan unik. Ini berarti bahwa jika saya membuat kunci utama, itu harus terdiri dari semua kolom. Kueri terhadap tabel hampir selalu untuk menarik kembali satu catatan, yaitu semua kolom akan difilter dalam kueri.
Karena setiap kolom perlu dicari, apakah memiliki kunci utama menguntungkan saya sama sekali (selain menegakkan keunikan catatan)?
sumber
Biasanya disarankan bahwa Anda memiliki kunci pengganti dalam situasi seperti itu, jadi kunci asing di tabel lain (dan referensi catatan apa pun yang dapat disimpan secara eksternal, seperti jika dilakukan pada string kueri di mana permintaan http mengacu pada satu catatan) memiliki sesuatu untuk merujuk yang tidak akan berubah jika data di baris berubah. Jika Anda melakukan ini maka itu akan menjadi kunci utama Anda.
Jika Anda tidak menambahkan kunci pengganti seperti itu, maka diberikan bagaimana Anda menggambarkan data yang diakses memiliki keempat kolom sebagai kunci utama tidak akan merugikan. Jika Anda membuat kunci indeks berkerumun untuk tabel itu akan membantu permintaan seperti itu akan ada satu tingkat di b-tree pada disk untuk turun untuk menemukan data untuk baris yang diberikan.
sumber
Kunci komposit sebagai kunci utama juga mengalami masalah ukuran indeks yang dapat memengaruhi penggunaan disk, kecepatan, dan cadangan. Anda mungkin ingin meninjau posting Kimberly Tripp tentang kunci utama dan indeks berkerumun di sini: http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-again!.aspx
Saya juga akan menyarankan kunci pengganti dalam kasus ini, bukan yang alami.
sumber
Jika Anda memiliki tabel yang menunjukkan hubungan banyak-ke-banyak yang hanya memiliki 2 kolom, tampaknya masuk akal.
Lih pertanyaan SO ini
Tapi saya akui, bahwa saya menambahkan Kunci Pengganti bahkan dalam kasus-kasus itu.
sumber