2009-11-07 21 views
16

प्राथमिक, अद्वितीय और विदेशी कुंजी बाधाओं, और अनुक्रमणिका के बीच क्या अंतर है?प्राथमिक, अद्वितीय और विदेशी कुंजी बाधाओं, और अनुक्रमणिका के बीच क्या अंतर है?

मैं Oracle 10g और SQL सर्वर पर काम 2008

उत्तर

20

प्राथमिक कुंजी और अद्वितीय कुंजी इकाई अखंडता की कमी

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

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

  • कुंजी या INDEX एक सामान्य गैर अद्वितीय सूचकांक को संदर्भित करता है। इंडेक्स के लिए गैर-विशिष्ट मानों की अनुमति है, इसलिए इंडेक्स में इंडेक्स के सभी कॉलम में समान मान वाले पंक्तियां हो सकती हैं। ये इंडेक्स आपके डेटा पर किसी भी संरचना को लागू नहीं करते हैं, इसलिए इन्हें केवल तेज़ प्रश्नों के लिए उपयोग किया जाता है।
  • UNIQUE एक सूचकांक को संदर्भित करता है जहां सूचकांक की सभी पंक्तियां अद्वितीय होनी चाहिए। यही है, एक ही पंक्ति में इस सूचकांक के सभी स्तंभों के लिए एक और पंक्ति के समान समान गैर-मूल्य मान नहीं हो सकते हैं। साथ ही प्रश्नों को तेज़ करने के लिए उपयोग किया जा रहा है, यूनिक इंडेक्स का उपयोग डेटा पर संरचना को लागू करने के लिए किया जा सकता है, क्योंकि डाटाबेस सिस्टम डेटा को डालने या अपडेट करते समय इस विशिष्ट मान नियम को तोड़ने की अनुमति नहीं देता है। आपका डेटाबेस सिस्टम कॉलम पर एक यूनिक इंडेक्स की अनुमति दे सकता है जो नल मानों की अनुमति देता है, जिस स्थिति में दो पंक्तियों को समान होने की अनुमति है यदि दोनों में एक नल मान होता है (NULL को स्वयं के बराबर नहीं माना जाता है), हालांकि यह संभवतः आपके आधार पर अवांछित है आवेदन।
  • प्राथमिक कार्य एक अद्वितीय सूचकांक की तरह कार्य करता है, सिवाय इसके कि इसे हमेशा 'प्राथमिक' नाम दिया जाता है, और तालिका में केवल एक ही हो सकता है (और हमेशा एक होना चाहिए, हालांकि कुछ डेटाबेस सिस्टम इसे लागू नहीं करते हैं)। एक प्राथमिक सूचकांक तालिका में किसी भी पंक्ति को विशिष्ट रूप से पहचानने के तरीके के रूप में लक्षित किया जाता है, इसलिए इसे किसी भी कॉलम पर उपयोग नहीं किया जाना चाहिए जो पूर्ण मानों को अनुमति देता है। आपकी प्राथमिक अनुक्रमणिका हमेशा स्तंभों की सबसे छोटी संख्या पर होनी चाहिए जो विशिष्ट रूप से पंक्ति की पहचान करने के लिए पर्याप्त हैं। अक्सर, यह केवल एक कॉलम होता है जिसमें एक अद्वितीय ऑटो-वर्धित संख्या होती है, लेकिन यदि कुछ और है जो विशिष्ट रूप से पंक्तियों की पहचान कर सकता है, जैसे देशों की सूची में "देश कोड", तो आप इसका उपयोग कर सकते हैं।
  • FULLTEXT अनुक्रमणिका उपर्युक्त सभी के लिए अलग हैं, और उनका व्यवहार डेटाबेस सिस्टम के बीच अधिक भिन्न है। उपर्युक्त तीनों के विपरीत, जो आम तौर पर बी-पेड़ होते हैं (बाएं अधिकांश कॉलम से चुनने, क्रमबद्ध करने या श्रेणियों के लिए अनुमति देने की अनुमति देते हैं) या हैश (बाएं अधिकांश स्तंभ से चयन के लिए अनुमति देता है), FULLTEXT अनुक्रमणिका केवल पूर्ण टेक्स्ट खोजों के लिए उपयोगी होती है MATCH()/AGAINST() खंड।

