विदेशी कुंजियाँ डेटाबेस व्यवस्थापकों को SQL डेटाबेस प्रबंधन प्रणाली के भीतर मौजूद विभिन्न कनेक्शनों को आसानी से पहचानने की अनुमति देती हैं।

SQL डेटाबेस प्रबंधन प्रणाली के भीतर डेटा पर गणितीय कार्य करता है। इन डेटाबेस में अलग-अलग टेबल होते हैं जो प्रत्येक विशिष्ट इकाई पर डेटा संग्रहीत करते हैं। यदि आपके पास एक कार किराए पर लेने का डेटाबेस है, तो उस डेटाबेस में एक इकाई (या टेबल) ग्राहक होंगे (जो प्रत्येक ग्राहक पर सभी व्यक्तिगत डेटा संग्रहीत करेंगे)।

इन डेटाबेस तालिकाओं में पंक्तियाँ और स्तंभ होते हैं, जहाँ प्रत्येक पंक्ति एक रिकॉर्ड होस्ट करती है और प्रत्येक स्तंभ विशेषता-विशिष्ट डेटा रखता है।

एक डेटाबेस प्रबंधन प्रणाली में, प्रत्येक रिकॉर्ड (या पंक्ति) अद्वितीय होना चाहिए।

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

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

प्राथमिक कुंजी बनाना इस जोखिम को कम करेगा। SQL डेटाबेस प्रबंधन प्रणाली में, एक प्राथमिक कुंजी एक विशिष्ट पहचानकर्ता है जो एक रिकॉर्ड को दूसरे से अलग करती है।

इसलिए, SQL डेटाबेस प्रबंधन प्रणाली में प्रत्येक रिकॉर्ड में एक प्राथमिक कुंजी होनी चाहिए।

एक डेटाबेस में प्राथमिक कुंजी का उपयोग करना

SQL का उपयोग करके डेटाबेस प्रबंधन प्रणाली में प्राथमिक कुंजी को शामिल करने के लिए, आप एक नई तालिका बनाते समय इसे सामान्य विशेषता के रूप में जोड़ सकते हैं। इसलिए ग्राहकों की तालिका में चार विशेषताएँ (या कॉलम) होंगी:

  • CarOwnerID (जो प्राथमिक कुंजी संग्रहीत करेगा)
  • नाम
  • अंतिम नाम
  • फ़ोन नंबर

सम्बंधित: SQL में टेबल कैसे बनाये

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

एक प्राथमिक कुंजी उदाहरण के साथ एक रिकॉर्ड

/ * ग्राहकों की तालिका में एक नया रिकॉर्ड बनाता है * /
INSERT इन्टो कस्टमर वैल्यूज
('0004',
'जॉन',
'ब्राउन',
'111-999-5555');

उपरोक्त SQL कोड पहले से मौजूद एक नया रिकॉर्ड जोड़ देगा ग्राहकों तालिका। नीचे दी गई तालिका दो जॉन ब्राउन रिकॉर्ड के साथ नई ग्राहक तालिका दिखाती है।

द फॉरेन की

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

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

एक विदेशी कुंजी क्या है?

SQL डेटाबेस प्रबंधन प्रणाली में, एक विदेशी कुंजी एक विशिष्ट पहचानकर्ता या अद्वितीय पहचानकर्ताओं का एक संयोजन है जो एक डेटाबेस में दो या अधिक तालिकाओं को जोड़ता है।

अस्तित्व में चार SQL डेटाबेस प्रबंधन प्रणालियों में से, रिलेशनल डेटाबेस मैनेजमेंट सिस्टम सबसे लोकप्रिय है। जब एक संबंधपरक डेटाबेस में कौन सी तालिका में एक विदेशी कुंजी होनी चाहिए, तो आपको पहले यह पता लगाना चाहिए कि कौन सी तालिका विषय है और उनके संबंध में कौन सी वस्तु है।

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

SQL कोड जो एक विदेशी कुंजी के साथ एक तालिका बनाता है, आदर्श से थोड़ा अलग है।

एक विदेशी कुंजी उदाहरण के साथ एक तालिका बनाना

/ * कार किराए पर लेने के डेटाबेस में एक नई कार तालिका बनाता है * /
बनाएँ कार
(
लाइसेंस नम्बर वर्चर (30) पूर्ण प्राथमिक कुंजी नहीं,
CarType varchar (30) पूर्ण नहीं,
ग्राहक संस्करण (30) विदेश कुंजी ग्राहक (ग्राहक)
);

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

सम्बंधित: शुरुआती के लिए एसेंशियल एसक्यूएल कमांड चीट शीट

नई तालिका में रिकॉर्ड जोड़ने के लिए, आपको यह सुनिश्चित करने की आवश्यकता होगी कि विदेशी कुंजी फ़ील्ड में मूल्य मूल तालिका के प्राथमिक कुंजी फ़ील्ड में मान से मेल खाता है।

एक विदेशी कुंजी उदाहरण के साथ एक रिकॉर्ड जोड़ना

/ * कार तालिका में एक नया रिकॉर्ड बनाता है * /
INSERT INTO कार वाल्व
('100012',
'मर्सिडीज-बेंज',
'0004');

