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


252

मैं mysql डेटाबेस का उपयोग कर रहा हूं। मुझे प्राथमिक कुंजी और अद्वितीय कुंजी के बीच एक भ्रम है।

कृपया मेरी मदद करें जहां मुझे प्राथमिक और अनोखी कुंजी बनानी चाहिए। मेरा मतलब है कि किस स्थिति में हम अद्वितीय कुंजी या प्राथमिक कुंजी बनाते हैं।


9
bt / w को अलग करने का एक अच्छा तरीका है wrt नल-क्षमता PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

जवाबों:


233

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

  • किसी तालिका में केवल एक प्राथमिक कुंजी हो सकती है
  • कुछ DBMS में यह नहीं हो सकता है NULL- जैसे MySQL कहते हैंNOT NULL
  • प्राथमिक कुंजी रिकॉर्ड की एक अद्वितीय कुंजी पहचानकर्ता है

अद्वितीय कुंजी:

  • एक तालिका में एक से अधिक अद्वितीय कुंजी हो सकती हैं
  • अद्वितीय कुंजी में NULLमान हो सकते हैं
  • यह एक उम्मीदवार कुंजी हो सकती है
  • अद्वितीय कुंजी हो सकती है NULL; कई पंक्तियों में NULLमान हो सकते हैं और इसलिए उन्हें "अद्वितीय" नहीं माना जा सकता है

11
यह भी जोड़ना चाहते हैं कि प्राथमिक कुंजी को कई स्तंभों पर बनाया जा सकता है, जैसे प्राथमिक कुंजी (ग्राहक, उत्पाद)। इसे संयुक्त प्राथमिक कुंजी कहा जाता है। यह पहला बिंदु स्पष्ट करने के लिए है, जैसा कि यह हो सकता है जैसा कि यह हो सकता है (एक कुंजी => एक कॉलम पढ़ें) नए comer से sql:)
केन

1
Candidate उम्मीदवार कुंजी हो सकता है ’का आपका क्या मतलब है?

1
"केवल एकल नल की अनुमति है" - यह सच नहीं है, कम से कम MySQL के लिए नहीं।
जानिस एल्मेरिस

69
अद्वितीय कुंजी शून्य हो सकती है और अद्वितीय साधन नहीं हो सकते हैं ??
प्रतिक

20
@PratikCJoshi उनका शायद मतलब है कि अन्यथा अद्वितीय कुंजी पर अशक्त के साथ कई पंक्तियाँ हो सकती हैं।
जॉन

77

विशिष्ट कुंजी (यूके) : यह एक स्तंभ या स्तंभों का एक समूह है जो एक पंक्ति में विशिष्टता की पहचान कर सकता है।

प्राथमिक कुंजी (PK) : यह एक स्तंभ या स्तंभों का समूह भी है जो एक पंक्ति में विशिष्टता की पहचान कर सकता है।

इसलिए प्राथमिक कुंजी अद्वितीय कुंजी के लिए एक और नाम है, लेकिन प्राथमिक और अद्वितीय कुंजी के लिए SQL सर्वर में डिफ़ॉल्ट कार्यान्वयन अलग है।

डिफ़ॉल्ट रूप से:

  1. PK एक क्लस्टर इंडेक्स बनाता है और यूके एक नॉन क्लस्टर्ड इंडेक्स बनाता है।
  2. पीके अशक्त नहीं है, लेकिन ब्रिटेन अशक्त अनुमति देता है (नोट: डिफ़ॉल्ट रूप से)
  3. एक मेज पर केवल और केवल एक पीके हो सकता है, लेकिन कई यूके हो सकते हैं
  4. आप अपनी आवश्यकता के आधार पर डिफ़ॉल्ट कार्यान्वयन को ओवरराइड कर सकते हैं।

