प्राथमिक कुंजी: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
[[डेटाबेस]] के [[संबंधपरक मॉडल]] में,प्राथमिक कुंजी विशेषताओं (कॉलम (डेटाबेस)) के''न्यूनतम'' सेट की''विशिष्ट पसंद'' होती है, जो विशिष्ट रूप से[[संबंध (डेटाबेस)]] मेंटपल ([[पंक्ति (डेटाबेस)]]) निर्दिष्ट करती है। ) ([[तालिका (डेटाबेस)]])।{{efn|Corresponding terms are respectively theoretical (attribute, tuple, relation) and concrete (column, row, table).}}<ref>{{cite web |url=https://support.office.com/en-us/article/add-or-change-a-table-s-primary-key-in-access-07b4a84b-0063-4d56-8b00-65f2975e4379 |title=Add or change a table’s primary key in Access |publisher=Microsoft |access-date=January 20, 2020 |quote=A primary key is a field or set of fields with values that are unique throughout a table.}}</ref> अनौपचारिक रूप से,प्राथमिक कुंजी वह होती है जो विशेषता रिकॉर्ड की पहचान करती है, और साधारण मामलों में एकल विशेषता का गठन करती है:अद्वितीय आईडी। अधिक औपचारिक रूप से,प्राथमिक कुंजी [[उम्मीदवार कुंजी]] ( न्यूनतम [[key]]) का विकल्प है; कोई अन्य उम्मीदवार कुंजीवैकल्पिक कुंजी है।
[[डेटाबेस]] के [[संबंधपरक मॉडल]] में,प्राथमिक कुंजी विशेषताओं (स्तंभों) के''न्यूनतम'' सेट की''विशिष्ट पसंद'' होती है, जो विशिष्ट रूप से [[संबंध (डेटाबेस)|संबंध (तालिका)]] में टपल ([[पंक्ति (डेटाबेस)|पंक्ति]]) निर्दिष्ट करती है। ।{{efn|Corresponding terms are respectively theoretical (attribute, tuple, relation) and concrete (column, row, table).}}<ref>{{cite web |url=https://support.office.com/en-us/article/add-or-change-a-table-s-primary-key-in-access-07b4a84b-0063-4d56-8b00-65f2975e4379 |title=Add or change a table’s primary key in Access |publisher=Microsoft |access-date=January 20, 2020 |quote=A primary key is a field or set of fields with values that are unique throughout a table.}}</ref> अनौपचारिक रूप से,प्राथमिक कुंजी वह होती है जो विशेषता अभिलेख की पहचान करती है, और साधारण स्थितियों में एकल विशेषता का गठन करती है:अद्वितीय आईडी। अधिक औपचारिक रूप से,प्राथमिक कुंजी [[उम्मीदवार कुंजी]] ( न्यूनतम सुपर कुंजी) का विकल्प है; कोई अन्य उम्मीदवार कुंजी एक वैकल्पिक कुंजी है।


एक प्राथमिक कुंजी में वास्तविक दुनिया के वेधशालाएं हो सकती हैं, जिस स्थिति में इसे ''[[प्राकृतिक कुंजी]]'' कहा जाता है, जबकि कुंजी के रूप में कार्य करने के लिए बनाई गई विशेषता और डेटाबेस के बाहर पहचान के लिए उपयोग नहीं की जाने वाली विशेषता को ''[[सरोगेट कुंजी]]'' कहा जाता है। '। उदाहरण के लिए, लोगों केडेटाबेस के लिए (किसी दी गई राष्ट्रीयता के), जन्म का समय और स्थानप्राकृतिक कुंजी हो सकता है।{{efn|To sufficient precision, two people not being able to be born in exactly the same spot at exactly the same instant.}} [[राष्ट्रीय पहचान संख्या]]विशेषता काऔर उदाहरण है जिसे प्राकृतिक कुंजी के रूप में इस्तेमाल किया जा सकता है।
एक प्राथमिक कुंजी में वास्तविक विश्व के अवलोकन सम्मिलित हो सकते हैं, जिस स्थिति में इसे ''[[प्राकृतिक कुंजी]]'' कहा जाता है, जबकि कुंजी के रूप में कार्य करने के लिए बनाई गई विशेषता और डेटाबेस के बाहर पहचान के लिए उपयोग नहीं की जाने वाली विशेषता को ''[[सरोगेट कुंजी]]'' कहा जाता है। '। उदाहरण के लिए, लोगों के डेटाबेस के लिए (किसी दी गई राष्ट्रीयता के), जन्म का समय और स्थान प्राकृतिक कुंजी हो सकता है।{{efn|To sufficient precision, two people not being able to be born in exactly the same spot at exactly the same instant.}} [[राष्ट्रीय पहचान संख्या]] विशेषता का एक और उदाहरण है जिसे प्राकृतिक कुंजी के रूप में उपयोग किया जा सकता है।


== इतिहास ==
== इतिहास ==
हालांकि मुख्य रूप से आज रिलेशनल डेटाबेस संदर्भ में उपयोग किया जाता है, प्राथमिक कुंजी शब्द रिलेशनल मॉडल से पहले का है और अन्य डेटाबेस मॉडल में भी इसका उपयोग किया जाता है। चार्ल्स बैकमैन, नेविगेशनल डेटाबेस की अपनी परिभाषा में, प्राथमिक कुंजियों को परिभाषित करने वाले पहले व्यक्ति हैं।<ref>{{cite web|url=http://portal.acm.org/citation.cfm?id=362534&coll=portal&dl=ACM |title=The programmer as navigator |doi=10.1145/355611.362534 |publisher=Portal.acm.org |access-date=2012-10-01}}</ref>
चूंकि मुख्य रूप से आज संबंधित डेटाबेस संदर्भ में उपयोग किया जाता है, प्राथमिक कुंजी शब्द संबंधित मॉडल से पहले का है और अन्य डेटाबेस मॉडल में भी इसका उपयोग किया जाता है। चार्ल्स बैकमैन, नेविगेशनल डेटाबेस की अपनी परिभाषा में, प्राथमिक कुंजियों को परिभाषित करने वाले पहले व्यक्ति हैं।<ref>{{cite web|url=http://portal.acm.org/citation.cfm?id=362534&coll=portal&dl=ACM |title=The programmer as navigator |doi=10.1145/355611.362534 |publisher=Portal.acm.org |access-date=2012-10-01}}</ref>




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


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


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


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


<वाक्यविन्यास लैंग = एसक्यूएल>
<वाक्यविन्यास लैंग = एसक्यूएल>
Line 21: Line 22:
वैकल्पिक तालिका <तालिका पहचानकर्ता>
वैकल्पिक तालिका <तालिका पहचानकर्ता>
     जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>]
     जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>]
     प्राथमिक कुंजी (<कॉलम नाम> [{, <कॉलम नाम>}...])
     प्राथमिक कुंजी (<स्तंभ नाम> [{, <स्तंभ नाम>}...])
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


तालिका निर्माण के दौरान प्राथमिक कुंजी को सीधे भी निर्दिष्ट किया जा सकता है। SQL मानक में, प्राथमिक कुंजी मेंया एकाधिक कॉलम हो सकते हैं। प्राथमिक कुंजी में भाग लेने वाले प्रत्येक स्तंभ को पूर्ण रूप से NOT NULL के रूप में परिभाषित किया गया है। ध्यान दें कि कुछ [[आरडीबीएमएस]] को प्राथमिक कुंजी कॉलम को स्पष्ट रूप से चिह्नित करने की आवश्यकता होती है <code>NOT NULL</code>.{{citation needed|date=January 2013}}
तालिका निर्माण के समय प्राथमिक कुंजी को सीधे भी निर्दिष्ट किया जा सकता है। एसक्यूएल मानक में, प्राथमिक कुंजी मेंया एकाधिक स्तंभ हो सकते हैं। प्राथमिक कुंजी में भाग लेने वाले प्रत्येक स्तंभ को पूर्ण रूप से अशक्त नहीं के रूप में परिभाषित किया गया है। ध्यान दें कि कुछ [[आरडीबीएमएस]] को प्राथमिक कुंजी स्तंभ को स्पष्ट रूप से चिह्नित करने की आवश्यकता होती है <code>अशक्त नहीं</code>.{{citation needed|date=January 2013}}


<वाक्यविन्यास लैंग = एसक्यूएल>
<वाक्यविन्यास लैंग = एसक्यूएल>
Line 35: Line 36:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


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


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


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


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


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


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


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






== वैकल्पिक कुंजी ==
== वैकल्पिक कुंजी ==
आमतौर पर,उम्मीदवार कुंजी को प्राथमिक कुंजी के रूप में चुना जाता है। अन्य उम्मीदवार कुंजियाँ वैकल्पिक कुंजियाँ बन जाती हैं, जिनमें से प्रत्येक मेंहो सकता है <code>UNIQUE</code> डुप्लीकेट को रोकने के लिए इसे असाइन की गई बाधा ( डुप्लीकेट प्रविष्टिअद्वितीय कॉलम में मान्य नहीं है)।<ref>[http://www.orafaq.com/wiki/Alternate_key Alternate key – Oracle FAQ<!-- Bot generated title -->]</ref>
सामान्यतः,उम्मीदवार कुंजी को प्राथमिक कुंजी के रूप में चुना जाता है। अन्य उम्मीदवार कुंजियाँ वैकल्पिक कुंजियाँ बन जाती हैं, जिनमें से प्रत्येक मेंहो सकता है अद्वितीय डुप्लीकेट को रोकने के लिए इसे असाइन की गई बाधा ( डुप्लीकेट प्रविष्टिअद्वितीय स्तंभ में मान्य नहीं है)।<ref>[http://www.orafaq.com/wiki/Alternate_key Alternate key – Oracle FAQ<!-- Bot generated title -->]</ref>


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 12:57, 22 February 2023

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

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

इतिहास

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


रचना

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

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

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

== एसक्यूएल== में प्राथमिक कुंजियों को परिभाषित करना

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

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

वैकल्पिक तालिका <तालिका पहचानकर्ता>

   जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>]
   प्राथमिक कुंजी (<स्तंभ नाम> [{, <स्तंभ नाम>}...])

</वाक्यविन्यास हाइलाइट>

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

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

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

  ...

)

</वाक्यविन्यास हाइलाइट>

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

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

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

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

)

</वाक्यविन्यास हाइलाइट>

सरोगेट कुंजियाँ

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

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

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

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

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


वैकल्पिक कुंजी

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

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

यह भी देखें

टिप्पणियाँ

  1. Corresponding terms are respectively theoretical (attribute, tuple, relation) and concrete (column, row, table).
  2. To sufficient precision, two people not being able to be born in exactly the same spot at exactly the same instant.


संदर्भ

  1. "Add or change a table's primary key in Access". Microsoft. Retrieved January 20, 2020. A primary key is a field or set of fields with values that are unique throughout a table.
  2. "The programmer as navigator". Portal.acm.org. doi:10.1145/355611.362534. Retrieved 2012-10-01.
  3. Alternate key – Oracle FAQ