प्राथमिक कुंजी

डेटाबेस के संबंधपरक मॉडल में,प्राथमिक कुंजी विशेषताओं (स्तंभों) के न्यूनतम सेट का एक विशिष्ट विकल्प है, जो विशिष्ट रूप से संबंध (तालिका) में टपल (पंक्ति) निर्दिष्ट करती है। । अनौपचारिक रूप से,प्राथमिक कुंजी वह होती है जो विशेषता अभिलेख की पहचान करती है, और साधारण स्थितियों में एकल विशेषता का गठन करती है:अद्वितीय आईडी। अधिक औपचारिक रूप से,प्राथमिक कुंजी उम्मीदवार कुंजी ( न्यूनतम सुपर कुंजी) का विकल्प है; कोई अन्य उम्मीदवार कुंजी एक वैकल्पिक कुंजी है।

एक प्राथमिक कुंजी में वास्तविक विश्व के अवलोकन सम्मिलित हो सकते हैं, जिस स्थिति में इसे प्राकृतिक कुंजी कहा जाता है, जबकि कुंजी के रूप में कार्य करने के लिए बनाई गई विशेषता और डेटाबेस के बाहर पहचान के लिए उपयोग नहीं की जाने वाली विशेषता को सरोगेट कुंजी कहा जाता है। '। उदाहरण के लिए, लोगों के डेटाबेस के लिए (किसी दी गई राष्ट्रीयता के), जन्म का समय और स्थान प्राकृतिक कुंजी हो सकता है। राष्ट्रीय पहचान संख्या विशेषता का एक और उदाहरण है जिसे प्राकृतिक कुंजी के रूप में उपयोग किया जा सकता है।

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

रचना
संबंधपरक डेटाबेस शब्दों में,प्राथमिक कुंजी उस कुंजी से भिन्न रूप या कार्य में भिन्न नहीं होती है जो प्राथमिक नहीं है। व्यवहार में, विभिन्न प्रेरणाएँ किसी कुंजी को प्राथमिक के रूप में दूसरे पर चुनने का निर्धारण कर सकती हैं। प्राथमिक कुंजी का पदनाम तालिका में डेटा के लिए पसंदीदा पहचानकर्ता को इंगित कर सकता है, या प्राथमिक कुंजी का उपयोग अन्य तालिकाओं से विदेशी कुंजी संदर्भों के लिए किया जाना है या यह तालिका की अर्थ विशेषता के अतिरिक्त कुछ अन्य विधि संकेत दे सकता है। कुछ भाषाओं और सॉफ़्टवेयर में विशेष वाक्य - विन्यास विशेषताएं होती हैं जिनका उपयोग प्राथमिक कुंजी की पहचान करने के लिए किया जा सकता है (उदाहरण के लिए एसक्यूएल में प्राथमिक कुंजी बाधा)।

संबंधपरक मॉडल, जैसा कि संबंधपरक कलन और संबंधपरक बीजगणित के माध्यम से व्यक्त किया गया है, प्राथमिक कुंजियों और अन्य प्रकार की कुंजियों के बीच अंतर नहीं करता है। मुख्य रूप से आवेदन प्रोग्रामर की सुविधा के रूप में प्राथमिक कुंजियों को एसक्यूएल मानक में जोड़ा गया था।

प्राथमिक कुंजियाँ पूर्णांक होती हैं जो वृद्धिशील होती हैं,सार्वभौमिक रूप से विशिष्ट पहचानकर्ता (यूयूआईडी) या हाय/लो कलन विधि का उपयोग करके उत्पन्न की जा सकती हैं।

एसक्यूएल में प्राथमिक कुंजियों को परिभाषित करना
प्राथमिक कुंजी को प्राथमिक कुंजी बाधा के माध्यम से एसक्यूएलया मानकीकरण इतिहास में परिभाषित किया गया है। वर्तमान तालिका में इस तरह की बाधा जोड़ने के लिए वाक्य-विन्यास को एसक्यूएल:2003 में इस तरह परिभाषित किया गया है:

वैकल्पिक तालिका <तालिका पहचानकर्ता> जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>] प्राथमिक कुंजी (<स्तंभ नाम> [{, <स्तंभ नाम>}...]) तालिका निर्माण के समय प्राथमिक कुंजी को सीधे भी निर्दिष्ट किया जा सकता है। एसक्यूएल मानक में, प्राथमिक कुंजी मेंया एकाधिक स्तंभ हो सकते हैं। प्राथमिक कुंजी में भाग लेने वाले प्रत्येक स्तंभ को पूर्ण रूप से अशक्त नहीं के रूप में परिभाषित किया गया है। ध्यान दें कि कुछ आरडीबीएमएस को प्राथमिक कुंजी स्तंभ को स्पष्ट रूप से चिह्नित करने की आवश्यकता होती है.