यह वास्तव में निर्भर करता है कि यूके या पीके बनाने का निर्णय लेते समय आपका उद्देश्य क्या है। यह एक सादृश्य का अनुसरण करता है जैसे "यदि तीन लोगों की एक टीम है, तो उनमें से सभी सहकर्मी हैं, लेकिन उनमें से एक होगा जो एक जोड़ीदार होगा: पीके और यूके का समान संबंध है।" मैं इस लेख को पढ़ने का सुझाव दूंगा: लेखक द्वारा दिया गया उदाहरण उपयुक्त नहीं लग सकता है, लेकिन एक समग्र विचार प्राप्त करने का प्रयास करें।

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html


लगभग 10 वेबपृष्ठों को पढ़ें, जो कहते हैं कि पीके में एक से अधिक कॉलम हो सकते हैं। फिर एक मेज पर एक और केवल एक पीके कैसे हो सकता है?

@android एक पीके एक से अधिक कॉलम विशिष्टता के संबंध में एक कॉलम के रूप में कार्य करता है। PostgreSQL में कम से कम, इसका मतलब है कि [table_name]_pkeyतालिका में एक नया कॉलम (डिफ़ॉल्ट नाम के साथ ) जोड़ा गया है (मैंने इसे सरोगेट कुंजी के रूप में संदर्भित किया है)। स्रोत: postgresqltutorial.com/postgresql-primary-key मैं यह सब करने के लिए नया हूँ इसलिए मैं अपनी याद की गई बारीकियों को इंगित करने के लिए अधिक जानकार पोस्टर की सराहना करूँगा।
16

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

46

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

RDBMS संभावित के अनुसार, की (उर्फ कैंडिडेट कुंजी) एक मान या सेट है जो विशिष्ट रूप से एक इकाई की पहचान करता है।

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

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

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

2. इंडेक्सिंग: डिफ़ॉल्ट एसक्यूएल-इंजन मौजूद नहीं होने पर प्राइमरी-की पर क्लस्टर इंडेक्स बनाता है और यूनिक-की पर नॉन-क्लस्टर्ड इंडेक्स।

3. अशक्तता: प्राथमिक कुंजी में शून्य मान शामिल नहीं हैं, जबकि अद्वितीय-कुंजी कर सकते हैं।

4. अस्तित्व: एक मेज में अधिकतम एक प्राथमिक कुंजी हो सकती है, लेकिन इसमें कई विशिष्ट-कुंजी हो सकती हैं।

5. परिवर्तनशीलता: आप प्राथमिक मानों को बदल या हटा नहीं सकते, लेकिन विशिष्ट-कुंजी मान सकते हैं।

अधिक जानकारी और उदाहरण के लिए:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html


7
5 वें बिंदु में आप कहते हैं कि हम प्राथमिक मूल्यों को बदल या हटा नहीं सकते हैं। हम सुनिश्चित करें कि अद्यतन विवरण का उपयोग करके तालिका में प्राथमिक मान बदल सकते हैं।
कपिल

3
@ कापिल ऐसा करने से प्राथमिक कुंजी का उपयोग करने का पूरा उद्देश्य समाप्त हो जाता है।
गोकिगूक्स

2
गुच्छेदार सूचकांक: पंक्तियों को डिस्क पर भौतिक रूप से उसी क्रम में संग्रहीत किया जाता है जैसे सूचकांक
Duy 4ng

26

एक प्राथमिक कुंजी अद्वितीय होनी चाहिए।

एक अद्वितीय कुंजी के लिए प्राथमिक कुंजी नहीं है - उम्मीदवार कुंजी देखें

यही है, एक मेज पर स्तंभों के एक से अधिक संयोजन हो सकते हैं जो विशिष्ट रूप से एक पंक्ति की पहचान कर सकते हैं - इनमें से केवल एक को प्राथमिक कुंजी के रूप में चुना जा सकता है। अन्य, हालांकि अद्वितीय उम्मीदवार कुंजी हैं।


17

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

