संबंधपरक डेटाबेस के संदर्भ में, एक विदेशी कुंजी एक महत्वपूर्ण तत्व है जो संस्थाओं के बीच संबंधों को स्थापित और लागू करता है और डेटाबेस तालिकाओं में संदर्भात्मक अखंडता सुनिश्चित करता है। विदेशी कुंजी एक तालिका में एक स्तंभ या स्तंभों का समूह है जो किसी अन्य तालिका के प्राथमिक कुंजी स्तंभों को संदर्भित करता है। विदेशी कुंजी वाली तालिका को संदर्भ या चाइल्ड तालिका के रूप में जाना जाता है, जबकि प्राथमिक कुंजी वाली तालिका को अक्सर संदर्भित या मूल तालिका के रूप में जाना जाता है।
AppMaster, एक शक्तिशाली no-code प्लेटफ़ॉर्म, डेटाबेस स्कीमा डिज़ाइन और प्रबंधन के लिए अपने व्यापक दृष्टिकोण के हिस्से के रूप में विदेशी कुंजियों का उपयोग करता है, जिससे उपयोगकर्ता बिना कोई कोड लिखे कुशल और स्केलेबल रिलेशनल डेटाबेस संरचनाएँ बना सकते हैं। विदेशी कुंजियों का उपयोग करके, AppMaster अपने उपयोगकर्ताओं को अपने एप्लिकेशन की डेटा इकाइयों के बीच जटिल संबंधों और निर्भरताओं को मॉडल करने के लिए सशक्त बनाता है, जिससे अंतर्निहित व्यावसायिक डोमेन का सटीक और सुसंगत प्रतिनिधित्व सुनिश्चित होता है।
विदेशी कुंजी का प्राथमिक उद्देश्य संबंधपरक डेटाबेस में संदर्भात्मक अखंडता बनाए रखना है। रेफ़रेंशियल अखंडता डेटा स्थिरता नियमों और बाधाओं का एक सेट है जो यह सुनिश्चित करता है कि संबंधित तालिकाओं में डेटा सटीक और सुसंगत बना रहे। ये नियम निर्देशित करते हैं कि चाइल्ड टेबल के विदेशी कुंजी कॉलम में कोई भी मान मूल तालिका के प्राथमिक कुंजी कॉलम में मौजूदा मान के अनुरूप होना चाहिए। दूसरे शब्दों में, विदेशी कुंजी बाधाएँ चाइल्ड टेबल में अनाथ रिकॉर्ड के निर्माण से रक्षा करती हैं।
दो तालिकाओं, ग्राहक और ऑर्डर वाले डेटाबेस के एक सरल उदाहरण पर विचार करें, जहां प्रत्येक ऑर्डर का एक ग्राहक होता है जिसने इसे रखा है। इस परिदृश्य में, ग्राहक तालिका में प्रत्येक ग्राहक की विशिष्ट पहचान के लिए एक प्राथमिक कुंजी कॉलम, जैसे 'ग्राहक_आईडी' शामिल होगा। दूसरी ओर, ऑर्डर तालिका में प्रत्येक ऑर्डर को उसके संबंधित ग्राहक से जोड़ने के लिए एक विदेशी कुंजी कॉलम होगा, जैसे 'ग्राहक_आईडी'। यह विदेशी कुंजी बाधा लागू करती है कि ऑर्डर तालिका में किसी भी ऑर्डर के साथ एक वैध ग्राहक जुड़ा होना चाहिए, जो ग्राहक तालिका में मौजूद है। नतीजतन, संभावित डेटा विसंगतियों को रोकते हुए, गैर-मौजूद ग्राहक के साथ ऑर्डर बनाना असंभव होगा।
संदर्भात्मक अखंडता बनाए रखने के अलावा, विदेशी कुंजियों का उपयोग संस्थाओं के बीच संबंधों को परिभाषित करने के लिए भी किया जा सकता है। इन संबंधों को तीन प्रकारों में वर्गीकृत किया जा सकता है: एक-से-एक, एक-से-अनेक, और अनेक-से-अनेक। एक-से-एक संबंध दो संस्थाओं के बीच एक सख्त संबंध को परिभाषित करता है, जहां मूल तालिका में प्रत्येक इकाई चाइल्ड तालिका में अधिकतम एक इकाई से जुड़ी होती है। एक-से-अनेक संबंध, जैसा कि ग्राहक और ऑर्डर उदाहरण में दिखाया गया है, चाइल्ड तालिका में एकाधिक रिकॉर्ड को मूल तालिका में एकल रिकॉर्ड के साथ संबद्ध करने की अनुमति देता है। मैनी-टू-मैनी संबंध, जिसके लिए मध्यस्थ या जंक्शन तालिकाओं की आवश्यकता होती है, प्रत्येक भाग लेने वाली तालिका से कई रिकॉर्ड को दूसरे में कई रिकॉर्ड से जोड़ने की अनुमति देता है।
विदेशी कुंजी बाधाएं भी कैस्केडिंग क्रियाओं को लागू कर सकती हैं, जो यह तय करती हैं कि डेटाबेस को संबंधित रिकॉर्ड में अपडेट या विलोपन को कैसे संभालना चाहिए। चार प्राथमिक कैस्केडिंग क्रियाएं कैस्केड, सेट शून्य, सेट डिफॉल्ट, और कोई कार्रवाई या प्रतिबंध नहीं हैं। CASCADE विकल्प मूल तालिका में प्राथमिक कुंजी मान में किए गए परिवर्तनों या विलोपन को चाइल्ड तालिका में सभी संबंधित विदेशी कुंजी मानों में प्रसारित करेगा। जब मूल तालिका में संबंधित प्राथमिक कुंजी मान अद्यतन या हटा दिया जाता है, तो SET NULL चाइल्ड तालिका में विदेशी कुंजी मान को NULL पर सेट कर देगा। SET DEFAULT समान रूप से कार्य करता है लेकिन चाइल्ड तालिका में विदेशी कुंजी मान को NULL के बजाय उसके डिफ़ॉल्ट मान पर निर्दिष्ट करता है। अंत में, NO ACTION या RESTRICT प्राथमिक कुंजी मान में किसी भी बदलाव को रोकता है जो चाइल्ड टेबल में संबंधित रिकॉर्ड को अनाथ कर देगा।
संक्षेप में, एक विदेशी कुंजी संबंधपरक डेटाबेस के निर्माण और प्रबंधन में एक महत्वपूर्ण अवधारणा है, जो सुसंगत, सटीक और परस्पर डेटा प्रतिनिधित्व सुनिश्चित करती है। डेटाबेस स्कीमा डिज़ाइन के लिए अपने सहज, दृश्य दृष्टिकोण के माध्यम से, AppMaster विदेशी कुंजी की शक्ति और लचीलेपन को अपनाता है, अपने उपयोगकर्ताओं को कोड की एक भी पंक्ति लिखे बिना स्केलेबल, कुशल और विश्वसनीय डेटाबेस संरचनाएं बनाने के लिए सशक्त बनाता है। AppMaster न केवल डेटाबेस डिज़ाइन में विदेशी कुंजी को शामिल करने की प्रक्रिया को सरल बनाता है बल्कि तेज़ और अधिक लागत प्रभावी सॉफ़्टवेयर विकास में भी योगदान देता है।