अनूठी कुंजी

From alpha
Jump to navigation Jump to search

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

सारांश

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

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

किसी भी कुंजी में एक या अधिक विशेषताएँ हो सकती हैं। उदाहरण के लिए, एक सामाजिक सुरक्षा संख्या एक कर्मचारी के लिए एकल विशेषता कुंजी हो सकती है; उड़ान संख्या और दिनांक का संयोजन एक निर्धारित उड़ान के लिए दो विशेषताओं वाली कुंजी हो सकती है।

डेटाबेस मॉडलिंग और कार्यान्वयन में कई प्रकार की कुंजियों का उपयोग किया जाता है।

Key Name Definition
Simple A key made from only one attribute.
Concatenated A key made from more than one attribute joined together as a single key, such as part or whole name with a system generated number appended as often used for E-mail addresses.
Compound A key made from at least two attributes or simple keys, only simple keys exist in a compound key.
Composite Like a compound key, but the individual attributes need not be simple keys.
Natural A key made from data that exists outside the current database. In other words, the data is not system generated, such as a social security number imported from another system.
Surrogate An artificial key made from data that is system assigned or generated when another candidate key exists. Surrogate keys are usually numeric ID values and often used for performance reasons.[citation needed]
Candidate A key that may become the primary key.
Primary The key that is selected as the primary key. Only one key within an entity is selected to be the primary key. This is the key that is allowed to migrate to other entities to define the relationships that exist among the entities. When the data model is instantiated into a physical database, it is the key that the system uses the most when accessing the table, or joining the tables together when selecting data.
Alternate A non-primary key that can be used to identify only one row in a table. Alternate keys may be used like a primary key in a single-table select.
Foreign A key that has migrated to another entity.

सबसे बुनियादी परिभाषा में, कुंजी एक अद्वितीय पहचानकर्ता है,[1] तो अद्वितीय कुंजी एक pleonasm है। कुंजियाँ जो उनकी मूल इकाई के भीतर हैं, उस इकाई के भीतर अद्वितीय हैं। डिजाइन के आधार पर और दूसरी तालिका में उनका उपयोग कैसे किया जाता है, इसके आधार पर किसी अन्य इकाई में माइग्रेट करने वाली कुंजियां अद्वितीय हो सकती हैं या नहीं भी हो सकती हैं। किसी अन्य तालिका में विदेशी कुंजियाँ प्राथमिक कुंजी हो सकती हैं; उदाहरण के लिए कर्मचारी तालिका में एक व्यक्ति आईडी कर्मचारी आईडी बन सकता है। इस मामले में, कर्मचारी आईडी एक विदेशी कुंजी और अद्वितीय प्राथमिक कुंजी दोनों है, जिसका अर्थ है कि तालिकाओं में 1: 1 का संबंध है। ऐसे मामले में जहां व्यक्ति इकाई में जैविक पिता आईडी शामिल है, पिता आईडी अद्वितीय होने की उम्मीद नहीं की जाएगी क्योंकि एक पिता के एक से अधिक बच्चे हो सकते हैं।

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

<वाक्यविन्यास लैंग = एसक्यूएल> लेखक तालिका स्कीमा:

लेखक (आईडी, नाम, पता, जन्म)

बुक टेबल स्कीमा:

पुस्तक (आईएसबीएन, लेखक आईडी, शीर्षक, प्रकाशक, मूल्य) </वाक्यविन्यास हाइलाइट>

यहां आईडी तालिका 'लेखक' में प्राथमिक कुंजी के रूप में कार्य करती है, लेकिन ऑथरआईडी तालिका 'पुस्तक' में विदेशी कुंजी के रूप में भी कार्य करती है। विदेशी कुंजी इस नमूना डेटाबेस में दो संबंधित तालिकाओं के बीच लिंक और इसलिए कनेक्शन के रूप में कार्य करती है।

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

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

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

== SQL == में कुंजियों को परिभाषित करना

SQL में कुंजियों की परिभाषा:

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

 वैकल्पिक तालिका <तालिका पहचानकर्ता>
     जोड़ें [प्रतिबंध <बाधा पहचानकर्ता>]
     {प्राथमिक कुंजी | अद्वितीय} (<कॉलम नाम> [{, <कॉलम नाम>}...])

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

इसी तरह, कुंजियों को के हिस्से के रूप में परिभाषित किया जा सकता है CREATE TABLE एसक्यूएल बयान।

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

 तालिका बनाएँ तालिका_नाम (
    id_col INT,
    col2 वर्ण भिन्न (20),
    key_col छोटा नहीं है,
    ...
    CONSTRAINT key_unique UNIQUE(key_col),
    ...
 )

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

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

 तालिका बनाएँ तालिका_नाम (
    id_col INT प्राथमिक कुंजी,
    col2 वर्ण भिन्न (20),
    ...
    key_col SMALLINT पूर्ण अद्वितीय नहीं है,
    ...
 )

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

=== प्राथमिक कुंजी बाधा और अद्वितीय बाधा === के बीच अंतर

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

  1. एक प्राथमिक कुंजी 'नहीं' 'शून्य की अनुमति दे सकती है (एक प्राथमिक कुंजी को उन स्तंभों पर परिभाषित नहीं किया जा सकता है जो नल की अनुमति देते हैं)।
  2. प्रत्येक तालिका में एक से अधिक प्राथमिक कुंजी नहीं हो सकती।
  3. कुछ RDBMS पर एक प्राथमिक कुंजी डिफ़ॉल्ट रूप से एक संकुल सूचकांक उत्पन्न करती है।

विशेष बाधा

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

ध्यान दें कि प्राथमिक कुंजी बाधा के विपरीत एक अद्वितीय बाधा बाधा में भाग लेने वाले कॉलम के लिए नल नहीं है। कॉलम को कुंजी बनाने के लिए NOT NULL निर्दिष्ट होना चाहिए। UNIQUE बाधाओं को अशक्त स्तंभों पर रखना संभव है लेकिन SQL मानक बताता है कि बाधाएँ अशक्त स्तंभों की विशिष्टता की गारंटी नहीं देती हैं (पंक्तियों के लिए विशिष्टता लागू नहीं होती है जहाँ किसी भी स्तंभ में शून्य होता है)।

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


यह भी देखें

संदर्भ

  1. Awad, Elias (1985), Systems Analysis and Design, Second Edition, Richard D. Irwin, Inc., ISBN 0-256-02824-9
  2. Summary of ANSI/ISO/IEC SQL Archived April 25, 2012, at the Wayback Machine
  3. "Constraints - SQL Database Reference Material - Learn sql, read an sql manual, follow an sql tutorial, or learn how to structure an SQL query!". www.sql.org. Retrieved 16 August 2018.
  4. "Comparison of different SQL implementations". troels.arvin.dk. Retrieved 16 August 2018.


बाहरी संबंध