उम्मीदवार कुंजी

एक संबंध स्कीमा की उम्मीदवार कुंजी, या बस एक कुंजी, एक न्यूनतम key है। दूसरे शब्दों में, यह स्तंभों का कोई भी सेट है जिसमें प्रत्येक पंक्ति में मानों का एक अनूठा संयोजन होता है (जो इसे एक सुपरकी बनाता है), अतिरिक्त बाधा के साथ कि किसी भी कॉलम को हटाने से मानों के डुप्लिकेट संयोजन उत्पन्न हो सकते हैं (जो इसे न्यूनतम सुपरकी बनाता है).

विशिष्ट उम्मीदवार कुंजियों को कभी-कभी प्राथमिक कुंजी, द्वितीयक कुंजी या वैकल्पिक कुंजी कहा जाता है।

कैंडिडेट की में कॉलम को प्राइम एट्रिब्यूट कहा जाता है, और एक कॉलम जो किसी उम्मीदवार कुंजी में नहीं होता है उसे गैर-प्रमुख विशेषता कहा जाता है।

NULL मानों के बिना प्रत्येक संबंध में कम से कम एक उम्मीदवार कुंजी होगी: चूँकि डुप्लिकेट पंक्तियाँ नहीं हो सकती हैं, सभी स्तंभों का सेट एक सुपरकी है, और यदि वह न्यूनतम नहीं है, तो उसका कुछ सबसेट न्यूनतम होगा।

संबंध में सभी विशेषताओं के लिए उम्मीदवार कुंजी से एक कार्यात्मक निर्भरता है।

किसी संबंध की कैंडिडेट कुंजी वे सभी संभव तरीके हैं जिनसे हम एक पंक्ति की पहचान कर सकते हैं। जैसे, वे डेटाबेस स्कीमा के डिजाइन के लिए एक महत्वपूर्ण अवधारणा हैं।

उदाहरण
उम्मीदवार कुंजियों की परिभाषा को निम्नलिखित (सार) उदाहरण के साथ चित्रित किया जा सकता है। विशेषताओं (ए, बी, सी, डी) के साथ एक रिलेशन वेरिएबल (रिलेवर) आर पर विचार करें जिसमें केवल निम्नलिखित दो कानूनी मूल्य आर 1 और आर 2 हैं:

यहाँ r2 केवल अंतिम tuple के 'A' और 'D' मानों में r1 से भिन्न है।

R1 के लिए निम्नलिखित सेटों में विशिष्टता गुण है, अर्थात, सेट में समान विशेषता मानों के साथ उदाहरण में दो अलग-अलग टुपल्स नहीं हैं:
 * {ए, बी}, {ए, सी}, {बी, सी}, {ए, बी, सी}, {ए, बी, डी}, {ए, सी, डी}, {बी, सी, डी}, {ए बी सी डी}

R2 के लिए अद्वितीयता संपत्ति निम्नलिखित सेटों के लिए है;
 * {बी, सी}, {बी, डी}, {सी, डी}, {ए, बी, सी}, {ए, बी, डी}, {ए, सी, डी}, {बी, सी, डी}, {ए बी सी डी}

चूंकि एक रिल्वर की सुपरकीज़ उन विशेषताओं के सेट हैं जिनके पास उस रिल्वर के सभी कानूनी मूल्यों के लिए विशिष्टता संपत्ति है और क्योंकि हम मानते हैं कि आर 1 और आर 2 सभी कानूनी मूल्य हैं जो आर ले सकते हैं, हम आर के सुपरकीज़ के सेट को निर्धारित कर सकते हैं दो सूचियों का प्रतिच्छेदन लेना:
 * {बी, सी}, {ए, बी, सी}, {ए, बी, डी}, {ए, सी, डी}, {बी, सी, डी}, {ए, बी, सी, डी}

अंत में हमें उन सेटों का चयन करने की आवश्यकता है जिनके लिए सूची में कोई उपसमुच्चय#उचित उपसमुच्चय नहीं है, जो इस मामले में हैं:
 * {बी, सी}, {ए, बी, डी}, {ए, सी, डी}

ये वास्तव में रिल्वर आर की उम्मीदवार कुंजी हैं।

हमें उन सभी संबंधों पर विचार करना होगा जो यह निर्धारित करने के लिए एक रिलेवर को सौंपे जा सकते हैं कि क्या विशेषताओं का एक निश्चित सेट एक उम्मीदवार कुंजी है। उदाहरण के लिए, यदि हमने केवल r1 पर विचार किया होता तो हम यह निष्कर्ष निकालते कि {A,B} एक उम्मीदवार कुंजी है, जो गलत है। हालाँकि, हम इस तरह के संबंध से यह निष्कर्ष निकालने में सक्षम हो सकते हैं कि एक निश्चित सेट एक उम्मीदवार कुंजी नहीं है, क्योंकि उस सेट में अद्वितीयता गुण नहीं है (उदाहरण के लिए {A,D} r1 के लिए)। ध्यान दें कि एक सेट के उचित उपसमुच्चय का अस्तित्व जिसमें अद्वितीयता संपत्ति है, को सामान्य तौर पर सबूत के रूप में इस्तेमाल नहीं किया जा सकता है कि सुपरसेट एक उम्मीदवार कुंजी नहीं है। विशेष रूप से, ध्यान दें कि एक खाली संबंध के मामले में, शीर्षक के प्रत्येक उपसमुच्चय में खाली सेट सहित अद्वितीयता गुण होता है।

