Dalam SQL, apakah itu kunci komposit atau gabungan?

31

Tentang SQL (Komputasi / Database):

Ketika kita memiliki dua atau lebih bidang dalam tabel yang, bersama-sama, mengidentifikasi catatannya secara unik, apa cara yang tepat untuk menyebutnya? Kunci komposit atau gabungan?

Saya telah melihat di web keduanya menggunakan jadi saya tidak begitu yakin.

kartu igord
sumber
1
Lihat dua tren Google Penelusuran ini: goo.gl/5u4XdR .
igordcard

Jawaban:

32

Kedua kunci komposit dan kunci majemuk menggambarkan kunci kandidat dengan lebih dari satu atribut. Menurut Kamus Database Relasional (CJDate), mereka memiliki arti yang sama.

Dalam pemodelan ER istilah "kunci majemuk" juga memiliki makna yang lebih spesifik. Ini berarti kunci yang atribut penyusunnya adalah referensi untuk kunci di entitas lain - yaitu kunci majemuk membentuk hubungan yang mengidentifikasi. Untuk sebagian besar tujuan, ini bukan konsep yang sangat berguna atau penting sehingga istilah komposit / senyawa sering diperlakukan sebagai dipertukarkan. Mungkin yang terbaik adalah tetap menggunakan "kunci komposit" kecuali Anda merujuk secara khusus pada konsep pemodelan ER dari kunci majemuk.

nvogel
sumber
3
"Dalam pemodelan ER istilah" kunci majemuk "juga memiliki arti yang lebih spesifik" - Kedengarannya meyakinkan :) Tetapi apakah Anda memiliki kutipan?
onedaywhen
Jadi kunci majemuk akan menjadi kunci yang biasanya ditemukan di tabel persimpangan yang digunakan untuk banyak-banyak hubungan misalnya?
Josh P
19

Saya masih tidak yakin mengapa http://en.wikipedia.org/wiki/Compound_key tidak dikonsultasikan. Ini sangat jelas menyatakan (dan benar):

Dalam desain basis data, kunci gabungan adalah kunci yang terdiri dari 2 atau lebih atribut yang secara unik mengidentifikasi kejadian entitas. Setiap atribut yang membentuk kunci majemuk adalah kunci sederhana dalam dirinya sendiri.

Ini sering dikacaukan dengan kunci komposit di mana meskipun ini juga merupakan kunci yang terdiri dari 2 atau lebih atribut yang secara unik mengidentifikasi kejadian entitas, setidaknya satu atribut yang membentuk kunci komposit bukanlah kunci sederhana dalam dirinya sendiri.

Kunci komposit terdiri dari elemen yang mungkin atau mungkin bukan kunci asing. Contoh: Dalam tabel detail Transaksi, kuncinya adalah (TransactionId, ItemNumber). Detail transaksi adalah sejumlah transaksi. TransactionId adalah kunci asing, merujuk pada tabel Transaksi. ItemNumber bukanlah kunci dalam dan dari dirinya sendiri. Ini hanya mengidentifikasi item secara unik dalam konteks satu transaksi.

Kunci majemuk adalah kunci di mana bagian mana pun dari kunci itu adalah kunci asing. Contoh: dalam sistem reservasi hotel, reservasi memiliki kunci majemuk, (GuestId, HotelId, ArrivalDate). GuestId mengidentifikasi Tamu, dan referensi tabel Tamu. HotelId mengidentifikasi Hotel, dan referensi tabel Hotel. ArrivalDate mengidentifikasi Tanggal. Mungkin ada atau tidak ada tabel Tanggal yang direferensikan, tetapi mengidentifikasi Entitas (Tanggal) dengan cara apa pun.

Yang juga perlu diperhatikan adalah fakta ini: Kunci sederhana adalah kunci yang terdiri dari satu kolom, sedangkan kunci komposit terdiri dari dua atau lebih kolom.

