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.


5

Satu perbedaan utama

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

Kalau tidak, tidak ada banyak perbedaan ...


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.

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

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ᵀᴹ
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.