2010-03-16 19 views

उत्तर

8

अलग है: प्राथमिक कुंजी डिफ़ॉल्ट रूप से क्लस्टर सूचकांक बनाएगी और केवल एक पीके एक तालिका में मौजूद हो सकती है। प्राथमिक कुंजी कई कॉलम (समग्र कुंजी) को कवर कर सकती है

+5

आपके पास एकाधिक कॉलमों में फैली अद्वितीय बाधाएं हो सकती हैं। – Thilo

4

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

आप एक मेज लेकिन कई अद्वितीय कुंजी

में केवल एक प्राथमिक कुंजी हो सकता है जब आप एक अद्वितीय बाधा घोषित, एसक्यूएल सर्वर डुप्लिकेट के लिए खोज की प्रक्रिया में तेजी लाने के लिए एक अनूठा सूचकांक पैदा करता है। इस मामले में सूचकांक NONCLUSTERED इंडेक्स पर डिफ़ॉल्ट है, क्योंकि आपके पास प्रति तालिका केवल एक क्लस्टरेड इंडेक्स हो सकता है।

  • तालिका के अनुसार अद्वितीय की कमी की संख्या यानी 249 nonclustered अनुक्रमणिका और एक संभावित क्लस्टर सूचकांक मेज पर अनुक्रमित की संख्या से सीमित है।

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

हैप्पी कोडिंग !!!

+0

"अद्वितीय बाधाएं पूरी तरह से स्वीकार कर सकती हैं लेकिन सिर्फ एक बार": अवतारकाव ने जो कहा वह विपरीत है: अद्वितीय कुंजी नल हो सकती है, और कई नल मूल्यों की अनुमति है। इनमें से कौनसा? – Thilo

+2

से: http://dev.mysql.com/doc/refman/5.0/en/create-index.html एक अद्वितीय सूचकांक एक बाधा उत्पन्न करता है जैसे कि सूचकांक में सभी मान अलग-अलग होना चाहिए। एक त्रुटि तब होती है जब आप किसी मौजूदा पंक्ति से मेल खाने वाले कुंजी मान के साथ एक नई पंक्ति जोड़ने का प्रयास करते हैं। यह बाधा बीडीबी स्टोरेज इंजन को छोड़कर नल मूल्यों पर लागू नहीं होती है।अन्य इंजनों के लिए, एक यूनिक इंडेक्स कॉलम के लिए कई नल मानों की अनुमति देता है जिसमें न्यूल हो सकता है। यदि आप एक यूनिक इंडेक्स में कॉलम के लिए उपसर्ग मान निर्दिष्ट करते हैं, तो कॉलम मान उपसर्ग के भीतर अद्वितीय होना चाहिए। – AvatarKava

+1

प्रश्न "mysql" टैग किया गया है, लेकिन मेरा मानना ​​है कि ओरेकल कई नल मूल्यों को भी अनुमति देता है (दो न्यूल को बराबर नहीं माना जाता है)। ऐसा लगता है कि यह अधिक प्राकृतिक सम्मेलन है। – Thilo

0

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

13

नहीं।

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

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

+1

उह जो एक अनजान भयानक पन था। – AvatarKava

+0

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

+0

शायद 4.x में वापस आ गया है, डंकन - मुझे विश्वास है कि उनके पास उस बाधा को वापस किया गया था: http://dev.mysql.com/doc/refman/5.0/en/create-index.html – AvatarKava

4

यूनिक अभी भी शून्य हो सकता है।

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

संबंधित मुद्दे