प्राथमिक कुंजी और विदेशी कुंजी के बीच अंतर
प्राथमिक कुंजी बनाम विदेशी कुंजी के बीच मुख्य अंतर
- प्राथमिक कुंजी बाधा एक स्तंभ है जो संबंधपरक डेटाबेस प्रबंधन प्रणाली की तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानता है, जबकि विदेशी कुंजी एक स्तंभ है जो दो तालिकाओं के बीच संबंध बनाता है।
- प्राथमिक कुंजी कभी भी शून्य मान स्वीकार नहीं करती, जबकि विदेशी कुंजी एकाधिक शून्य मान स्वीकार कर सकती है।
- आप किसी तालिका में केवल एक ही प्राथमिक कुंजी रख सकते हैं, जबकि आप किसी तालिका में अनेक विदेशी कुंजियाँ रख सकते हैं।
- प्राथमिक कुंजी का मान पैरेंट तालिका से नहीं हटाया जा सकता, जबकि विदेशी कुंजी का मान चाइल्ड तालिका से हटाया जा सकता है।
- किसी भी दो पंक्तियों में प्राथमिक कुंजी के लिए समान मान नहीं हो सकते; दूसरी ओर, किसी विदेशी कुंजी में डुप्लिकेट मान हो सकते हैं।
- विदेशी कुंजी तालिका में कोई भी मान डालते समय तालिका स्तंभ में मान डालने की कोई सीमा नहीं है; सुनिश्चित करें कि मान प्राथमिक कुंजी के स्तंभ में मौजूद है।
यहां, मैंने प्राथमिक कुंजी और विदेशी कुंजी के बीच अंतर का विश्लेषण किया है और उनके पक्ष और विपक्ष का व्यापक मूल्यांकन करूंगा।
प्राथमिक कुंजी क्या है?
प्राथमिक कुंजी बाधा एक स्तंभ या स्तंभों का समूह है जो रिलेशनल डेटाबेस प्रबंधन प्रणाली की तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानता है। यह डुप्लिकेट नहीं हो सकता है, जिसका अर्थ है कि एक ही मान तालिका में एक से अधिक बार नहीं दिखना चाहिए।
एक तालिका में एक से अधिक प्राथमिक कुंजी नहीं हो सकती। प्राथमिक कुंजी कॉलम या टेबल स्तर पर परिभाषित किया जा सकता है। यदि आप एक समग्र प्राथमिक कुंजी बनाते हैं, तो इसे टेबल स्तर पर परिभाषित किया जाना चाहिए।
प्राथमिक कुंजी का उदाहरण
सिंटेक्स:
प्राथमिक कुंजी का सिंटैक्स नीचे दिया गया है:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
यहाँ,
- Table_Name उस तालिका का नाम है जिसे आपको बनाना है।
- Column_Name प्राथमिक कुंजी वाले कॉलम का नाम है।
उदाहरण:
स्टडआईडी | अनुक्रमांक | प्रथम नाम | उपनाम | ईमेल |
---|---|---|---|---|
1 | 11 | जिल्द | मूल्य | abc@gmail.com |
2 | 12 | Nick | राइट | xyz@gmail.com |
3 | 13 | दाना | Natan | mno@yahoo.com |
उपरोक्त उदाहरण में, हमने StudID, रोल नंबर, प्रथम नाम, अंतिम नाम और ईमेल जैसे कॉलम के साथ एक छात्र तालिका बनाई है। StudID को प्राथमिक कुंजी के रूप में चुना जाता है क्योंकि यह तालिका में अन्य पंक्तियों को विशिष्ट रूप से पहचान सकता है।
प्राथमिक कुंजी का उपयोग क्यों करें?
डेटाबेस सिस्टम को संभालने के अपने वर्षों के दौरान, मैंने प्राथमिक कुंजी का उपयोग करते समय इन नुकसानों और लाभों को नोट किया है:
- प्राथमिक कुंजी का मुख्य उद्देश्य डेटाबेस तालिका में प्रत्येक रिकॉर्ड की पहचान करना है।
- आप प्राथमिक कुंजी का उपयोग तब कर सकते हैं जब आप किसी को शून्य मान दर्ज करने की अनुमति नहीं देते हैं।
- यदि आप रिकॉर्ड हटाते या अपडेट करते हैं, तो डेटा अखंडता सुनिश्चित करने के लिए आपके द्वारा निर्दिष्ट कार्रवाई की जाएगी।
- पैरेंट तालिका के लिए हटाने या अद्यतन करने की कार्रवाई को अस्वीकार करने के लिए प्रतिबंध कार्रवाई निष्पादित करें।
- जब भी आप किसी DBMS तालिका को भौतिक रूप से व्यवस्थित करते हैं, तो डेटा को क्लस्टर्ड इंडेक्स के अनुक्रम में व्यवस्थित किया जाता है।
विदेशी कुंजी क्या है?
विदेशी कुंजी एक कॉलम है जो दो तालिकाओं के बीच संबंध बनाता है। विदेशी कुंजी का उद्देश्य डेटा अखंडता को बनाए रखना और किसी इकाई के दो अलग-अलग उदाहरणों के बीच नेविगेशन की अनुमति देना है। यह दो तालिकाओं के बीच एक क्रॉस-रेफरेंस के रूप में कार्य करता है क्योंकि यह किसी अन्य तालिका की प्राथमिक कुंजी को संदर्भित करता है। डेटाबेस में प्रत्येक संबंध को एक विदेशी कुंजी द्वारा समर्थित होना चाहिए।
विदेशी कुंजी का उदाहरण
सिंटेक्स:
विदेशी कुंजी का सिंटैक्स नीचे दिया गया है:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
यहाँ,
- पैरामीटर तालिका नाम उस तालिका का नाम इंगित करता है जिसे आप बनाने जा रहे हैं।
- पैरामीटर column1, column2… उन स्तंभों को दर्शाते हैं जिन्हें तालिका में जोड़ने की आवश्यकता है।
- बाधा उस बाधा का नाम दर्शाती है जिसे आप बना रहे हैं।
- संदर्भ प्राथमिक कुंजी वाली तालिका को इंगित करते हैं।
उदाहरण:
विभाग कोड | विभाग का नाम |
---|---|
001 | विज्ञान |
002 | अंग्रेज़ी |
005 | कंप्यूटर |
शिक्षक आईडी | उपनाम | एलनाम |
---|---|---|
B002 | डेविड | वार्नर |
B017 | सारा | यूसुफ |
B009 | माइक | ब्रंटन |
ऊपर दिए गए उदाहरण में, हमारे पास दो टेबल हैं: एक शिक्षक और एक स्कूल में एक विभाग। हालाँकि, यह देखने का कोई तरीका नहीं है कि कौन सी खोज किस विभाग में काम करती है।
इस तालिका में, Deptcode में विदेशी कुंजी को शिक्षक के नाम में जोड़कर, हम दो तालिकाओं के बीच संबंध बना सकते हैं।
शिक्षक आईडी | विभाग कोड | उपनाम | एलनाम |
---|---|---|---|
B002 | 002 | डेविड | वार्नर |
B017 | 002 | सारा | यूसुफ |
B009 | 001 | माइक | ब्रंटन |
इस अवधारणा को संदर्भित अखंडता के नाम से भी जाना जाता है।
विदेशी कुंजी का उपयोग क्यों करें?
मैंने जो देखा है उसके अनुसार विदेशी कुंजियों को लागू करने के महत्वपूर्ण कारण ये हैं:
- विदेशी कुंजियाँ आपको मूल तालिका से प्राथमिक कुंजी का उपयोग करके संस्थाओं को स्थानांतरित करने में मदद करती हैं।
- A विदेशी कुंजी आपको दो या अधिक तालिकाओं को एक साथ जोड़ने में सक्षम बनाता है।
- यह आपके डेटाबेस डेटा को सुसंगत बनाता है।
- विदेशी कुंजी का उपयोग किसी स्तंभ या स्तंभों के संयोजन को मूल तालिका में प्राथमिक कुंजी के साथ मिलान करने के लिए किया जा सकता है।
- SQL विदेशी कुंजी प्रतिबंध का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि डेटा पैरेंट की संदर्भात्मक अखंडता चाइल्ड तालिका में मानों से मेल खाती है।
प्राथमिक कुंजी और विदेशी कुंजी के बीच अंतर
मैं प्राथमिक कुंजी और विदेशी कुंजी के बीच महत्वपूर्ण अंतर साझा करना चाहता हूँ, जैसा कि मैंने व्यक्तिगत रूप से अनुभव किया है:
तुलना आधार | प्राथमिक कुंजी | विदेशी कुंजी |
---|---|---|
परिभाषा | प्राथमिक कुंजी बाधा एक स्तंभ या स्तंभों का समूह है जो तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानता है रिलेश्नल डाटाबेस मेनेजमेन्ट सिस्टम. | विदेशी कुंजी एक स्तंभ है जो दो तालिकाओं के बीच संबंध बनाता है। |
बुनियादी | यह आपको तालिका में किसी रिकार्ड को विशिष्ट रूप से पहचानने में मदद करता है। | यह तालिका में एक फ़ील्ड है जो किसी अन्य तालिका की प्राथमिक कुंजी है। |
नल | प्राथमिक कुंजी कभी भी शून्य मान स्वीकार नहीं करती. | एक विदेशी कुंजी एकाधिक शून्य मान स्वीकार कर सकती है। |
सूचीकरण | प्राथमिक कुंजी एक संकुलित सूचकांक है, और DBMS तालिका में डेटा भौतिक रूप से संकुलित सूचकांक के अनुक्रम में व्यवस्थित होता है। | एक विदेशी कुंजी स्वचालित रूप से कोई अनुक्रमणिका, क्लस्टर्ड या गैर-क्लस्टर्ड नहीं बना सकती। |
गिनती | आप किसी तालिका में एक ही प्राथमिक कुंजी रख सकते हैं। | आप एक तालिका में अनेक विदेशी कुंजियाँ रख सकते हैं। |
विलोपन | प्राथमिक कुंजी का मान मूल तालिका से हटाया नहीं जा सकता. | विदेशी कुंजी का मान चाइल्ड टेबल से हटाया जा सकता है। |
अस्थायी तालिका | आप अस्थायी तालिकाओं में प्राथमिक कुंजी को अंतर्निहित रूप से परिभाषित कर सकते हैं। | आप स्थानीय या वैश्विक अस्थायी तालिकाओं पर विदेशी कुंजियाँ परिभाषित नहीं कर सकते। |
रिश्ता | प्राथमिक कुंजी एक क्लस्टर सूचकांक है। | डिफ़ॉल्ट रूप से, यह एक क्लस्टर्ड इंडेक्स नहीं है। |
आवृत्ति | किसी भी दो पंक्तियों में प्राथमिक कुंजी के मान समान नहीं हो सकते। | किसी विदेशी कुंजी में डुप्लिकेट मान हो सकते हैं। |
निवेशन | तालिका कॉलम में मान डालने की कोई सीमा नहीं है। | विदेशी कुंजी तालिका में कोई भी मान डालते समय, सुनिश्चित करें कि मान प्राथमिक कुंजी के किसी कॉलम में मौजूद है। |
प्राथमिक कुंजी और विदेशी कुंजी के बीच चयन कैसे करें
हमने जो देखा है, उसके अनुसार प्राथमिक कुंजियाँ तालिका प्रविष्टियों को विशिष्ट रूप से पहचानती हैं, तथा विदेशी कुंजियाँ इन प्रविष्टियों को तालिकाओं में जोड़ती हैं, जो डेटा अखंडता को बनाए रखने तथा कुशल डेटा पुनर्प्राप्ति को सुविधाजनक बनाने के लिए महत्वपूर्ण हैं।