+-----------------------------------------+-----------------------------------------------+
|                Primary Key              |                    Unique Key                 |
+-----------------------------------------+-----------------------------------------------+
| Primary Key can't accept null values.   | Unique key can accept only one null value.    |
+-----------------------------------------+-----------------------------------------------+
| By default, Primary key is clustered    | By default, Unique key is a unique            |
| index and data in the database table is | non-clustered index.                          |
| physically organized in the sequence of |                                               |
| clustered index.                        |                                               |
+-----------------------------------------+-----------------------------------------------+
| We can have only one Primary key in a   | We can have more than one unique key in a     |
| table.                                  | table.                                        |
+-----------------------------------------+-----------------------------------------------+
| Primary key can be made foreign key     | In SQL Server, Unique key can be made foreign |
| into another table.                     | key into another table.                       |
+-----------------------------------------+-----------------------------------------------+

आप विस्तृत जानकारी यहाँ से प्राप्त कर सकते हैं:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html


16

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

इसी कारण से एक प्राथमिक कुंजी NULL नहीं हो सकती (कम से कम Oracle में, अन्य डेटाबेस के बारे में निश्चित नहीं है)

चूंकि यह पंक्ति की पहचान करता है इसलिए इसे कभी नहीं बदलना चाहिए। प्राथमिक कुंजियों को बदलने से गंभीर दर्द और शायद शाश्वत लानत होती है।

ज्यादातर मामलों में आप प्राथमिक कुंजी के लिए कुछ कृत्रिम आईडी चाहते हैं, जिसका उपयोग किसी भी चीज के लिए नहीं किया जाता है, लेकिन तालिका में एकल पंक्तियों की पहचान की जाती है।

दूसरी ओर अद्वितीय कुंजियाँ आप जितना चाहें बदल सकते हैं।


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

PK SQL सर्वर में NULL भी नहीं हो सकता है
mrd3650

7

एक प्राथमिक कुंजी एक अद्वितीय कुंजी है।

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


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

1
हम अनन्य कुंजी में एक से अधिक शून्य मान नहीं डाल सकते हैं और यह डुप्लिकेट को भी अनुमति नहीं देगा।
मासूम

@ mahedi-hasan विशिष्ट कुंजी कॉलम में केवल एक NULL मान नहीं होना चाहिए? नागरिक आईडी NULL में अंतिम दो पंक्तियाँ कैसे आती हैं? क्या मुझसे कोई चूक हो रही है?
सुपरनोवा

बस ऊपर अपनी टिप्पणी का जवाब मिला। ऐसा लगता है कि MySQL कई NULL को अनोखे तरीके से अनुमति देता है, इसलिए ऐसा लगता है जैसे @Mahedi_Hasan ने MySQL का उपयोग किया है। stackoverflow.com/questions/3712222/…
सुपरनोवा

6

मुझे पता है कि यह सवाल कई साल पुराना है, लेकिन मैं यह समझाने का जवाब देना चाहूंगा कि क्यों नहीं

प्राथमिक कुंजी का उद्देश्य : किसी डेटाबेस में किसी पंक्ति को विशिष्ट रूप से पहचानने के लिए => एक पंक्ति तालिका द्वारा प्रतिरूपित इकाई प्रकार के एक एकल उदाहरण का प्रतिनिधित्व करती है। एक प्राथमिक कुंजी एक इकाई, AKA इकाई अखंडता की अखंडता को लागू करती है। प्राइमरी की एक क्लस्टर इंडेक्स होगा यानी यह उस ऑर्डर को परिभाषित करता है जिसमें डेटा को एक टेबल में फिजिकली स्टोर किया जाता है।

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

तुम वहाँ जाओ!


1

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

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

यहां अद्वितीय और प्राथमिक कुंजी यात्रा के बीच अंतर देखने के लिए


1

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


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

अब स्थिति में वापस आ रहा है जब इसका उपयोग करने के लिए: -

1) स्तंभ में प्राथमिक कुंजी जो तालिका में शून्य नहीं हो सकती है और आप संबंध बनाने के लिए किसी अन्य तालिका में विदेशी कुंजी के रूप में उपयोग कर रहे हैं

2) टेबल में अद्वितीय कुंजी जहां यह तालिका या पूरे डेटाबेस में प्रभावित नहीं करता है चाहे आप रेस्तरां में स्नैक्स जैसे विशेष कॉलम के लिए नल लेते हैं यह संभव है कि आप रेस्तरां में स्नैक्स न लें


