संदर्भिक समग्रता

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

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

औपचारिकता
दो (संभवतः समान) पर एक समावेशन निर्भरता भविष्यवाणी करती है $$R$$ और $$S$$ एक स्कीमा से लिखा गया है $$R[A_1, ..., A_n] \subseteq S[B_1, ..., B_n]$$, जहां $$A_i$$, $$B_i$$ की विशिष्ट विशेषताएँ (स्तंभ नाम) हैं $$R$$ और $$S$$. इसका अर्थ है कि स्तंभों में दिखाई देने वाले मानों का टपल $$A_1, ..., A_n$$ के तथ्यों के लिए $$R$$ कॉलम में मानों के टपल के रूप में भी दिखाई देना चाहिए $$B_1, ..., B_n$$ के कुछ तथ्य के लिए $$S$$.

इस तरह की बाधा टपल पैदा करने वाली निर्भरता (TGD) का एक विशेष रूप है, जहां नियम के दोनों पक्षों में केवल एक संबंधपरक परमाणु होता है। पहले क्रम के तर्क में इसे व्यक्त किया जा सकता है $$\forall \vec{x},\vec{y}. (R(\vec{x},\vec{y}) \rightarrow \exists \vec{z} . S(\vec{x},\vec{z}))$$, कहाँ $$\vec{x}$$ वेक्टर है (जिसका आकार है $$n$$) द्वारा साझा किए गए चर $$R$$ और $$S$$, और कोई चर कई बार न तो TGD के शरीर में और न ही उसके सिर में प्रकट होता है।

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

घोषणात्मक संदर्भात्मक अखंडता
Declarative Referential Integrity (DRI) डेटा अखंडता सुनिश्चित करने के लिए SQL डेटाबेस प्रोग्रामिंग भाषा की तकनीकों में से एक है।

एसक्यूएल में अर्थ (संरचित क्वेरी भाषा)
एक तालिका (जिसे संदर्भित तालिका कहा जाता है) एक विदेशी कुंजी का उपयोग करके किसी अन्य तालिका (संदर्भित तालिका) में एक स्तंभ (या स्तंभों का एक समूह) को संदर्भित कर सकती है। संदर्भित तालिका में संदर्भित कॉलम एक अद्वितीय बाधा के तहत होना चाहिए, जैसे प्राथमिक कुंजी। साथ ही, स्व-संदर्भ संभव हैं (हालांकि एमएस एसक्यूएल सर्वर में पूरी तरह से लागू नहीं किया गया है ). संदर्भ तालिका में एक नई पंक्ति (डेटाबेस) डालने (एसक्यूएल) पर, संबंधपरक डेटाबेस प्रबंधन प्रणाली (आरडीबीएमएस) जांचती है कि संदर्भित तालिका में दर्ज कुंजी मान मौजूद है या नहीं। यदि नहीं, तो कोई सम्मिलन संभव नहीं है। अद्यतन (एसक्यूएल) और हटाएं (एसक्यूएल) पर डीआरआई क्रियाओं को निर्दिष्ट करना भी संभव है, जैसे कि कैस्केड (संदर्भित तालिका में संदर्भ तालिका में परिवर्तन/हटाएं), कोई कार्रवाई नहीं (यदि विशिष्ट पंक्ति संदर्भित है, तो बदलना) key की अनुमति नहीं है) या SET NULL / SET DEFAULT (संदर्भित तालिका में एक परिवर्तित/हटाई गई कुंजी के परिणामस्वरूप संदर्भित मानों को NULL या DEFAULT मान पर सेट किया जाता है यदि कोई निर्दिष्ट है)।

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

यह भी देखें

 * Null_pointer#Null_dereferencing
 * झूलने वाला सूचक
 * डोमेन/कुंजी सामान्य रूप
 * इकाई अखंडता
 * कार्यात्मक निर्भरता
 * प्रसार बाधा
 * सरोगेट कुंजी
 * धीरे-धीरे आयाम बदल रहा है

बाहरी संबंध

 * DRI versus Triggers (archived)