तालिका बनाएँ तालिका_नाम (  ... )

यदि प्राथमिक कुंजी में केवल स्तंभ होता है, तो स्तंभ को निम्नलिखित वाक्य - विन्यास का उपयोग करके चिह्नित किया जा सकता है:

<वाक्यविन्यास लैंग = एसक्यूएल>

तालिका बनाएँ तालिका_नाम (  id_col INT प्राथमिक कुंजी,   col2 वर्ण भिन्न (20),   ... )

सरोगेट कुंजियाँ
कुछ परिस्थितियों में प्राकृतिक कुंजी जो विशिष्ट रूप से संबंध में टपल की पहचान करती है, सॉफ्टवेयर विकास के लिए उपयोग करने के लिए बोझिल हो सकती है। उदाहरण के लिए, इसमें कई स्तंभ या बड़े पाठ क्षेत्र सम्मिलित हो सकते हैं। ऐसे स्थितियों में, प्राथमिक कुंजी के अतिरिक्त सरोगेट कुंजी का उपयोग किया जा सकता है। अन्य स्थितियों में संबंध के लिएसे अधिक उम्मीदवार कुंजी हो सकती है, और कोई उम्मीदवार कुंजी स्पष्ट रूप से पसंद नहीं की जाती है।उम्मीदवार को दूसरों पर कृत्रिम प्रधानता देने से बचने के लिए सरोगेट कुंजी का उपयोग प्राथमिक कुंजी के रूप में किया जा सकता है।

चूंकि प्राथमिक कुंजी मुख्य रूप से प्रोग्रामर की सुविधा के रूप में उपस्थित होती है, सरोगेट प्राथमिक कुंजी अधिकांशतः डेटाबेस आवेदन रचना में विशेष रूप से कई स्थितियों में उपयोग की जाती है।

सरोगेट प्राथमिक कुंजी की लोकप्रियता के कारण, कई डेवलपर्स और कुछ स्थितियों में सिद्धांतकार भी सरोगेट प्राथमिक कुंजी को संबंधित डेटा मॉडल केअविच्छेद्य भाग के रूप में मानने लगे हैं। यह मोटे तौर पर वस्तु-उन्मुख प्रोग्रामिंग मॉडल से संबंधित मॉडल में हाइब्रिड वस्तु-संबंधित मॉडल बनाने के सिद्धांतों के प्रवासन के कारण है। वस्तु-संबंधित मैपिंग जैसे सक्रिय रिकॉर्ड पैटर्न में, प्राथमिक कुंजियों पर ये अतिरिक्त प्रतिबंध लगाए गए हैं:


 * प्राथमिक कुंजियाँ अपरिवर्तनीय होनी चाहिए, अर्थात, कभी भी परिवर्तित या पुन: उपयोग नहीं की जानी चाहिए; उन्हें संबंधित रिकॉर्ड के साथ हटा दिया जाना चाहिए।
 * प्राथमिक कुंजियाँ अनाम पूर्णांक या संख्यात्मक पहचानकर्ता होनी चाहिए।

चूँकि, इनमें से कोई भी प्रतिबंध संबंधित मॉडल या किसी एसक्यूएल मानक का हिस्सा नहीं है। डेटाबेस और आवेदन डिजाइन के समय प्राथमिक कुंजी मानों की अपरिवर्तनीयता पर निर्णय लेते समय उचित परिश्रम प्रयुक्त किया जाना चाहिए। कुछ डेटाबेस प्रणाली का अर्थ यह भी है कि प्राथमिक कुंजी स्तंभ में मान का उपयोग करके बदला नहीं जा सकता है  एसक्यूएल बयान।

वैकल्पिक कुंजी
सामान्यतः,उम्मीदवार कुंजी को प्राथमिक कुंजी के रूप में चुना जाता है। अन्य उम्मीदवार कुंजियाँ वैकल्पिक कुंजियाँ बन जाती हैं, जिनमें से प्रत्येक मेंहो सकता है अद्वितीय प्रतिलिपि को रोकने के लिए इसे असाइन की गई बाधा ( प्रतिलिपि प्रविष्टिअद्वितीय स्तंभ में मान्य नहीं है)।

वैकल्पिक कुंजियों का उपयोग प्राथमिक कुंजी की तरह किया जा सकता है जब एकल-तालिका का चयन करते समय या जहाँ खंड में छनन किया जाता है, किन्तु सामान्यतः कई तालिकाओं में सम्मिलित होने के लिए उपयोग नहीं किया जाता है।

यह भी देखें

 * प्राकृतिक कुंजी
 * सुपरकी
 * अनूठी कुंजी
 * उम्मीदवार कुंजी
 * संबंध का डेटाबेस
 * इकाई-संबंध मॉडल