1

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

दोनों Primary keyऔर Unique Keyतालिका में पंक्ति को विशिष्ट रूप से परिभाषित करने के लिए उपयोग किए जाते हैं। स्तंभ का Primary Keyएक बनाता है clustered indexजबकि ए Unique creates an unclustered index of the column

A Primary KeyNULL valueहालांकि, अनुमति नहीं a Unique Keyदेता है one NULL value


0

बस प्राथमिक कुंजी एक अद्वितीय है और अशक्त नहीं हो सकता है, अद्वितीय शून्य हो सकता है और अद्वितीय नहीं हो सकता है।


"अद्वितीय शून्य हो सकता है और अद्वितीय नहीं हो सकता है"। may not be uniqueयहाँ क्या मतलब है?
यूसुफ हसन

0

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

प्राथमिक कुंजी का मुख्य उद्देश्य तालिका में प्रत्येक रिकॉर्ड की पहचान करने के लिए एक साधन प्रदान करना है।

प्राथमिक कुंजी पंक्ति के भीतर डेटा का उपयोग करके, पंक्ति को पहचानने का एक साधन प्रदान करती है। एक प्राथमिक कुंजी एक या अधिक स्तंभों पर आधारित हो सकती है, जैसे पहले और अंतिम नाम; हालाँकि, कई डिज़ाइनों में, प्राथमिक कुंजी एक पहचान कॉलम से एक ऑटो-जनरेट संख्या है।

एक प्राथमिक कुंजी में निम्नलिखित विशेषताएं हैं:

  1. तालिका के लिए केवल एक प्राथमिक कुंजी हो सकती है।
  2. प्राथमिक कुंजी में एक या अधिक कॉलम होते हैं।
  3. प्राथमिक कुंजी तालिका की इकाई अखंडता को लागू करती है।
  4. परिभाषित सभी स्तंभों को NULL के रूप में परिभाषित नहीं किया जाना चाहिए।
  5. प्राथमिक कुंजी विशिष्ट रूप से एक पंक्ति की पहचान करती है।
  6. प्राथमिक कुंजी डिफ़ॉल्ट रूप से स्पष्ट अद्वितीय अनुक्रमित में परिणाम।

अद्वितीय कुंजी

एक अद्वितीय कुंजी को एक अद्वितीय बाधा भी कहा जाता है। डेटाबेस के भीतर पंक्तियों को अद्वितीय बनाने के लिए एक अद्वितीय बाधा का उपयोग किया जा सकता है।

क्या हम पहले से ही प्राथमिक कुंजी के साथ ऐसा नहीं करते हैं? हां, हम करते हैं, लेकिन एक तालिका में स्तंभों के कई सेट हो सकते हैं जो आप अद्वितीय चाहते हैं।

SQL सर्वर में अद्वितीय कुंजी में निम्न विशेषताएँ हैं:

  1. एक टेबल पर कई विशिष्ट कुंजी परिभाषित की जा सकती हैं।
  2. डिफ़ॉल्ट रूप से अनूठे सूचियों में अनूठे कुंजी का परिणाम होता है।
  3. एक या अधिक स्तंभ एक अद्वितीय कुंजी बनाते हैं।
  4. कॉलम NULL हो सकता है, लेकिन एक NULL प्रति कॉलम की अनुमति है।
  5. एक अद्वितीय बाधा को एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा सकता है।

स्रोत: यहाँ


0

एक प्राथमिक कुंजी की मुख्य विशेषताएं हैं:

इसमें डेटा की प्रत्येक पंक्ति के लिए एक अद्वितीय मान होना चाहिए। इसमें शून्य मान नहीं हो सकते। एक तालिका में केवल एक प्राथमिक कुंजी।

एक विशिष्ट कुंजी की मुख्य विशेषताएं हैं:

इसमें डेटा की प्रत्येक पंक्ति के लिए एक अद्वितीय मान भी हो सकता है।

इसमें अशक्त मूल्य भी हो सकते हैं।

एक तालिका में एकाधिक अद्वितीय कुंजियाँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.