ऊपर दिया गया कोड नए में एक नया रिकॉर्ड बनाता है कारों तालिका, निम्नलिखित परिणाम का उत्पादन।

कारों की मेज

ऊपर दी गई तालिका से, आप सही जॉन ब्राउन की पहचान कर सकते हैं जो रिकॉर्ड में विदेशी कुंजी द्वारा मर्सिडीज-बेंज को किराए पर लेते हैं।

एडवांस फॉरेन कीज

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

यदि आप ऊपर दी गई किसी विदेशी कुंजी की परिभाषा को देखते हैं, तो आप पाएंगे कि यह कहता है कि एक विदेशी कुंजी एक विशिष्ट पहचानकर्ता या विशिष्ट पहचानकर्ताओं का संयोजन हो सकती है।

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

समग्र कुंजी

एक समग्र कुंजी में दो या अधिक विशिष्ट पहचानकर्ता होते हैं। एक संबंधपरक डेटाबेस में, ऐसे सभी उदाहरण होंगे जब किसी एकल विदेशी कुंजी का उपयोग उस डेटाबेस में मौजूद रिश्तों का पर्याप्त प्रतिनिधित्व नहीं करेगा।

कार किराए पर लेने के उदाहरण में, सबसे व्यावहारिक दृष्टिकोण एक नया टेबल बनाना है जो किराए के विवरण को संग्रहीत करता है। कार रेंटल टेबल की जानकारी उपयोगी होने के लिए, इसे कार और कस्टमर टेबल दोनों से कनेक्ट करना होगा।

समग्र विदेशी कुंजी के साथ एक तालिका बनाना

/ * कार किराए पर लेने के डेटाबेस में एक CarRental तालिका बनाता है * /
रचनात्मक कार बनाएँ
(
दिनांकित दिनांक नहीं है,
लाइसेंस नम्बर वर्चर (30) नॉट फॉरलॉन्ग कुंजी प्रमुख कार (लाइसेंसनंबर),
ग्राहक संस्करण (30) पूर्ण भविष्य के प्रमुख ग्राहक (ग्राहक) नहीं
प्राथमिक कुंजी (DateRented, LicNumber, CustomerID)
);

ऊपर दिए गए कोड में एक महत्वपूर्ण बिंदु दर्शाया गया है; हालाँकि SQL डेटाबेस में एक तालिका में एक से अधिक विदेशी कुंजी हो सकती हैं, लेकिन इसमें केवल एक ही प्राथमिक कुंजी हो सकती है। ऐसा इसलिए है क्योंकि रिकॉर्ड की पहचान करने के लिए केवल एक अनूठा तरीका होना चाहिए।

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

हालांकि, एक समग्र कुंजी का निर्माण जो बताता है कि कौन सा ग्राहक, कौन सी कार, और किस दिन एक उत्कृष्ट अद्वितीय कुंजी बनाता है। यह अद्वितीय कुंजी एक समग्र विदेशी कुंजी और एक समग्र प्राथमिक कुंजी दोनों का प्रतिनिधित्व करती है।

विदेशी प्राथमिक कुंजी

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

कहें कि फ्रेड (जो कार किराए पर लेने वाली कंपनी में काम करता है) कंपनी के डेटाबेस में कर्मचारी तालिका के तहत है। कुछ वर्षों के बाद, वह एक पर्यवेक्षक बन जाता है और पर्यवेक्षक तालिका में जुड़ जाता है।

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

अब आप SQL डेटाबेस में विदेशी कुंजी की पहचान कर सकते हैं

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

यदि आपको लगता है कि विदेशी कुंजियाँ दिलचस्प हैं, तो आप अपने SQL डेटाबेस को क्वेरी करने के लिए प्रोजेक्ट और चयन कार्यों का उपयोग शुरू करते समय एक फील्ड डे होने वाले हैं।

ईमेल
SQL में प्रोजेक्ट और चयन संचालन का उपयोग करना सीखें

इन उदाहरणों के साथ प्रोजेक्ट और चयन संचालन को समझकर SQL रिलेशनल डेटाबेस के साथ पकड़ में आएँ।

आगे पढ़िए

संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • एसक्यूएल
  • डेटाबेस
लेखक के बारे में
कादिशा कीन (14 लेख प्रकाशित)

कादिशा कीन एक फुल-स्टैक सॉफ्टवेयर डेवलपर और तकनीकी / प्रौद्योगिकी लेखक हैं। वह सबसे जटिल तकनीकी अवधारणाओं में से कुछ को सरल बनाने की विशिष्ट क्षमता है; उत्पादन सामग्री जिसे किसी भी तकनीक नौसिखिए द्वारा आसानी से समझा जा सकता है। वह लेखन के बारे में भावुक है, दिलचस्प सॉफ्टवेयर विकसित कर रहा है, और दुनिया की यात्रा (वृत्तचित्रों के माध्यम से)।

कादिशा कीन से अधिक

हमारे न्यूज़लेटर की सदस्यता

टेक टिप्स, रिव्यू, फ्री ईबुक और एक्सक्लूसिव डील्स के लिए हमारे न्यूज़लेटर से जुड़ें!

एक और क़दम…!

कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।

.