Apa perbedaan antara kunci Primer dan kunci Super dalam DBMS

20

Saya baru mengenal DBMS dan saya masih belajar teorinya.

Saya menjadi benar-benar bingung dengan bisnis utama ini dan setelah googling saya mempersempitnya menjadi hanya 2 kunci yang tidak saya dapatkan (primer dan super key).

Saya punya beberapa pertanyaan tentang DBMS. Saya akan berterima kasih jika Anda bisa menjawabnya untuk saya.

1) Apa perbedaan antara kunci Primer dan kunci Super dalam DBMS? Sangat menghargai jika Anda dapat menggunakan contoh yang komprehensif untuk menjelaskan dengan benar

2) Dapatkah kunci Primer dan kunci Super keduanya memiliki beberapa kolom digabungkan untuk membentuk kunci Primer dan kunci Super?

3) Apakah kunci Primer merupakan subset dari kunci Super atau sebaliknya?

MikeHil
sumber
1
Satu hal yang banyak disorot adalah bahwa tuple (baris) itu sendiri adalah superkey. Karena tujuannya adalah untuk dapat mengidentifikasi baris secara unik, yaitu untuk dapat mengidentifikasi secara unik tuple yang berisi kombinasi nilai tertentu, salah satu cara untuk melakukannya adalah dengan memiliki semua nilai yang tersedia. Karena itu tuple adalah superkey untuk dirinya sendiri, karena begitu kita mengetahui nilai-nilai dalam tuple, maka jelas kita tahu bagaimana menemukan tuple yang memiliki nilai-nilai itu. Tampaknya konyol pada awalnya tetapi menetapkan batas atas pada apa yang bisa menjadi superkey untuk tuple - tuple itu sendiri.
Dave
@Dave Himpunan semua nama kolom dari relasi / tabel (dan karenanya masing-masing tupel / barisnya) adalah superkey dari itu. Bukan "tuple (baris) itu sendiri".
philipxy
@ phipipxy Anda benar dan saya salah bicara - saya berdiri dikoreksi. Terima kasih telah menambahkan klarifikasi.
Dave

Jawaban:

23

Sebuah super Key hanyalah sebuah non-minimal Candidate Key , yang mengatakan satu dengan kolom tambahan tidak sepenuhnya diperlukan untuk memastikan keunikan baris.

Sebuah Primary Key adalah minimal Candidate Key , yang berarti semua kolom konstituen secara ketat diperlukan untuk memastikan keunikan.

Sebagai pengembang / perancang basis data yang berpengalaman selama 30 tahun, saya belum pernah mendengar istilah Super Key sampai saya melihat pertanyaan ini, dan mencarinya. Konsep Super Key tampaknya lebih erat dengan topik kinerja dan desain Skema Fisik karena langsung memetakan ke konsep indeks nonclustered yang unik dengan kolom tambahan untuk meningkatkan cakupan permintaan.

Pieter Geerkens
sumber
3
Ini sangat tidak akurat. Anda menggunakan superkey, CK & PK sebagai pengganti superkey, superkey & CK yang tepat. Superkey adalah himpunan UNIK. (CK adalah superkey "minimal". Tidak ada gagasan "CK minimal". Setiap CK adalah superkey. Jadi superkey tidak harus memiliki lebih banyak kolom daripada CK. PK adalah CK yang disebut PK. Jika itu harus menjadi "minimal CK" maka "minimal" harus berarti "sewenang-wenang".) SQL PK & UNIK TIDAK NULL menyatakan superkeys. (SQL PK mungkin atau mungkin bukan PK.) Superkeys sangat penting untuk definisi CK, yang sangat penting untuk desain termasuk normalisasi. Lihat jawaban saya.
philipxy
1
Selain itu, pemahaman tentang SK diperlukan untuk menggunakan Boyce-Codd NF
Tanckom
16

Super Keys: Super key adalah singkatan dari superset kunci. Super Key adalah sekumpulan satu atau lebih atribut yang diambil secara kolektif dan dapat mengidentifikasi semua atribut lainnya secara unik.

Sebagai Contoh, Kami memiliki meja

Book (BookId, BookName, Author)

Jadi di tabel ini bisa kita miliki

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Sebagai kunci Super kami. Setiap kunci super mampu mengidentifikasi secara unik setiap tuple (catatan).

Tombol Kandidat Kunci Kandidat adalah kunci super yang tidak memiliki atribut berlebihan. Dengan kata lain kunci kandidat adalah kunci super minimal. Misalnya, Dalam ilustrasi di atas

   (BookId)
   (BookName,Author)

Dua kunci ini bisa menjadi kunci kandidat, karena kunci yang tersisa memiliki atribut yang berlebihan. Berarti dalam catatan super key (BookId, BookName) dapat diidentifikasi secara unik hanya dengan bookid dan oleh karena itu Bookname adalah atribut yang berlebihan

Kunci Utama: Ini adalah kunci kandidat yang dipilih oleh perancang basis data untuk mengidentifikasi entitas dengan dalam entitas yang ditetapkan. ATAU Kunci yang digunakan untuk mengidentifikasi secara unik setiap catatan dikenal sebagai kunci utama.

Dari kunci Kandidat di atas, siapa pun dapat menjadi kunci utama. Dan yang lain yang tidak dipilih sebagai kunci utama akan dikenal sebagai kunci Alternatif

Payal Trivedi
sumber
Ini menjawab pertanyaan dan layak mendapat dukungan.
srk
Perhatikan juga bahwa nama lain alternative keyadalah secondary keysama. Jawaban bagus!
Wael Alshabani
2