jcolebrand
sumber
4
jcolebrand: "Kunci majemuk adalah kunci di mana setiap bagian dari kunci dapat mengidentifikasi catatan." Itu tidak benar. Menurut definisi suatu kunci harus dapat direduksi (superkey minimal). Jika hanya beberapa atribut yang diperlukan untuk mengidentifikasi tuple secara unik maka menurut definisi itu adalah superkey dan bukan kunci.
nvogel
a) Saya mengutip halaman wikipedia. b) Saya cenderung setuju dengan itu. Setiap bagian dari kunci majemuk itu sendiri adalah kunci sederhana. Saya tidak keberatan jika Anda juga menyebutnya superkey. Saya tidak percaya bahwa semua kunci majemuk bisa menjadi superkeys. Ergo, saya mendukung apa yang ada di artikel wikipedia, dan saya mendukung definisi yang saya kutip. Saya bisa pergi dan mengambil buku desain database Hardcover saya yang diterbitkan jika itu akan membuat Anda lebih bahagia.
jcolebrand
2
Saya pikir Anda melewatkan titik yang relevan, yaitu kunci majemuk terdiri dari kunci dari entitas lain . Subset kunci yang tepat tidak mungkin menjadi kunci. Seperti yang saya yakin Anda tahu, kunci harus minimal (dalam tabel yang merupakan kunci) - jadi jika Anda menghapus atribut apa pun darinya maka itu tidak akan menjadi kunci lagi.
nvogel
2
"Kunci" hanya kependekan dari "kunci kandidat". Definisi buku teks tentang kunci kandidat adalah dan selalu menjadi "superkey minimal". Referensi: Kamus Tanggal hal17 atau Buku Alice jika Anda ragu tentang definisi kunci.
nvogel
1
Definisi " kunci majemuk " dan " kunci situs " pada halaman Wikipedia diubah pada 13 Juli 2014, dan tidak lagi cocok dengan definisi dalam jawaban ini. (Saya tidak mengubah definisi, hanya menunjukkan bahwa definisi tidak cocok sekarang.)
spencer7593
3

Dalam bahasa Inggris itu adalah "kunci komposit". Misalnya, lihat situs web MSDN (pencarian apa pun yang mengandung "kunci komposit sql" akan dilakukan).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Dengan asumsi bahwa pertanyaannya mengenai Basis Data Relasional, saya mencari definisi "netral" di Wikipedia :

Kunci komposit adalah kunci yang terdiri dari dua atau lebih atribut dalam tabel yang (bersama-sama) secara unik mengidentifikasi catatan

Hemme
sumber
1
Tidak ada sumber, tidak ada referensi, tidak ada tautan, tidak ada ... jawaban buruk.
google.com/search?q=sql+composite+key+definition hanya akan membawa Anda ke jutaan situs yang berbicara tentang SQL Composite Keys
Hemme
1
demikian juga pencarian google untuk kunci majemuk
jcolebrand
3
Ini ilmiah: googlefight.com/...
Hemme
3

Kunci komposit terdiri dari lebih dari satu atribut untuk secara unik mengidentifikasi kejadian entitas. Ini berbeda dari kunci majemuk di mana satu atau lebih atribut, yang membentuk kunci, bukan kunci sederhana dalam hak mereka sendiri.

Misalnya, Anda memiliki database yang menyimpan koleksi CD Anda. Salah satu entitas disebut trek, yang menyimpan rincian trek pada CD. Ini memiliki kunci komposit nama CD, nomor trek.

dilbag koundal
sumber
2

Kedengarannya bagi saya seperti kunci komposit adalah superset yang mencakup kunci majemuk. Jika kami menerima bahwa kunci komposit dibuat lebih dari satu atribut (apa pun jenisnya), dan kunci majemuk dibuat lebih dari satu kunci sederhana. Kunci majemuk adalah jenis kunci komposit dengan makna yang lebih spesifik, tetapi istilah kunci "komposit" selalu tepat untuk digunakan.

Tom Gnade
sumber