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

From Vigyanwiki
(Created page with "{{one source|date=June 2021}} डेटाबेस के संबंधपरक मॉडल में, एक प्राथमिक कुंजी विश...")
 
No edit summary
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{one source|date=June 2021}}
[[डेटाबेस]] के [[संबंधपरक मॉडल]] में,प्राथमिक कुंजी विशेषताओं (स्तंभों) के न्यूनतम सेट का एक विशिष्ट विकल्प है, जो विशिष्ट रूप से [[संबंध (डेटाबेस)|संबंध (तालिका)]] में टपल ([[पंक्ति (डेटाबेस)|पंक्ति]]) निर्दिष्ट करती है। ।{{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|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|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 मानक में जोड़ा गया था।{{citation needed|date=March 2012}}
संबंधपरक मॉडल, जैसा कि संबंधपरक कलन और संबंधपरक बीजगणित के माध्यम से व्यक्त किया गया है, प्राथमिक कुंजियों और अन्य प्रकार की कुंजियों के बीच अंतर नहीं करता है। मुख्य रूप से आवेदन प्रोग्रामर की सुविधा के रूप में प्राथमिक कुंजियों को [[SQL|एसक्यूएल]] मानक में जोड़ा गया था।
प्राथमिक कुंजियाँ एक पूर्णांक होती हैं जो वृद्धिशील होती हैं, एक सार्वभौमिक रूप से विशिष्ट पहचानकर्ता (UUID) या Hi/Lo एल्गोरिथम का उपयोग करके उत्पन्न की जा सकती हैं।


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


<वाक्यविन्यास लैंग = एसक्यूएल>
==== एसक्यूएल में प्राथमिक कुंजियों को परिभाषित करना ====
वैकल्पिक तालिका <तालिका पहचानकर्ता>
प्राथमिक कुंजी को प्राथमिक कुंजी बाधा के माध्यम से एसक्यूएलया मानकीकरण इतिहास में परिभाषित किया गया है। वर्तमान तालिका में इस तरह की बाधा जोड़ने के लिए वाक्य-विन्यास को एसक्यूएल:2003 में इस तरह परिभाषित किया गया है:<syntaxhighlight>
     जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>]
ALTER TABLE <table identifier>  
     प्राथमिक कुंजी (<कॉलम नाम> [{, <कॉलम नाम>}...])
     ADD [ CONSTRAINT <constraint identifier> ]  
</वाक्यविन्यास हाइलाइट>
     PRIMARY KEY ( <column name> [ {, <column name> }... ] )
 
</syntaxhighlight>
तालिका निर्माण के दौरान प्राथमिक कुंजी को सीधे भी निर्दिष्ट किया जा सकता है। SQL मानक में, प्राथमिक कुंजी में एक या एकाधिक कॉलम हो सकते हैं। प्राथमिक कुंजी में भाग लेने वाले प्रत्येक स्तंभ को पूर्ण रूप से NOT NULL के रूप में परिभाषित किया गया है। ध्यान दें कि कुछ [[आरडीबीएमएस]] को प्राथमिक कुंजी कॉलम को स्पष्ट रूप से चिह्नित करने की आवश्यकता होती है <code>NOT NULL</code>.{{citation needed|date=January 2013}}
<वाक्यविन्यास लैंग = एसक्यूएल>
तालिका निर्माण के समय प्राथमिक कुंजी को सीधे भी निर्दिष्ट किया जा सकता है। एसक्यूएल मानक में, प्राथमिक कुंजी मेंया एकाधिक स्तंभ हो सकते हैं। प्राथमिक कुंजी में भाग लेने वाले प्रत्येक स्तंभ को पूर्ण रूप से अशक्त नहीं के रूप में परिभाषित किया गया है। ध्यान दें कि कुछ [[आरडीबीएमएस]] को प्राथमिक कुंजी स्तंभ को स्पष्ट रूप से चिह्नित करने की आवश्यकता होती है <code>NOT NULL</code>.<syntaxhighlight>
तालिका बनाएँ तालिका_नाम (
CREATE TABLE table_name (
    
    
   ...
   ...
)
)
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


<वाक्यविन्यास लैंग = एसक्यूएल>
<syntaxhighlight>
तालिका बनाएँ तालिका_नाम (
CREATE TABLE table_name (
   id_col INT प्राथमिक कुंजी,
   id_col INT PRIMARY KEY,
   col2 वर्ण भिन्न (20),
   col2   CHARACTER VARYING(20),
   ...
   ...
)
)
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


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


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


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


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




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


== यह भी देखें ==
== यह भी देखें ==
Line 73: Line 73:
==संदर्भ==
==संदर्भ==
{{reflist}}
{{reflist}}
[[Category: डेटाबेस प्रबंधन तंत्र]] [[Category: मॉडलिंग की दिनांक]]


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Created On 16/02/2023]]
[[Category:Created On 16/02/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Pages with syntax highlighting errors]]
[[Category:Templates Vigyan Ready]]
[[Category:डेटाबेस प्रबंधन तंत्र]]
[[Category:मॉडलिंग की दिनांक]]

Latest revision as of 11:38, 12 March 2023

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

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

इतिहास

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


रचना

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

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

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

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

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

ALTER TABLE <table identifier> 
    ADD [ CONSTRAINT <constraint identifier> ] 
    PRIMARY KEY ( <column name> [ {, <column name> }... ] )

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

CREATE TABLE table_name (
   
   ...
)

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

CREATE TABLE table_name (
   id_col  INT  PRIMARY KEY,
   col2    CHARACTER VARYING(20),
   ...
)

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

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

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

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

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

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


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

सामान्यतः,उम्मीदवार कुंजी को प्राथमिक कुंजी के रूप में चुना जाता है। अन्य उम्मीदवार कुंजियाँ वैकल्पिक कुंजियाँ बन जाती हैं, जिनमें से प्रत्येक में प्रतिलिपि को रोकने के लिए एक UNIQUE बाधा निर्दिष्ट हो सकती है (एक अद्वितीय स्तम्भ में एक डुप्लिकेट प्रविष्टि मान्य नहीं है)।[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