Dari jawaban stackoverflow.com saya :

Kunci kandidat adalah seperangkat kolom yang secara unik mengidentifikasi baris dan yang tidak berisi subset kolom yang lebih kecil ("layak") yang secara unik mengidentifikasi baris.

Superkey adalah sekumpulan kolom yang secara unik mengidentifikasi baris. Jadi kunci kandidat adalah superkey yang tidak mengandung superkey yang lebih kecil.

Dalam SQL Anda tidak dapat mendeklarasikan kunci kandidat kosong. Juga, UNIK BUKAN NULL dan KUNCI UTAMA (yang dalam hal kendala berarti UNIK BUKAN NULL) menyatakan superkeys, bukan kunci per se. Jika kumpulan kolom deklarasi seperti itu tidak berisi kumpulan kolom yang lebih kecil yang dinyatakan sebagai superkey maka superkey yang mendeklarasikannya adalah kunci kandidat.

Dari stackoverflow.com ini, jawabanku adalah tabel yang diberikan:

Untuk set kolom X dan Y kita dapat menulis X -> Y . Kami mengatakan bahwa X adalah set penentu dan Y adalah set ditentukan / dalam dependensi fungsional ( FD ) X -> Y.

Kita mengatakan X secara fungsional menentukan Y dan Y secara fungsional ditentukan oleh X. Kita mengatakan X adalah penentu X -> Y. Dalam {C} -> Y kita mengatakan C secara fungsional menentukan Y. Dalam X -> {C} kita katakan X secara fungsional menentukan C. Ketika X adalah superset dari Y kita katakan X -> Y adalah sepele .

Kita katakan X -> Y berlaku pada tabel T ketika setiap subrow nilai untuk X selalu / hanya muncul dengan subrow nilai yang sama untuk Y. Atau kita katakan X -> Y adalah FD dari / dalam T. Ketika X adalah penentu dari beberapa FD dalam tabel T kita katakan X adalah penentu / dalam T.

Sebuah superkey dari T tabel adalah satu set kolom yang secara fungsional menentukan setiap atribut. Sebuah kunci kandidat ( CK ) adalah superkey yang berisi superkey tidak lebih kecil. Kita dapat memilih satu CK sebagai kunci utama ( PK ) dan kemudian memanggil kunci alternatif CK lainnya . Kolom adalah prima ketika berada di beberapa CK.

(Seperti yang saya komentari di sana, "Empat kalimat tebal untuk FD, hold, superkey dan CK sudah cukup.")

(Tabel dengan CK kosong dibatasi berisi paling banyak satu baris. Set kolom yang ditentukan oleh set kosong dibatasi memiliki nilai subrow yang sama di setiap baris.)

philipxy
sumber
1

Kunci Kunci adalah satu atau kombinasi dari beberapa bidang. Tujuannya adalah untuk mengakses atau mengambil baris data dari tabel sesuai dengan persyaratan. Kunci didefinisikan dalam tabel untuk mengakses atau mengurutkan data yang disimpan dengan cepat dan lancar. Mereka juga digunakan untuk membuat tautan di antara berbagai tabel.

Jenis Kunci Tabel atau relasi berikut akan digunakan untuk mendefinisikan berbagai jenis kunci.

Kunci Utama Atribut atau kombinasi atribut yang secara unik mengidentifikasi baris atau catatan dalam suatu relasi dikenal sebagai kunci primer.

Kunci sekunder Bidang atau kombinasi bidang yang menjadi dasar pengambilan dikenal sebagai kunci sekunder. Kunci sekunder adalah bidang yang tidak unik. Satu nilai kunci sekunder dapat merujuk ke banyak catatan.

Kandidat Key atau Alternate key Suatu relasi hanya dapat memiliki satu primary key. Mungkin berisi banyak bidang atau kombinasi bidang yang dapat digunakan sebagai kunci utama. Satu bidang atau kombinasi bidang digunakan sebagai kunci utama. Bidang atau kombinasi bidang yang tidak digunakan sebagai kunci utama dikenal sebagai kunci kandidat atau kunci alternatif.

Kunci komposit atau kunci gabungan Kunci utama yang terdiri dari dua atau lebih atribut dikenal sebagai kunci komposit.

Sortir atau tombol Kontrol Bidang atau kombinasi bidang yang digunakan untuk mengurutkan data yang disimpan secara fisik yang disebut kunci sortir. Itu juga dikenal sebagai kunci kontrol.

Sebuah superkey adalah kombinasi dari atribut yang dapat digunakan secara unik untuk mengidentifikasi catatan database. Sebuah meja mungkin memiliki banyak superkeys. Kandidat kunci adalah bagian khusus dari superkeys yang tidak memiliki informasi asing di dalamnya.

Contoh untuk kunci super: Bayangkan tabel dengan bidang Nama, Usia, SSN, dan <Ekstensi Telepon>. Tabel ini memiliki banyak kemungkinan superkeys. Tiga di antaranya adalah SSN, Ekstensi dan Nama Telepon. Dari yang terdaftar, hanya SSN yang merupakan kunci kandidat, karena yang lain berisi informasi yang tidak perlu untuk mengidentifikasi catatan secara unik.

Kunci Asing Kunci asing adalah atribut atau kombinasi atribut dalam suatu relasi yang nilainya cocok dengan kunci primer dalam relasi lain. Tabel di mana kunci asing dibuat disebut tabel dependen. Tabel yang dirujuk dengan kunci asing dikenal sebagai tabel induk.

untuk kunci Minimal Super lihat tautan ini, lebih jelas di sana http://www.answers.com/topic/superkey-1

Ved Prakash
sumber