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


जवाबों:


20

एक मेज में अधिकतम एक PRIMARY KEYबाधा हो सकती है, लेकिन इसमें कई अवरोध हो सकते हैं UNIQUE KEY

उन स्तंभों के PRIMARY KEYरूप में परिभाषित किया जाना चाहिए NOT NULL। यह उन स्तंभों के लिए आवश्यक नहीं है जो UNIQUE KEYबाधाओं का हिस्सा हैं । यदि स्तंभ अशक्त नहीं हैं, तो अद्वितीय और प्राथमिक कुंजी के बीच कोई अंतर नहीं है।

एक और मामूली अंतर यह है कि आप एक UNIQUE KEYबाधा (और सूचकांक) के लिए इच्छित नाम चुन सकते हैं । दूसरी ओर, PRIMARY KEYडिफ़ॉल्ट नाम है PRIMARY:।


5

एक बड़ा अंतर

  • प्राथमिक कुंजी अशक्त स्तंभों को रोकती है
  • अद्वितीय कुंजी अशक्त स्तंभों की अनुमति देती है

अन्यथा, बहुत अंतर नहीं है ...


4

कुछ अन्य लोगों ने इंगित नहीं किया है:

  • यदि आप स्पष्ट रूप से InnoDB तालिकाओं में एक PK घोषित नहीं करते हैं, तो यह आपके लिए कवर के तहत एक बना देगा। आप इस अंतर्निहित कुंजी द्वारा पहुँच, आदेश या फ़िल्टर नहीं कर सकते। यह संसाधनों के संदर्भ में प्रभावकारिता है क्योंकि प्रत्येक माध्यमिक सूचकांक में पंक्ति के पीके को कॉपी पॉइंटर होता है।

3

सबसे महत्वपूर्ण अंतर उनके उद्देश्य में है

  • प्राथमिक कुंजी : प्राथमिक कुंजी का उद्देश्य एक "कुंजी" के रूप में कार्य करना है। रिकॉर्ड्स की पहचान करने के लिए उपयोग किए जाने वाले रिलेशनल डेटाबेस में एक प्राथमिक कुंजी एक कुंजी है।
  • अनोखा सूचकांक : अद्वितीय सूचकांक प्रदर्शन के लिए एक "INDEX" है। ऑप्टिमाइज़र जानता है कि एक शर्त के लिए "जहाँ x =: x" एक परिणाम के रूप में केवल एक रिकॉर्ड होगा - इसलिए यह उसके लिए उपयुक्त योजना तैयार कर सकता है।
  • अद्वितीय बाधा : यह एक "CONSTRAINT" है जो यह सुनिश्चित करता है कि उस कॉलम में कोई डुप्लिकेट मान नहीं हैं। यह डेटा अखंडता के लिए एक बाधा है।

उनके उद्देश्य के अलावा, निम्नलिखित बिंदु उल्लेखनीय हैं।

  • जब तक अन्यथा निर्दिष्ट PRIMARY KEY एक CLUSTERED INDEX बनाने की कोशिश नहीं करेगा (यह बिंदु SQL सर्वर के बारे में है, हालांकि टिप्पणी में उल्लिखित है)
  • प्रति तालिका में केवल एक प्राथमिक कुंजी हो सकती है; लेकिन कई अद्वितीय बाधाएं और अद्वितीय सूचकांक हो सकते हैं
  • प्राथमिक कुंजी हमेशा शून्य नहीं होती है लेकिन अद्वितीय अवरोध के साथ कॉलम NULL मान रख सकते हैं

1
प्रश्न को MySQL टैग किया गया है। आप अन्यथा निर्दिष्ट नहीं कर सकते हैं, यदि तालिका InnoDB इंजन का उपयोग करती है और एक प्राथमिक कुंजी है, तो यह संकुल सूचकांक है। कोई विकल्प नहीं। शायद आप SQL सर्वर के बारे में सोच रहे थे।
ypercube y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.