देख Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?

+0

नोट: एसक्यूएल सर्वर अद्वितीय की कमी और अनुक्रमित nulls का इलाज के रूप में यदि वे बराबर हैं ताकि "जो मामले में यदि दोनों में एक पूर्ण मूल्य होता है तो दो पंक्तियों को समान होने की अनुमति है। " SQL सर्वर के लिए सच नहीं है। –

4

यहां आपके लिए कुछ संदर्भ हैं:

Primary & foreign key Constraint.

प्राथमिक कुंजी: एक प्राथमिक कुंजी एक क्षेत्र या क्षेत्रों के संयोजन है कि विशिष्ट रूप से किसी तालिका में एक रिकॉर्ड की पहचान करें, ताकि एक व्यक्तिगत रिकॉर्ड बिना भ्रम के स्थित हो सकता है।

विदेशी कुंजी: कभी-कभी एक रेफरेंसिंग कुंजी कहा जाता है) एक महत्वपूर्ण एक साथ दो तालिकाओं को जोड़ने के लिए उपयोग किया जाता है। आमतौर पर आप एक तालिका से प्राथमिक कुंजी फ़ील्ड लेते हैं और इसे अन्य तालिका में डालें जहां यह एक विदेशी कुंजी बन जाता है (यह मूल तालिका में प्राथमिक कुंजी बना रहता है)।

Index, दूसरे हाथ पर, एक विशेषता है कि आप कुछ स्तंभों पर लागू कर सकते हैं ताकि डेटा उन स्तंभों पर किया पुनर्प्राप्ति हो सकता है में तेजी लाने के लिए है।

2

कुंजी/सूचकांक: एक प्रमुख एक तार्किक डेटाबेस डिजाइन का एक पहलू है, एक सूचकांक एक शारीरिक डेटाबेस डिजाइन का एक पहलू है। एक कुंजी एक अखंडता बाधा से मेल खाती है, एक सूचकांक भौतिक रूप से रिकॉर्डिंग मानों की एक तकनीक है जिसे उन बाधाओं को लागू करते समय उपयोगी रूप से लागू किया जा सकता है।

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

"प्राथमिक" कुंजी की तरह, एक "विदेशी" कुंजी भी गुणों का एक सेट है। इन विशेषताओं के मानों को एक संयोजन बनाना चाहिए जो संदर्भित तालिका में मौजूदा प्राथमिक कुंजी मान है। मुझे नहीं पता कि इस नियम को आज भी एसक्यूएल में कितना सख्त लागू होता है। शब्दावली वैसे भी बनी हुई है।

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

17

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

विदेशी कुंजी: दो तालिकाओं के बीच संबंध बनाएं। शून्य हो सकता है। हो सकता है एक नकली  

+0

क्या सभी विदेशी कुंजी अन्य संबंधों की प्राथमिक कुंजी होनी चाहिए? यदि नहीं तो कैसे शून्य विशेषता को विशिष्ट रूप से पहचाना जाएगा। – sidgupta234

3

1) एक primary key एकाधिक लक्षण का एक सेट है जो विशिष्ट संबंध भीतर टपल की पहचान करता है।

2) एक foreign key एक रिश्ता योजना है जिसमें विशिष्ट एक और संबंध योजना fron tuples की पहचान की जा सकती है की विशेषताओं के एक सेट है।

+2

टुपल डेटा मानों का एक संग्रह है जो किसी ऑब्जेक्ट की विशेषताओं को पहचानता है। –

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

प्राथमिक कुंजी मुख्य रूप से दोहराव को रोकने और स्तंभों की विशिष्टता से पता चलता विदेशी कुंजी मुख्य रूप से दो टेबल पर संबंध को दर्शाता है

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