Bagaimana cara menentukan kunci utama komposit yang terdiri dari dua bidang di SQL?
Saya menggunakan PHP untuk membuat tabel dan segalanya. Saya ingin membuat nama tabel voting
dengan bidang QuestionID
, MemeberID
dan vote
. Dan kunci utama Komposit terdiri dari bidang QuestionID
dan MemberID
.
Bagaimana saya harus melakukan ini?
sql
primary-key
composite-primary-key
Zeeshan Rang
sumber
sumber
Jawaban:
Hanya untuk klarifikasi: sebuah tabel dapat memiliki paling banyak satu kunci utama. Kunci utama terdiri dari satu atau beberapa kolom (dari tabel itu). Jika kunci utama terdiri dari dua atau lebih kolom, itu disebut kunci utama komposit . Ini didefinisikan sebagai berikut:
Pasangan (QuestionID, MemberID) harus unik untuk tabel dan tidak ada nilai yang boleh NULL. Jika Anda melakukan kueri seperti ini:
itu akan menggunakan indeks kunci utama. Namun jika Anda melakukan ini:
itu tidak akan terjadi karena untuk menggunakan indeks komposit memerlukan penggunaan semua kunci dari "kiri". Jika indeks ada di bidang (A, B, C) dan kriteria Anda ada di B dan C maka indeks itu tidak berguna bagi Anda untuk kueri itu. Jadi pilih dari (QuestionID, MemberID) dan (MemberID, QuestionID) mana saja yang paling sesuai untuk bagaimana Anda akan menggunakan tabel.
Jika perlu, tambahkan indeks di sisi lain:
sumber
(MemberID, QuestionID)
, sebagai kebalikan dari hanyaMemberID
? Sejauh yang saya mengerti, Anda mendapatkan pencarian terindeks saat memilih denganQuestionId
, dan juga(QuestionId, MemeberId)
, jadi satu-satunya yang hilang adalahMemberId
.sumber