संदर्भिक समग्रता: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Where all data references are valid}} | {{Short description|Where all data references are valid}} | ||
[[File:Referential integrity broken.png|thumb|350px|डेटाबेस का उद्योगउदाहरण जिसने संदर्भित | [[File:Referential integrity broken.png|thumb|350px|डेटाबेस का उद्योगउदाहरण जिसने संदर्भित अखंडता को लागू नहीं किया है। इस उदाहरण में, उद्योगविदेशी कुंजी है (<code>artist_id</code>) एल्बम तालिका में मूल्य जो उद्योगगैर-मौजूद कलाकार को संदर्भित करता है - दूसरे शब्दों में उद्योग[[विदेशी कुंजी]] मान होता है जिसका संदर्भ तालिका में कोई [[प्राथमिक कुंजी]] मान नहीं होता है। यहाँ क्या हुआ था कि [[एरोस्मिथ]] नाम का उद्योगकलाकार था, जिसके पास उद्योग<code>artist_id</code> का <code>4</code>, जिसे कलाकार तालिका से हटा दिया गया था। हालांकि, एल्बम ईट द रिच (एरोस्मिथ गीत) ने इस कलाकार को संदर्भित किया। संदर्भित अखंडता लागू होने के साथ, यह संभव नहीं होता।]]संदर्भित अखंडता डेटा की एक उद्योगगुण है जो बताती है कि इसके सभी संदर्भ मान्य हैं। संबंधपरक डेटाबेस के संदर्भ में, यह आवश्यक है कि यदि किसी [[संबंध (डेटाबेस)]] (तालिका) के उद्योगगुण (स्तंभ) का मान किसी अन्य गुण (या तो समान या भिन्न संबंध में) के मान को संदर्भित करता है, तो संदर्भित मान मौजूद होना चाहिए।<ref>{{cite web |last=Chapple |first=Mike |title=Referential Integrity |publisher=About.com |url=http://databases.about.com/cs/administration/g/refintegrity.htm |access-date = 2011-03-20 |quote='''Definition''': Referential integrity is a database concept that ensures that relationships between tables remain consistent. When one table has a foreign key to another table, the concept of referential integrity states that you may not add a record to the table that contains the foreign key unless there is a corresponding record in the linked table.}}</ref> | ||
संबंधपरक डेटाबेस में रखने के लिए संदर्भित | संबंधपरक डेटाबेस में रखने के लिए संदर्भित अखंडता के लिए, आधार [[तालिका (डेटाबेस)]] में कोई भी स्तंभ जिसे विदेशी कुंजी घोषित किया गया है, में केवल माता-पिता तालिका की प्राथमिक कुंजी या [[उम्मीदवार कुंजी]] से शून्य मान या मान हो सकते हैं।<ref>Coronel et al. (2013). Database Systems 10th ed. Cengage Learning, {{ISBN|978-1-111-96960-8}}</ref> दूसरे शब्दों में, जब उद्योगविदेशी कुंजी मान का उपयोग किया जाता है, तो उसे मूल तालिका में उद्योगमान्य, मौजूदा प्राथमिक कुंजी का संदर्भ देना चाहिए। उदाहरण के लिए, किसी अन्य तालिका में किसी विदेशी कुंजी द्वारा संदर्भित मान वाले रिकॉर्ड को हटाने से संदर्भित अखंडता टूट जाएगी। कुछ [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] (आरडीबीएमएस) संदर्भात्मक अखंडता को लागू कर सकते हैं, सामान्य रूप से या तो विदेशी कुंजी पंक्तियों को हटाने के साथ-साथ अखंडता बनाए रखने के लिए, या उद्योगत्रुटि वापस करके और डिलीट न करके। किस पद्धति का उपयोग किया जाता है, यह उद्योग[[डेटा शब्दकोश]] में परिभाषित संदर्भात्मक अखंडता बाधा द्वारा निर्धारित किया जा सकता है। | ||
विशेषण ' | विशेषण 'निर्देशीय' उस क्रिया का वर्णन करता है जो उद्योगविदेशी कुंजी किसी अन्य तालिका में लिंक किए गए स्तंभ को 'संदर्भित' करती है। सरल शब्दों में, 'संदर्भित अखंडता' गारंटी देता है कि 'संदर्भित' लक्ष्य मिल जाएगा। उद्योगडेटाबेस में संदर्भित अखंडता की कमी, संबंधपरक डेटाबेस को अधूरा डेटा वापस करने के लिए प्रेरित कर सकती है, आमतौर पर त्रुटि का कोई संकेत नहीं होता है। | ||
== औपचारिकता == | == औपचारिकता == | ||
दो (संभवतः समान) पर उद्योगसमावेशन निर्भरता भविष्यवाणी करती है <math>R</math> और <math>S</math> उद्योगस्कीमा से लिखा गया है <math>R[A_1, ..., A_n] \subseteq S[B_1, ..., B_n]</math>, जहां <math>A_i</math>, <math>B_i</math> की विशिष्ट विशेषताएँ (स्तंभ नाम) हैं <math>R</math> और <math>S</math>. इसका अर्थ है कि स्तंभों में दिखाई देने वाले मानों का टपल <math>A_1, ..., A_n</math> के तथ्यों के लिए <math>R</math> | दो (संभवतः समान) पर उद्योगसमावेशन निर्भरता भविष्यवाणी करती है <math>R</math> और <math>S</math> उद्योगस्कीमा से लिखा गया है <math>R[A_1, ..., A_n] \subseteq S[B_1, ..., B_n]</math>, जहां <math>A_i</math>, <math>B_i</math> की विशिष्ट विशेषताएँ (स्तंभ नाम) हैं <math>R</math> और <math>S</math>. इसका अर्थ है कि स्तंभों में दिखाई देने वाले मानों का टपल <math>A_1, ..., A_n</math> के तथ्यों के लिए <math>R</math> स्तंभ में मानों के टपल के रूप में भी दिखाई देना चाहिए <math>B_1, ..., B_n</math> के कुछ तथ्य के लिए <math>S</math>. | ||
इस तरह की बाधा [[टपल पैदा करने वाली निर्भरता]] (TGD) का उद्योगविशेष रूप है, जहां नियम के दोनों पक्षों में केवल उद्योगसंबंधपरक परमाणु होता है।<ref>{{cite web|url=https://www.knaw.nl/shared/resources/actueel/bestanden/kolaitis.pdf#page=5|title=A Tutorial on Database Dependencies|publisher=University of California Santa Cruz & IBM Research - Almaden|last=Kolaitis|first=Phokion G.|date=|access-date=2021-12-10}}</ref> पहले क्रम के तर्क में इसे व्यक्त किया जा सकता है <math>\forall \vec{x},\vec{y} . (R(\vec{x},\vec{y}) \rightarrow \exists \vec{z} . S(\vec{x},\vec{z}))</math>, कहाँ <math>\vec{x}</math> वेक्टर है (जिसका आकार है <math>n</math>) द्वारा साझा किए गए चर <math>R</math> और <math>S</math>, और कोई चर कई बार न तो TGD के शरीर में और न ही उसके सिर में प्रकट होता है। | इस तरह की बाधा [[टपल पैदा करने वाली निर्भरता]] (TGD) का उद्योगविशेष रूप है, जहां नियम के दोनों पक्षों में केवल उद्योगसंबंधपरक परमाणु होता है।<ref>{{cite web|url=https://www.knaw.nl/shared/resources/actueel/bestanden/kolaitis.pdf#page=5|title=A Tutorial on Database Dependencies|publisher=University of California Santa Cruz & IBM Research - Almaden|last=Kolaitis|first=Phokion G.|date=|access-date=2021-12-10}}</ref> पहले क्रम के तर्क में इसे व्यक्त किया जा सकता है <math>\forall \vec{x},\vec{y} . (R(\vec{x},\vec{y}) \rightarrow \exists \vec{z} . S(\vec{x},\vec{z}))</math>, कहाँ <math>\vec{x}</math> वेक्टर है (जिसका आकार है <math>n</math>) द्वारा साझा किए गए चर <math>R</math> और <math>S</math>, और कोई चर कई बार न तो TGD के शरीर में और न ही उसके सिर में प्रकट होता है। | ||
Line 15: | Line 15: | ||
== घोषणात्मक संदर्भात्मक == | == घोषणात्मक संदर्भात्मक == | ||
Declarative Referential Integrity (DRI) डेटा | Declarative Referential Integrity (DRI) डेटा अखंडता सुनिश्चित करने के लिए [[SQL]] डेटाबेस प्रोग्रामिंग भाषा की तकनीकों में से उद्योगहै। | ||
===एसक्यूएल में अर्थ (संरचित क्वेरी भाषा)=== | ===एसक्यूएल में अर्थ (संरचित क्वेरी भाषा)=== | ||
{{main|Foreign key}} | {{main|Foreign key}} | ||
उद्योगतालिका (जिसे संदर्भित तालिका कहा जाता है) उद्योगविदेशी कुंजी का उपयोग करके किसी अन्य तालिका (संदर्भित तालिका) में उद्योगस्तंभ (या स्तंभों का उद्योगसमूह) को संदर्भित कर सकती है। संदर्भित तालिका में संदर्भित | उद्योगतालिका (जिसे संदर्भित तालिका कहा जाता है) उद्योगविदेशी कुंजी का उपयोग करके किसी अन्य तालिका (संदर्भित तालिका) में उद्योगस्तंभ (या स्तंभों का उद्योगसमूह) को संदर्भित कर सकती है। संदर्भित तालिका में संदर्भित स्तंभ उद्योगअद्वितीय बाधा के तहत होना चाहिए, जैसे प्राथमिक कुंजी। साथ ही, स्व-संदर्भ संभव हैं (हालांकि एमएस एसक्यूएल सर्वर में पूरी तरह से लागू नहीं किया गया है<ref>{{cite web |author=Microsoft Support |date=2007-02-11 |title=Error message 1785 occurs when you create a FOREIGN KEY constraint that may cause multiple cascade paths |publisher=microsoft.com |url=http://support.microsoft.com/kb/321843/en-us |access-date=2009-01-24}}</ref>). संदर्भ तालिका में उद्योगनई [[पंक्ति (डेटाबेस)]] डालने (एसक्यूएल) पर, संबंधपरक डेटाबेस प्रबंधन प्रणाली (आरडीबीएमएस) जांचती है कि संदर्भित तालिका में दर्ज कुंजी मान मौजूद है या नहीं। यदि नहीं, तो कोई सम्मिलन संभव नहीं है। [[अद्यतन (एसक्यूएल)]] और [[हटाएं (एसक्यूएल)]] पर डीआरआई क्रियाओं को निर्दिष्ट करना भी संभव है, जैसे कि कैस्केड (संदर्भित तालिका में संदर्भ तालिका में परिवर्तन/हटाएं), कोई कार्रवाई नहीं (यदि विशिष्ट पंक्ति संदर्भित है, तो बदलना) key की अनुमति नहीं है) या SET NULL / SET DEFAULT (संदर्भित तालिका में उद्योगपरिवर्तित/हटाई गई कुंजी के परिणामस्वरूप संदर्भित मानों को NULL या DEFAULT मान पर सेट किया जाता है यदि कोई निर्दिष्ट है)।<ref> | ||
ANSI/ISO/IEC 9075-1:2003, Information technology—Database languages—SQL | ANSI/ISO/IEC 9075-1:2003, Information technology—Database languages—SQL | ||
* Part 1: Framework (SQL/Framework) | * Part 1: Framework (SQL/Framework) |
Revision as of 08:43, 22 February 2023
संदर्भित अखंडता डेटा की एक उद्योगगुण है जो बताती है कि इसके सभी संदर्भ मान्य हैं। संबंधपरक डेटाबेस के संदर्भ में, यह आवश्यक है कि यदि किसी संबंध (डेटाबेस) (तालिका) के उद्योगगुण (स्तंभ) का मान किसी अन्य गुण (या तो समान या भिन्न संबंध में) के मान को संदर्भित करता है, तो संदर्भित मान मौजूद होना चाहिए।[1]
संबंधपरक डेटाबेस में रखने के लिए संदर्भित अखंडता के लिए, आधार तालिका (डेटाबेस) में कोई भी स्तंभ जिसे विदेशी कुंजी घोषित किया गया है, में केवल माता-पिता तालिका की प्राथमिक कुंजी या उम्मीदवार कुंजी से शून्य मान या मान हो सकते हैं।[2] दूसरे शब्दों में, जब उद्योगविदेशी कुंजी मान का उपयोग किया जाता है, तो उसे मूल तालिका में उद्योगमान्य, मौजूदा प्राथमिक कुंजी का संदर्भ देना चाहिए। उदाहरण के लिए, किसी अन्य तालिका में किसी विदेशी कुंजी द्वारा संदर्भित मान वाले रिकॉर्ड को हटाने से संदर्भित अखंडता टूट जाएगी। कुछ संबंधपरक डेटाबेस प्रबंधन प्रणाली (आरडीबीएमएस) संदर्भात्मक अखंडता को लागू कर सकते हैं, सामान्य रूप से या तो विदेशी कुंजी पंक्तियों को हटाने के साथ-साथ अखंडता बनाए रखने के लिए, या उद्योगत्रुटि वापस करके और डिलीट न करके। किस पद्धति का उपयोग किया जाता है, यह उद्योगडेटा शब्दकोश में परिभाषित संदर्भात्मक अखंडता बाधा द्वारा निर्धारित किया जा सकता है।
विशेषण 'निर्देशीय' उस क्रिया का वर्णन करता है जो उद्योगविदेशी कुंजी किसी अन्य तालिका में लिंक किए गए स्तंभ को 'संदर्भित' करती है। सरल शब्दों में, 'संदर्भित अखंडता' गारंटी देता है कि 'संदर्भित' लक्ष्य मिल जाएगा। उद्योगडेटाबेस में संदर्भित अखंडता की कमी, संबंधपरक डेटाबेस को अधूरा डेटा वापस करने के लिए प्रेरित कर सकती है, आमतौर पर त्रुटि का कोई संकेत नहीं होता है।
औपचारिकता
दो (संभवतः समान) पर उद्योगसमावेशन निर्भरता भविष्यवाणी करती है और उद्योगस्कीमा से लिखा गया है , जहां , की विशिष्ट विशेषताएँ (स्तंभ नाम) हैं और . इसका अर्थ है कि स्तंभों में दिखाई देने वाले मानों का टपल के तथ्यों के लिए स्तंभ में मानों के टपल के रूप में भी दिखाई देना चाहिए के कुछ तथ्य के लिए .
इस तरह की बाधा टपल पैदा करने वाली निर्भरता (TGD) का उद्योगविशेष रूप है, जहां नियम के दोनों पक्षों में केवल उद्योगसंबंधपरक परमाणु होता है।[3] पहले क्रम के तर्क में इसे व्यक्त किया जा सकता है , कहाँ वेक्टर है (जिसका आकार है ) द्वारा साझा किए गए चर और , और कोई चर कई बार न तो TGD के शरीर में और न ही उसके सिर में प्रकट होता है।
समावेशन निर्भरता के बीच तार्किक निहितार्थ को अनुमान नियमों द्वारा स्वयंसिद्ध किया जा सकता है[4]: 193 और PSPACE एल्गोरिथम द्वारा निर्णायक भाषा हो सकती है। रैखिक परिबद्ध automaton के लिए स्वीकृति समस्या से कमी करके समस्या को PSPACE-पूर्ण दिखाया जा सकता है।[4]: 196 हालांकि, निर्भरता के बीच तार्किक निहितार्थ जो समावेशन निर्भरता या कार्यात्मक निर्भरता हो सकता है, मोनोइड्स के लिए शब्द समस्या (कम्प्यूटेबिलिटी) से कमी से अनिर्णीत है।[4]: 199
घोषणात्मक संदर्भात्मक
Declarative Referential Integrity (DRI) डेटा अखंडता सुनिश्चित करने के लिए SQL डेटाबेस प्रोग्रामिंग भाषा की तकनीकों में से उद्योगहै।
एसक्यूएल में अर्थ (संरचित क्वेरी भाषा)
उद्योगतालिका (जिसे संदर्भित तालिका कहा जाता है) उद्योगविदेशी कुंजी का उपयोग करके किसी अन्य तालिका (संदर्भित तालिका) में उद्योगस्तंभ (या स्तंभों का उद्योगसमूह) को संदर्भित कर सकती है। संदर्भित तालिका में संदर्भित स्तंभ उद्योगअद्वितीय बाधा के तहत होना चाहिए, जैसे प्राथमिक कुंजी। साथ ही, स्व-संदर्भ संभव हैं (हालांकि एमएस एसक्यूएल सर्वर में पूरी तरह से लागू नहीं किया गया है[5]). संदर्भ तालिका में उद्योगनई पंक्ति (डेटाबेस) डालने (एसक्यूएल) पर, संबंधपरक डेटाबेस प्रबंधन प्रणाली (आरडीबीएमएस) जांचती है कि संदर्भित तालिका में दर्ज कुंजी मान मौजूद है या नहीं। यदि नहीं, तो कोई सम्मिलन संभव नहीं है। अद्यतन (एसक्यूएल) और हटाएं (एसक्यूएल) पर डीआरआई क्रियाओं को निर्दिष्ट करना भी संभव है, जैसे कि कैस्केड (संदर्भित तालिका में संदर्भ तालिका में परिवर्तन/हटाएं), कोई कार्रवाई नहीं (यदि विशिष्ट पंक्ति संदर्भित है, तो बदलना) key की अनुमति नहीं है) या SET NULL / SET DEFAULT (संदर्भित तालिका में उद्योगपरिवर्तित/हटाई गई कुंजी के परिणामस्वरूप संदर्भित मानों को NULL या DEFAULT मान पर सेट किया जाता है यदि कोई निर्दिष्ट है)।[6]
उत्पाद विशिष्ट अर्थ
माइक्रोसॉफ्ट एसक्यूएल सर्वर में डीआरआई शब्द डेटाबेस ऑब्जेक्ट पर उपयोगकर्ताओं को अनुमति देने के लिए भी लागू होता है। उद्योगडेटाबेस उपयोगकर्ता को DRI की अनुमति देना उन्हें उद्योगटेबल पर विदेशी कुंजी बाधाओं को जोड़ने की अनुमति देता है।[7]
यह भी देखें
- Null_pointer#Null_dereferencing
- झूलने वाला सूचक
- डोमेन/कुंजी सामान्य रूप
- इकाई
- कार्यात्मक निर्भरता
- प्रसार बाधा
- सरोगेट कुंजी
- धीरे-धीरे आयाम बदल रहा है
संदर्भ
- ↑ Chapple, Mike. "Referential Integrity". About.com. Retrieved 2011-03-20.
Definition: Referential integrity is a database concept that ensures that relationships between tables remain consistent. When one table has a foreign key to another table, the concept of referential integrity states that you may not add a record to the table that contains the foreign key unless there is a corresponding record in the linked table.
- ↑ Coronel et al. (2013). Database Systems 10th ed. Cengage Learning, ISBN 978-1-111-96960-8
- ↑ Kolaitis, Phokion G. "A Tutorial on Database Dependencies" (PDF). University of California Santa Cruz & IBM Research - Almaden. Retrieved 2021-12-10.
- ↑ 4.0 4.1 4.2 Abiteboul, Serge; Hull, Richard B.; Vianu, Victor (1994). "9. Inclusion Dependency". Foundations of Databases. Addison-Wesley. pp. 192–199.
- ↑ Microsoft Support (2007-02-11). "Error message 1785 occurs when you create a FOREIGN KEY constraint that may cause multiple cascade paths". microsoft.com. Retrieved 2009-01-24.
- ↑
ANSI/ISO/IEC 9075-1:2003, Information technology—Database languages—SQL
- Part 1: Framework (SQL/Framework)
- Part 2: Foundation (SQL/Foundation)
- ↑ Chigrik, Alexander (2003-08-13). "Managing Users Permissions on SQL Server". Database Journal. Retrieved 2006-12-17.