Kunci kandidat adalah konsep penting dalam normalisasi database. Baca terus untuk mengetahui apa itu kunci kandidat dan cara memeriksa apakah sekumpulan atribut adalah kunci kandidat.
Kunci kandidat, juga disebut kunci, merupakan bagian penting dari desain database. Ini adalah landasan teoretis untuk konsep teknis seperti kunci primer dan alternatif (unik). Setiap perancang basis data harus mengetahui cara mengidentifikasi kunci kandidat dan cara memilih yang tepat untuk tabel mereka.
Konsep kunci kandidat diajarkan di semua mata kuliah database universitas sebagai bagian dari teori normalisasi database. Masalah umum yang akan Anda hadapi saat mempelajari tentang kunci kandidat adalah memverifikasi apakah set atribut yang diberikan adalah kunci kandidat dan menemukan semua kunci kandidat untuk suatu relasi.
Memahami kunci kandidat penting untuk memahami bentuk normal dalam tabel database. Pengetahuan ini akan membantu Anda mengingat aturan untuk bentuk normal yang paling umum.
Pada artikel ini, kami akan menjelaskan konsep kunci kandidat secara sederhana. Selain itu, kami akan menunjukkan cara memverifikasi apakah sekumpulan atribut adalah kunci kandidat.
Terminologi normalisasi basis data dasar
Sebelum Anda membaca tentang kunci kandidat, pastikan Anda sudah familiar dengan terminologi normalisasi dasar. Mari kita tinjau secara singkat istilah yang paling penting.
hubungan adalah nama teoritis untuk tabel database. Suatu relasi (tabel) memiliki nama dan terdiri dari atribut-atribut yang diberi nama (kolom).
A dependensi fungsional dalam sebuah relasi (A -> B ) memberitahu Anda bahwa setiap kali dua baris memiliki nilai yang sama untuk semua atribut di himpunan A, mereka juga akan memiliki nilai yang sama untuk semua atribut di himpunan B.
penutupan dari himpunan atribut adalah himpunan atribut-atribut yang dapat ditentukan secara fungsional dari himpunan ini. Anda dapat meninjau algoritme untuk menghitung penutupan atribut di sini.
Superkey
Secara informal, kunci kandidat adalah sekumpulan atribut yang secara unik mengidentifikasi sebuah baris.
Menurut definisi, kunci kandidat adalah superkey minimal. Jadi, apa artinya ini? Sebuah superkey adalah atribut atau sekumpulan atribut sedemikian rupa sehingga penutupannya adalah semua atribut dalam relasi.
Mari kita lihat beberapa contoh. Di sini, kami memiliki tabel CourseEditions. Ini menyimpan informasi tentang edisi kursus.
Setiap tahun, kursus tertentu dapat diajarkan oleh guru yang berbeda, dengan harga yang berbeda dan batas tempat yang berbeda. Dengan demikian, kami memiliki dependensi fungsional berikut:
- id -> kursus, tahun, guru, harga, tempat – ID menentukan semua atribut lainnya
- kursus, tahun -> id, guru, harga, tempat – kursus dan tahun menentukan ID, guru, harga, dan tempat.
Edisi Kursus
id | kursus | tahun | guru | harga | tempat |
---|---|---|---|---|---|
1 | Database | 2019 | Chris Tanjung | 100 | 45 |
2 | Matematika | 2019 | Daniel Parr | 80 | 34 |
3 | Database | 2020 | Jam Jennifer | 110 | 30 |
Apa superkey dalam tabel ini? Pertama, semua atribut membentuk superkey, jadi himpunan {id, course, year, teacher, price, spot} adalah kunci super. Ingat bahwa himpunan semua atribut adalah superkey di semua tabel.
Apakah ada superkey yang lebih kecil di tabel ini? Ya, ada. Kumpulan {id} adalah kunci super. Kami memiliki ketergantungan fungsional id -> kursus, tahun, guru, harga, tempat , dan tentu saja, kita memiliki ketergantungan sepele id -> id . Setelah kita memiliki id, kita dapat menentukan semua atribut lain dari dependensi fungsional.
Set {kursus, tahun} juga merupakan kunci super. Kami memiliki ketergantungan fungsional kursus, tahun -> id, guru, harga, tempat , dan kita memiliki dependensi fungsional sepele course -> course dan tahun -> tahun . Setelah kita memiliki kursus dan tahun , kita dapat menentukan semua atribut lain dari dependensi fungsional.
Kumpulan {id, kursus, tahun, guru} juga merupakan kunci super. Kami memiliki id , kursus , dan tahun . Jadi, kita dapat menentukan semua atribut lain dalam tabel dengan ketiga atribut tersebut.
Di sisi lain, set {guru} bukan superkey. Jika kita mengenal guru, kami tidak dapat menentukan atribut lain selain guru. Set {guru, harga} juga bukan superkey. Setelah kita memiliki guru dan harga , kami tidak dapat menentukan atribut lagi.
Superkey Minimal
Tidak semua superkey adalah kunci kandidat. Untuk menjadi kunci kandidat, superkey harus minimal, yang berarti bahwa jika Anda mengambil atribut apa pun darinya, itu tidak akan menjadi superkey lagi. Mari kita lihat beberapa contohnya.
Kumpulan {id} adalah superkey, dan itu minimal. Anda tidak dapat mengambil atribut darinya, karena Anda kemudian akan memiliki himpunan kosong, dan himpunan kosong bukanlah superkey. Jadi, himpunan {id} adalah kunci kandidat.
Set {kursus, tahun} juga merupakan kunci super dan kunci kandidat. Jika Anda mengambil salah satu atribut darinya, set yang tersisa tidak lagi menjadi superkey. Anda membutuhkan keduanya kursus dan tahun untuk menentukan atribut lain dalam himpunan.
Namun, himpunan {id, kursus, tahun, guru} adalah superkey tetapi bukan kunci kandidat. Misalnya, jika Anda menghapus atribut guru, set yang tersisa masih merupakan superkey. Sebenarnya, dalam hal ini, Anda dapat menghapus atribut apa pun dari {id, course, year, teacher} , dan set yang tersisa akan tetap menjadi superkey.
Perhatikan bahwa superkey minimal tidak berarti superkey dengan jumlah elemen paling sedikit. Keduanya {id} dan {kursus, tahun} adalah kunci kandidat meskipun memiliki jumlah elemen yang berbeda.
Algoritma:Memverifikasi Bahwa Kumpulan Atribut Adalah Kunci Kandidat
Ini adalah masalah desain database yang umum:bagaimana Anda memverifikasi jika satu set atribut adalah kunci kandidat?
Berikut algoritme untuk memverifikasinya:
- Langkah 1:Periksa apakah set yang diberikan adalah superkey. Hitung penutupan atribut dalam himpunan. Jika penutupan adalah himpunan semua atribut, himpunan tersebut adalah kunci super.
- Langkah 2:Periksa apakah superkey minimal. Hapus setiap atribut, satu per satu. Jika himpunan yang tersisa adalah superkey, maka superkey tersebut tidak minimal, dan himpunan tersebut bukan kunci kandidat. Jika Anda tidak dapat menghapus atribut apa pun dan mempertahankan properti superkey, himpunan tersebut adalah kunci kandidat.
Misalnya, mari kita periksa apakah set {kursus, tahun} memang merupakan kunci kandidat.
- Langkah 1:Mari kita hitung penutupan {kursus, tahun}. Menggunakan algoritme penutupan, kami menyimpulkan bahwa penutupan memang {id, kursus, tahun, guru, harga, tempat}. Jadi, himpunan {kursus, tahun} memang superkey.
- Langkah 2. Coba hapus kursus dari himpunan. Tinggal set {tahun}. Tidak ada ketergantungan fungsional hanya dengan tahun sebagai sisi kiri. Jadi, penutupan himpunan ini adalah {tahun} . Demikian pula, ketika kita menghapus atribut tahun, penutupan set yang tersisa adalah {course}. Baik {tahun} atau {kursus} adalah superkey, jadi himpunan {kursus, tahun} adalah superkey minimal dan dengan demikian merupakan kunci kandidat.
Jika Anda menyukai artikel ini, lihat artikel normalisasi lainnya di blog kami.
Jika Anda seorang siswa yang mengambil kelas basis data, pastikan untuk membuat Akun Akademik gratis di Vertabelo, alat menggambar diagram ER online kami. Ini memungkinkan Anda menggambar diagram ER logis dan fisik langsung di browser Anda.
Vertabelo mendukung PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift, dan database relasional lainnya. Cobalah, dan lihat betapa mudahnya untuk memulai!