उम्मीदवार कुंजियों का निर्धारण
सभी उम्मीदवार कुंजियों के सेट की गणना की जा सकती है उदा. कार्यात्मक निर्भरता के सेट से। इसके लिए हमें एट्रिब्यूट क्लोजर को परिभाषित करने की आवश्यकता है $$\alpha +$$ एक विशेषता सेट के लिए $$\alpha$$. सेट $$\alpha^+$$ इसमें वे सभी विशेषताएँ शामिल हैं जो कार्यात्मक रूप से निहित हैं $$\alpha$$.

एकल उम्मीदवार कुंजी खोजना काफी सरल है। हम एक सेट से शुरू करते हैं $$\alpha$$ विशेषताओं का और क्रमिक रूप से प्रत्येक विशेषता को निकालने का प्रयास करें। यदि किसी एट्रिब्यूट को हटाने के बाद एट्रिब्यूट क्लोजर समान रहता है, तब यह विशेषता आवश्यक नहीं है और हम इसे स्थायी रूप से हटा सकते हैं। हम परिणाम कहते हैं $$\text{minimize}(\alpha)$$. अगर $$\alpha$$ सभी गुणों का समुच्चय है, तब $$\text{minimize}(\alpha)$$ उम्मीदवार कुंजी है।

वास्तव में हम इस प्रक्रिया से प्रत्येक उम्मीदवार कुंजी का पता लगा सकते हैं विशेषताओं को हटाने के हर संभव क्रम का प्रयास करके। हालाँकि विशेषताओं के कई और क्रमपरिवर्तन हैं ($$n!$$) सत्ता स्थापित से ($$2^n$$). यही है, कई विशेषता आदेश एक ही उम्मीदवार कुंजी की ओर ले जाएंगे।

उम्मीदवार कुंजी संगणना के लिए कुशल एल्गोरिदम के लिए मूलभूत कठिनाई है: कार्यात्मक निर्भरताओं के कुछ सेट तेजी से कई उम्मीदवार कुंजी की ओर ले जाते हैं। इसपर विचार करें $$2\cdot n$$ कार्यात्मक निर्भरता $$\{A_i \rightarrow B_i : i\in\{1,\dots,n\}\} \cup \{B_i \rightarrow A_i : i\in\{1,\dots,n\}\}$$ कौन सी पैदावार $$2^n$$ उम्मीदवार कुंजी: $$\{A_1, B_1\} \times \dots \times \{A_n, B_n\}$$. यही है, हम सबसे अच्छी उम्मीद कर सकते हैं कि एक एल्गोरिदम है जो उम्मीदवार कुंजी की संख्या के संबंध में कुशल है।

निम्नलिखित एल्गोरिदम वास्तव में उम्मीदवार कुंजी और कार्यात्मक निर्भरताओं की संख्या में बहुपद समय में चलता है: समारोह find_candidate_keys (ए, एफ) /* A सभी विशेषताओं का सेट है और F कार्यात्मक निर्भरताओं का सेट है */ के [0]: = कम से कम (ए); एन: = 1; /* अब तक ज्ञात चाबियों की संख्या */ मैं: = 0; / * वर्तमान में संसाधित कुंजी * / जबकि मैं <n करते हैं प्रत्येक के लिए α → β ∈ F करते हैं /* पिछली ज्ञात कुंजी और वर्तमान FD से एक नई संभावित कुंजी बनाएँ */ एस: = α ∪ (के [i] - β); /* खोजें कि क्या नई संभावित कुंजी पहले से ज्ञात कुंजियों का हिस्सा है */ मिला : = असत्य; j के लिए := 0 से n-1 करते हैं अगर के [जे] ⊆ एस तो पाया गया: = सच; /* यदि नहीं, तो जोड़ें अगर नहीं मिला तो के [एन] : = कम से कम (एस); एन := एन + 1; मैं: = मैं + 1 वापसी के

एल्गोरिदम के पीछे विचार यह है कि एक उम्मीदवार कुंजी दी गई है $$K_i$$ और एक कार्यात्मक निर्भरता $$\alpha \rightarrow \beta$$, कार्यात्मक निर्भरता पैदावार का उल्टा अनुप्रयोग सेट $$\alpha \cup (K_i \setminus \beta)$$, जो एक कुंजी भी है। हालाँकि यह अन्य पहले से ज्ञात उम्मीदवार कुंजियों द्वारा कवर किया जा सकता है। (एल्गोरिदम 'पाया' चर का उपयोग करके इस मामले की जांच करता है।) यदि नहीं, तो नई कुंजी को न्यूनतम करने से एक नई उम्मीदवार कुंजी प्राप्त होती है। मुख्य अंतर्दृष्टि यह है कि सभी उम्मीदवार कुंजी इस तरह से बनाई जा सकती हैं।

यह भी देखें

 * वैकल्पिक कुंजी
 * यौगिक कुंजी
 * डेटाबेस सामान्यीकरण
 * प्राथमिक कुंजी
 * संबंध का डेटाबेस
 * सुपरकी
 * प्रधान शामिल है बूलियन तर्क में कैंडिडेट की की संबंधित धारणा है

बाहरी संबंध

 * Relational Database Management Systems - Database Design - Terms of Reference - Keys: An overview of the different types of keys in the RDBMS (Relational Database Management System).