it-swarm.asia

Dalam SQL, apakah itu kunci komposit atau gabungan?

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.

32
igordcard

Kedua kunci komposit dan kunci majemuk menggambarkan kunci kandidat dengan lebih dari satu atribut. Menurut Relational Database Dictionary (C.J.Date), keduanya 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.

32
nvogel

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 dengan sendirinya.

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 transaksi tunggal.

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 itu 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.

20
jcolebrand

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

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

Dengan asumsi bahwa pertanyaan 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

3
Hemme

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.

3
dilbag koundal

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 "gabungan" selalu tepat untuk digunakan.

2
Tom Gnade