मुझे लगता है कि आप डेटाबेस द्वारा लागू विदेशी कुंजी बाधाओं के बारे में बात कर रहे हैं । आप शायद पहले से ही विदेशी कुंजी का उपयोग कर रहे हैं, आपने अभी इसके बारे में डेटाबेस को नहीं बताया है।
मान लीजिए कि एक प्रोग्रामर वास्तव में पहले से ही सही तरीके से ऐसा कर रहा है, तो क्या हमें वास्तव में विदेशी कुंजी की अवधारणा की आवश्यकता है?
सैद्धांतिक रूप से, नहीं। हालांकि, बग के बिना सॉफ़्टवेयर का एक टुकड़ा कभी नहीं रहा है।
एप्लिकेशन कोड में कीड़े आमतौर पर खतरनाक नहीं होते हैं - आप बग को पहचानते हैं और इसे ठीक करते हैं, और उसके बाद आवेदन फिर से सुचारू रूप से चलता है। लेकिन अगर बग डेटाबेस में डेटा को घुमाने की अनुमति देता है, तो आप इसके साथ फंस गए हैं! डेटाबेस में भ्रष्ट डेटा को पुनर्प्राप्त करना बहुत कठिन है।
विचार करें कि क्या फॉगबग में एक सूक्ष्म बग डेटाबेस में एक भ्रष्ट विदेशी कुंजी को लिखने की अनुमति देता है। बग को ठीक करना आसान हो सकता है और बग फिक्स रिलीज में ग्राहकों को जल्दी से धक्का दे सकता है। हालांकि, दर्जनों डेटाबेस में भ्रष्ट डेटा कैसे तय किया जाना चाहिए? सही बात कोड अब अचानक टूट सकता है क्योंकि विदेशी चाबियों की अखंडता के बारे में धारणाएं अब पकड़ में नहीं आती हैं।
वेब एप्लिकेशन में आपके पास आमतौर पर केवल एक प्रोग्राम होता है जो डेटाबेस से बोलता है, इसलिए केवल एक ही स्थान है जहां बग डेटा को दूषित कर सकते हैं। एंटरप्राइज़ एप्लिकेशन में एक ही डेटाबेस से बोलने वाले कई स्वतंत्र अनुप्रयोग हो सकते हैं (डेटाबेस शेल के साथ सीधे काम करने वाले लोगों का उल्लेख नहीं करने के लिए)। यह सुनिश्चित करने का कोई तरीका नहीं है कि सभी एप्लिकेशन बग के बिना, हमेशा और हमेशा के लिए समान मान्यताओं का पालन करें।
यदि डेटाबेस में बाधाओं का सामना किया जाता है, तो सबसे खराब जो बग के साथ हो सकता है वह यह है कि उपयोगकर्ता को कुछ SQL बाधा के बारे में बदसूरत त्रुटि संदेश दिखाया गया है जो संतुष्ट नहीं है। यह आपके एंटरप्राइज़ डेटाबेस में डेटा को स्थानांतरित करने के लिए बहुत बेहतर है, जहां यह बदले में आपके सभी अनुप्रयोगों को तोड़ देगा या केवल सभी प्रकार के गलत या भ्रामक आउटपुट का नेतृत्व करेगा।
ओह, और विदेशी कुंजी बाधाएं भी प्रदर्शन में सुधार करती हैं क्योंकि वे डिफ़ॉल्ट रूप से अनुक्रमित होते हैं। मैं किसी भी कारण से विदेशी कुंजी बाधाओं का उपयोग नहीं करने के बारे में सोच भी नहीं सकता ।