Anda benar pada uang dengan kunci kandidat yang mungkin, vikkyhacks. Kunci kandidat yang tumpang tindih adalah kunci kandidat gabungan (terdiri dari lebih dari satu atribut) dengan setidaknya satu atribut yang sama. Jadi kunci kandidat Anda yang tumpang tindih adalah NM dan NO (mereka membagikan N).
Penjelasan tambahan di atas, awalnya dibiarkan dalam komentar:
Semua kunci kandidat yang tumpang tindih adalah grup kunci kandidat (misalnya dua atau lebih). Itu berarti kriteria pertama adalah bahwa relasi Anda R
harus memiliki lebih dari satu kunci kandidat (kunci super minimal). Agar salah satu kunci kandidat menjadi tumpang tindih, masing-masing dari mereka (lagi dua atau lebih) harus memenuhi beberapa persyaratan tambahan. 1) Keduanya harus merupakan kunci kandidat gabungan. Mereka harus terdiri dari lebih dari satu atribut, jadi kunci seperti A
tidak akan pernah tumpang tindih, tetapi AB
mungkin tumpang tindih dengan kunci lain. 2) Kunci komposit harus berbagi atribut. AB
tumpang tindih dengan AC
dan BD
tetapi tidak CD
atau EF
.
Untuk meringkas: dua set atau lebih atribut di mana 1) setiap set adalah kunci kandidat (superkey minimal) untuk relasi, 2) setiap set adalah kunci komposit (terdiri dari lebih dari satu atribut), dan 3) satu atau lebih dari atribut kunci komposit tumpang tindih dengan atribut kunci lain di set. Jadi Anda bisa mengesampingkan MNOP
dan NOPL
atas dasar bahwa mereka bukan superkey minimal. Anda dapat mengesampingkan P
dan L
atas dasar bahwa itu bukan kunci komposit (mereka terdiri dari satu atribut). Anda memiliki dua kunci, NO
dan NM
, yang membagikan atribut N
, sehingga Anda selesai.
Contoh
Mungkin juga membantu jika Anda memiliki contoh yang benar-benar dapat membungkus kepala Anda. Satu-satunya waktu yang pernah saya lihat di mana Anda akan memiliki kunci kandidat yang tumpang tindih adalah ketika Anda memiliki 1) dua atribut yang secara fungsional menentukan satu sama lain (misalnya hubungan satu-ke-satu antara A
dan di B
mana A
memiliki satu B
dan B
memiliki satu A
) dan 2) ini atribut adalah bagian dari kunci kandidat gabungan.
Misalnya, dalam beberapa sistem, a Customer
memiliki satu CreditCard
, dan CreditCard
milik satu Customer
. Di tabel Penyewaan, Anda mengidentifikasi secara unik Rental
oleh EquipmentId
, Date
dan CustomerId
. Untuk kenyamanan, Anda juga telah menyimpannya CreditCard
di meja ini.
Ini berarti bahwa FD berikut ini berlaku:
{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}
Tapi karena asosiasi itu satu-ke-satu, FD berikut juga berlaku:
{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}
Sejak CustomerId
dan CreditCard
dapat digunakan secara bergantian untuk mengidentifikasi pelanggan Anda secara unik.
Dalam skenario di atas, Anda memiliki kunci kandidat yang tumpang tindih:
{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}
Mereka tumpang tindih karena mereka adalah kunci komposit (mereka terdiri dari lebih dari satu atribut) dan karena setidaknya satu dari atribut mereka dibagikan (dalam hal ini, mereka berbagi keduanya EquipmentId
dan Date
.
Anda bilang Anda tidak peduli BCNF
saat ini, tetapi untuk membawa pulang ini sepenuhnya, skenario di atas adalah alasan mengapa Anda kadang-kadang akan melihat meja yang ada 3NF
tetapi tidak BCNF
. Tabel di atas adalah dalam 3NF
, tetapi tidak BCNF
.
3NF
memungkinkan FD di mana 1) FD sepele 2) sisi kiri FD adalah kunci kandidat atau 3) sisi kanan FD adalah atribut kunci (atribut yang digunakan untuk membuat kunci apa saja). Karena CreditCard
dan CustomerId
keduanya atribut utama, semua FD memenuhi 2 atau 3.
BCNF
sangat mirip, tetapi hanya memungkinkan kondisi 1 dan 2 diizinkan oleh 3NF
. Karena kondisi ke-3 tidak diizinkan oleh BCNF
, dan keduanya CID -> CC
serta CC -> CID
menggunakan kondisi 3, tabel ini tidak BCNF
, tetapi memang demikian 3NF
.
Untuk tujuan praktis, kasus ini cukup langka dan informasi ini sangat lengkap. Hadiah bahwa meja Anda memiliki masalah adalah fakta bahwa CreditCard/CustomerId
pasangan diulangi di meja Anda. Anda juga mungkin menyadari bahwa tabel tidak akan masuk 2NF
tanpa kondisi langka ini di mana sisi kanan FD dapat menjadi atribut kunci karena CreditCard
merupakan ketergantungan parsial pada kunci primer (tergantung pada CustomerId
tetapi tidak EquipmentId
atau Date
.
P
,L
,NO
, danNM
A memenuhi syarat Super kunci sebagai kunci kandidat hanya jika tidak memiliki bagian yang minimal. Mengambil contoh AndaMNOP
adalah kunci super karena subset minimalP
di dalamnya dapat menurunkan semua atribut lain pada relasi