Perbedaan antara "Kunci Unik" dan "Kunci Utama"

Jawaban:

20

Sebuah tabel dapat memiliki paling banyak satu PRIMARY KEYkendala tetapi bisa memiliki sebanyak yang Anda inginkan UNIQUE KEYkendala.

Kolom yang merupakan bagian dari PRIMARY KEYharus didefinisikan sebagai NOT NULL. Itu tidak diperlukan untuk kolom yang merupakan bagian dari UNIQUE KEYkendala. Jika kolom tidak dapat dibatalkan, maka tidak ada perbedaan antara Kunci Unik dan Utama.

Perbedaan kecil lainnya adalah Anda dapat memilih nama yang Anda inginkan untuk UNIQUE KEYbatasan (dan indeks). Di sisi lain, PRIMARY KEYmemiliki nama default: PRIMARY.

ypercubeᵀᴹ
sumber
5

Satu perbedaan utama

  • Kunci primer melarang kolom yang dapat dibatalkan
  • Kunci unik memungkinkan kolom yang dapat dibatalkan

Kalau tidak, tidak ada banyak perbedaan ...

gbn
sumber
4

Sesuatu yang orang lain belum tunjukkan:

  • Jika Anda tidak secara eksplisit mendeklarasikan PK di tabel InnoDB, itu akan membuatnya di bawah selimut untuk Anda. Anda tidak dapat mengakses, memesan, atau memfilter dengan kunci implisit ini. Ini memiliki konsekuensi dalam hal sumber daya karena setiap indeks sekunder berisi penunjuk salinan ke PK baris.
atxdba
sumber
3

Perbedaan paling penting adalah dalam tujuannya .

  • Kunci Utama : Tujuan Kunci Utama adalah untuk bertindak sebagai "KUNCI". Kunci utama adalah kunci dalam database relasional yang digunakan untuk mengidentifikasi catatan.
  • Indeks Unik : Indeks Unik adalah "INDEX" yang dimaksudkan untuk kinerja. Pengoptimal tahu bahwa untuk kondisi "di mana x =: x" hanya akan ada satu catatan sebagai hasilnya - sehingga dapat menyiapkan rencana yang sesuai untuk itu.
  • Batasan Unik : Ini adalah "CONSTRAINT" yang memastikan bahwa tidak ada nilai duplikat di kolom itu. Ini merupakan kendala untuk integritas data.

Terlepas dari tujuannya, poin-poin berikut patut diperhatikan.

  • Kecuali KUNCI UTAMA yang ditentukan lain akan mencoba untuk membuat INDEKS CLUSTERED (Poin ini adalah tentang SQL Server, sebagaimana disebutkan dalam komentar)
  • Hanya ada satu KUNCI UTAMA per tabel; tetapi bisa ada banyak kendala unik dan indeks unik
  • KUNCI UTAMA selalu bukan nol tetapi kolom dengan batasan unik dapat menyimpan nilai NULL
LCJ
sumber
1
Pertanyaannya ditandai MySQL. Anda tidak dapat menentukan sebaliknya, jika tabel menggunakan mesin InnoDB dan memiliki kunci utama, maka ini adalah indeks berkerumun. Tidak ada pilihan. Mungkin Anda berpikir tentang SQL Server.
ypercubeᵀᴹ