Referential Integrity - रेफ़रेंशियल इंटीग्रिटी का क्या मतलब है?

संदर्भात्मक अखंडता बनाए रखने के लिए, डेटाबेस तालिकाओं में संबंधपरक डेटा को सार्वभौमिक रूप से कॉन्फ़िगर करने योग्य होना चाहिए ताकि सिस्टम के एक हिस्से में परिवर्तन से कहीं और अप्रत्याशित समस्याएं पैदा न हों।

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

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

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

सामान्यतया, ये उपकरण प्रशासकों को संदर्भात्मक अखंडता का निर्माण करने देते हैं जो काम करती है।

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

फिर, संदर्भात्मक अखंडता के साथ, आवश्यक होने पर संयुक्त रूप से अद्यतन करने के लिए डेटाबेस सामग्री को एक साथ जोड़ा जाएगा। उदाहरण के लिए:

एक बैंक डेटाबेस पर विचार करें, जिसमें दो तालिकाएँ हैं:
  • ग्राहक_मास्टर तालिका: इसमें मूल ग्राहक/खाताधारक डेटा जैसे नाम, सामाजिक सुरक्षा संख्या, पता और जन्म तिथि शामिल है।
  • ACCOUNTS_MASTER तालिका: यह बुनियादी बैंक खाता डेटा जैसे खाता प्रकार, खाता निर्माण तिथि, खाता धारक और निकासी सीमा संग्रहीत करता है।

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

ऊपर उल्लिखित उदाहरण के बाद, यदि किसी ग्राहक को हटा दिया जाता है, तो उसके खाते के बारे में सभी डेटा शून्य होना चाहिए या उसके खाते के रिकॉर्ड एक गैर-मौजूद ग्राहक को संदर्भित करेंगे।

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

उदाहरण के लिए: यदि एंड्रयू स्मिथ की ग्राहक आईडी CUSTOMER_MASTER तालिका में बदल दी गई है, तो यह परिवर्तन ACCOUNTS_MASTER तालिका पर भी लागू किया जाना चाहिए, जिससे एंड्रयू स्मिथ की खाता जानकारी उसकी ग्राहक आईडी से लिंक हो सके।

तो, संदर्भात्मक अखंडता क्यों महत्वपूर्ण है?

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

यदि प्रबंधकों में से कोई एक चला जाता है, और डेटाबेस को इसे प्रतिबिंबित करना होता है, तो संदर्भात्मक अखंडता प्रणाली यह सुनिश्चित करती है कि दूसरी तालिका में, अलग टीम सदस्य तालिका, निर्दिष्ट प्रबंधक के लिए फ़ील्ड भी बदल जाती है।

अन्यथा, दूसरी तालिका खोजते समय आपके पास अप्रचलित नाम सामने आ जाएगा।

इस सारी प्रक्रिया को "स्थिरता" बनाना भी कहा जा सकता है।

डेटाबेस सामान्यीकरण प्रयास अक्सर इस प्रक्रिया में भी योगदान करते हैं।

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

Post a Comment

0 Comments