संबंधपरक बीजगणित: Difference between revisions

From Vigyanwiki
Line 1: Line 1:
{{Short description|Theory of relational databases}}
{{Short description|Theory of relational databases}}
{{Distinguish|संबंध बीजगणित}}
{{Distinguish|संबंध बीजगणित}}
[[डेटाबेस सिद्धांत]] में, संबंधपरक बीजगणित एक सिद्धांत है जो मॉडलिंग डेटा के लिए  [[बीजगणितीय संरचना|बीजगणितीय संरचनाओं]] का उपयोग करता है, और एक [[अच्छी तरह से स्थापित शब्दार्थ]] के साथ प्रश्नों को परिभाषित करता है। सिद्धांत [[एडगर एफ कॉड]] द्वारा पेश किया गया था।
[[डेटाबेस सिद्धांत]] में, संबंधपरक बीजगणित एक सिद्धांत है जो प्रारूपिंग डेटा के लिए  [[बीजगणितीय संरचना|बीजगणितीय संरचनाओं]] का उपयोग करता है, और एक [[अच्छी तरह से स्थापित शब्दार्थ]] के साथ प्रश्नों को परिभाषित करता है। सिद्धांत [[एडगर एफ कॉड]] द्वारा पेश किया गया था।


संबंधपरक बीजगणित का मुख्य अनुप्रयोग[[ संबंध का डेटाबेस | संबंधपरक डेटाबेस]] के लिए एक सैद्धांतिक आधार प्रदान करना है, विशेष रूप से [[ पूछताछ भाषा |पृच्छा भाषा]] जैसे डेटाबेस के लिए, जिनमें से प्रमुख [[SQL|एसक्यूएल]] है। संबंधपरक डेटाबेस सारणीबद्ध डेटा को [[संबंध (डेटाबेस)|संबंधों]] के रूप में प्रदर्शित करते हैं। [[संबंधपरक]] डेटाबेस पर प्रश्न प्रायः इसी तरह संबंधों के रूप में दर्शाए गए सारणीबद्ध डेटा लौटाते हैं।
संबंधपरक बीजगणित का मुख्य अनुप्रयोग[[ संबंध का डेटाबेस | संबंधपरक डेटाबेस]] के लिए एक सैद्धांतिक आधार प्रदान करना है, विशेष रूप से [[ पूछताछ भाषा |पृच्छा भाषा]] जैसे डेटाबेस के लिए, जिनमें से प्रमुख [[SQL|एसक्यूएल]] है। संबंधपरक डेटाबेस सारणीबद्ध डेटा को [[संबंध (डेटाबेस)|संबंधों]] के रूप में प्रदर्शित करते हैं। [[संबंधपरक]] डेटाबेस पर प्रश्न प्रायः इसी तरह संबंधों के रूप में दर्शाए गए सारणीबद्ध डेटा लौटाते हैं।
Line 34: Line 34:
एक प्रक्षेपण एक [[ एकात्मक ऑपरेशन ]] है जिसे लिखा जाता है <math>\Pi_{a_1, \ldots,a_n}( R )</math> कहाँ <math>a_1,\ldots,a_n</math> विशेषता नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को समुच्चय (गणित) के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी टुपल्स समुच्चय तक सीमित होते हैं <math>\{a_1,\ldots,a_n\}</math>.
एक प्रक्षेपण एक [[ एकात्मक ऑपरेशन ]] है जिसे लिखा जाता है <math>\Pi_{a_1, \ldots,a_n}( R )</math> कहाँ <math>a_1,\ldots,a_n</math> विशेषता नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को समुच्चय (गणित) के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी टुपल्स समुच्चय तक सीमित होते हैं <math>\{a_1,\ldots,a_n\}</math>.


नोट: जब SQL मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रोजेक्शन एक समुच्चय के बजाय एक [[ multiset ]] लौटाता है, और {{math|&Pi;}} डुप्लीकेट डेटा को खत्म करने के लिए प्रोजेक्शन सेलेक्ट (एसक्यूएल) के जोड़ से प्राप्त किया जाता है<code>DISTINCT</code> कीवर्ड।
नोट: जब एसक्यूएल मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रोजेक्शन एक समुच्चय के बजाय एक [[ multiset ]] लौटाता है, और {{math|&Pi;}} डुप्लीकेट डेटा को खत्म करने के लिए प्रोजेक्शन सेलेक्ट (एसक्यूएल) के जोड़ से प्राप्त किया जाता है<code>DISTINCT</code> कीवर्ड।


=== चयन (एस) ===
=== चयन (एस) ===
Line 130: Line 130:


=== θ-जॉइन और इक्वीजॉइन ===
=== θ-जॉइन और इक्वीजॉइन ===
टेबल कार और नाव पर विचार करें जो कारों और नावों के मॉडल और उनकी संबंधित कीमतों को सूचीबद्ध करती हैं। मान लीजिए एक ग्राहक एक कार और एक नाव खरीदना चाहता है, लेकिन वह कार की तुलना में नाव के लिए अधिक पैसा खर्च नहीं करना चाहता। θ-जॉइन (⋈<sub>''θ''</sub>) CarPrice विधेय पर ≥ BoatPrice पंक्तियों के चपटे जोड़े का उत्पादन करता है जो विधेय को संतुष्ट करता है। ऐसी स्थिति का उपयोग करते समय जहां विशेषताएँ समान हों, उदाहरण के लिए मूल्य, तब स्थिति को मूल्य = मूल्य के रूप में निर्दिष्ट किया जा सकता है
टेबल कार और नाव पर विचार करें जो कारों और नावों के प्रारूप और उनकी संबंधित कीमतों को सूचीबद्ध करती हैं। मान लीजिए एक ग्राहक एक कार और एक नाव खरीदना चाहता है, लेकिन वह कार की तुलना में नाव के लिए अधिक पैसा खर्च नहीं करना चाहता। θ-जॉइन (⋈<sub>''θ''</sub>) CarPrice विधेय पर ≥ BoatPrice पंक्तियों के चपटे जोड़े का उत्पादन करता है जो विधेय को संतुष्ट करता है। ऐसी स्थिति का उपयोग करते समय जहां विशेषताएँ समान हों, उदाहरण के लिए मूल्य, तब स्थिति को मूल्य = मूल्य के रूप में निर्दिष्ट किया जा सकता है
या वैकल्पिक रूप से (मूल्य) ही।
या वैकल्पिक रूप से (मूल्य) ही।


Line 183: Line 183:
ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कार्तीय गुणन को पतित करता है जब कोई साझा नहीं होता है) गुण)।
ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कार्तीय गुणन को पतित करता है जब कोई साझा नहीं होता है) गुण)।


SQL कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और on कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है: चपटा कार्तीय गुणन बनाना और फिर पंक्तियों को फ़िल्टर करना अवधारणात्मक रूप से सही है, लेकिन एक कार्यान्वयन ज्वाइन क्वेरी को गति देने के लिए अधिक परिष्कृत डेटा संरचनाओं का उपयोग करेगा।
एसक्यूएल कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और on कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है: चपटा कार्तीय गुणन बनाना और फिर पंक्तियों को फ़िल्टर करना अवधारणात्मक रूप से सही है, लेकिन एक कार्यान्वयन ज्वाइन क्वेरी को गति देने के लिए अधिक परिष्कृत डेटा संरचनाओं का उपयोग करेगा।


=== सेमिजॉइन (⋉ और ⋊) ===
=== सेमिजॉइन (⋉ और ⋊) ===
Line 301: Line 301:


=== डिवीजन (÷) ===
=== डिवीजन (÷) ===
डिवीजन एक बाइनरी ऑपरेशन है जिसे R ÷ S के रूप में लिखा जाता है। डिवीजन सीधे SQL में लागू नहीं होता है। परिणाम में आर में ट्यूपल्स के प्रतिबंध आर के लिए अद्वितीय विशेषता नाम हैं, यानी, आर के शीर्षलेख में, लेकिन एस के शीर्षलेख में नहीं, जिसके लिए यह माना जाता है कि एस में ट्यूपल्स के साथ उनके सभी संयोजन आर में मौजूद हैं। एक उदाहरण के लिए पूर्ण तालिकाएँ, DBProject और उनका विभाजन देखें:
डिवीजन एक बाइनरी ऑपरेशन है जिसे R ÷ S के रूप में लिखा जाता है। डिवीजन सीधे एसक्यूएल में लागू नहीं होता है। परिणाम में आर में ट्यूपल्स के प्रतिबंध आर के लिए अद्वितीय विशेषता नाम हैं, यानी, आर के शीर्षलेख में, लेकिन एस के शीर्षलेख में नहीं, जिसके लिए यह माना जाता है कि एस में ट्यूपल्स के साथ उनके सभी संयोजन आर में मौजूद हैं। एक उदाहरण के लिए पूर्ण तालिकाएँ, DBProject और उनका विभाजन देखें:


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
Line 496: Line 496:
{{See also|Join (SQL)#Outer join}}
{{See also|Join (SQL)#Outer join}}
जबकि एक जॉइन (या इनर जॉइन) के परिणाम में दो ऑपरेंड में मैचिंग ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जॉइन में वे ट्यूपल्स होते हैं और इसके अलावा कुछ ट्यूपल्स एक ऑपरेंड में एक बेजोड़ ट्यूपल को बढ़ाकर प्रत्येक के लिए मान भरते हैं। दूसरे ऑपरेंड की विशेषताओं का। अब तक चर्चा किए गए शास्त्रीय संबंधपरक बीजगणित का हिस्सा बाहरी जुड़ाव नहीं माना जाता है।<ref name="O'NeilO'Neil2001">{{cite book|author1=Patrick O'Neil|author2=Elizabeth O'Neil|author2-link=Elizabeth O'Neil|title=Database: Principles, Programming, and Performance, Second Edition|url=https://books.google.com/books?id=UXh4qTpmO8QC&pg=PA120|year=2001|publisher=Morgan Kaufmann|isbn=978-1-55860-438-4|page=120}}</ref>
जबकि एक जॉइन (या इनर जॉइन) के परिणाम में दो ऑपरेंड में मैचिंग ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जॉइन में वे ट्यूपल्स होते हैं और इसके अलावा कुछ ट्यूपल्स एक ऑपरेंड में एक बेजोड़ ट्यूपल को बढ़ाकर प्रत्येक के लिए मान भरते हैं। दूसरे ऑपरेंड की विशेषताओं का। अब तक चर्चा किए गए शास्त्रीय संबंधपरक बीजगणित का हिस्सा बाहरी जुड़ाव नहीं माना जाता है।<ref name="O'NeilO'Neil2001">{{cite book|author1=Patrick O'Neil|author2=Elizabeth O'Neil|author2-link=Elizabeth O'Neil|title=Database: Principles, Programming, and Performance, Second Edition|url=https://books.google.com/books?id=UXh4qTpmO8QC&pg=PA120|year=2001|publisher=Morgan Kaufmann|isbn=978-1-55860-438-4|page=120}}</ref>
इस खंड में परिभाषित प्रचालक एक शून्य मान के अस्तित्व को मानते हैं, ω, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है; व्यवहार में यह SQL में [[Null (SQL)]] से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए असाइन करने की आवश्यकता है; कोडड के दृष्टिकोण में चयन द्वारा उपयोग किए जाने वाले प्रस्तावपरक तर्क Null (SQL)#Comparisons with NULL और तीन-मूल्यवान तर्क .283VL.29|तीन-मूल्यवान तर्क तक विस्तारित है, हालांकि हम इस लेख में उन विवरणों को अलग करते हैं।
इस खंड में परिभाषित प्रचालक एक शून्य मान के अस्तित्व को मानते हैं, ω, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है; व्यवहार में यह एसक्यूएल में [[Null (SQL)]] से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए असाइन करने की आवश्यकता है; कोडड के दृष्टिकोण में चयन द्वारा उपयोग किए जाने वाले प्रस्तावपरक तर्क Null (SQL)#Comparisons with NULL और तीन-मूल्यवान तर्क .283VL.29|तीन-मूल्यवान तर्क तक विस्तारित है, हालांकि हम इस लेख में उन विवरणों को अलग करते हैं।


तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है: बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। (बाहरी शब्द कभी-कभी छोड़ दिया जाता है।)
तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है: बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। (बाहरी शब्द कभी-कभी छोड़ दिया जाता है।)
Line 691: Line 691:
जहां प्रत्येक ए<sub>''j''</sub>', 1 ≤ j ≤ k, A के मूल गुणों में से एक है<sub>''i''</sub>, 1 ≤ मैं ≤ एन।
जहां प्रत्येक ए<sub>''j''</sub>', 1 ≤ j ≤ k, A के मूल गुणों में से एक है<sub>''i''</sub>, 1 ≤ मैं ≤ एन।


जी से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो SQL में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए एकत्रीकरण कार्यों की मनमानी संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो एकत्रीकरण कार्य पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है।
जी से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए एकत्रीकरण कार्यों की मनमानी संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो एकत्रीकरण कार्य पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है।


मान लेते हैं कि हमारे पास नाम की एक तालिका है {{mono|Account}} तीन स्तंभों के साथ, अर्थात् {{mono|Account_Number, Branch_Name}} और {{mono|Balance}}. हम प्रत्येक शाखा की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह द्वारा पूरा किया जाता है <sub>{{mono|Branch_Name}}</sub>G<sub>Max({{mono|Balance}})</sub>({{mono|Account}}). शाखा की परवाह किए बिना सभी खातों की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल जी लिख सकते हैं<sub>Max({{mono|Balance}})</sub>({{mono|Account}}).
मान लेते हैं कि हमारे पास नाम की एक तालिका है {{mono|Account}} तीन स्तंभों के साथ, अर्थात् {{mono|Account_Number, Branch_Name}} और {{mono|Balance}}. हम प्रत्येक शाखा की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह द्वारा पूरा किया जाता है <sub>{{mono|Branch_Name}}</sub>G<sub>Max({{mono|Balance}})</sub>({{mono|Account}}). शाखा की परवाह किए बिना सभी खातों की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल जी लिख सकते हैं<sub>Max({{mono|Balance}})</sub>({{mono|Account}}).
Line 703: Line 703:
:<math>\forall x \forall y \forall z \left( (x,y) \in R^+ \wedge (y,z) \in R^+ \Rightarrow (x,z) \in R^+ \right)</math>
:<math>\forall x \forall y \forall z \left( (x,y) \in R^+ \wedge (y,z) \in R^+ \Rightarrow (x,z) \in R^+ \right)</math>
यह इस तथ्य का उपयोग करके सिद्ध किया जा सकता है कि कोई संबंधपरक बीजगणित अभिव्यक्ति E(R) नहीं है जो R को एक चर तर्क के रूप में लेता है जो R उत्पन्न करता है<sup>+</sup>.<ref>{{cite journal|title=डेटा पुनर्प्राप्ति भाषाओं की सार्वभौमिकता|journal=Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages|year=1979|first=Alfred V.|last=Aho|author2=Jeffrey D. Ullman |pages=110–119|doi=10.1145/567752.567763|s2cid=3242505 }}</ref>
यह इस तथ्य का उपयोग करके सिद्ध किया जा सकता है कि कोई संबंधपरक बीजगणित अभिव्यक्ति E(R) नहीं है जो R को एक चर तर्क के रूप में लेता है जो R उत्पन्न करता है<sup>+</sup>.<ref>{{cite journal|title=डेटा पुनर्प्राप्ति भाषाओं की सार्वभौमिकता|journal=Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages|year=1979|first=Alfred V.|last=Aho|author2=Jeffrey D. Ullman |pages=110–119|doi=10.1145/567752.567763|s2cid=3242505 }}</ref>
SQL हालांकि आधिकारिक तौर पर 1999 से SQL में इस तरह के पदानुक्रमित और पुनरावर्ती प्रश्नों का समर्थन करता है, और इससे पहले इस दिशा में विक्रेता-विशिष्ट एक्सटेंशन थे।
एसक्यूएल हालांकि आधिकारिक तौर पर 1999 से एसक्यूएल में इस तरह के पदानुक्रमित और पुनरावर्ती प्रश्नों का समर्थन करता है, और इससे पहले इस दिशा में विक्रेता-विशिष्ट एक्सटेंशन थे।


== क्वेरी अनुकूलन के लिए बीजगणितीय गुणों का उपयोग ==
== क्वेरी अनुकूलन के लिए बीजगणितीय गुणों का उपयोग ==
Line 812: Line 812:
कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, [[आईएसबीएल]] बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा सराहा गया है<ref>{{cite web |title = एडगर एफ कॉड - ए.एम. ट्यूरिंग पुरस्कार विजेता|url = https://amturing.acm.org/award_winners/codd_1000892.cfm |author = C. J. Date |website = amturing.acm.org |access-date = 2020-12-27 }}</ref> कोडड के विचार को एक उपयोगी भाषा में बदलने का तरीका दिखाया। [[बिजनेस सिस्टम 12|बिजनेस प्रणाली 12]] एक अल्पकालिक उद्योग-शक्ति संबंधपरक डीबीएमएस था जो आईएसबीएल उदाहरण का पालन करता था।
कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, [[आईएसबीएल]] बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा सराहा गया है<ref>{{cite web |title = एडगर एफ कॉड - ए.एम. ट्यूरिंग पुरस्कार विजेता|url = https://amturing.acm.org/award_winners/codd_1000892.cfm |author = C. J. Date |website = amturing.acm.org |access-date = 2020-12-27 }}</ref> कोडड के विचार को एक उपयोगी भाषा में बदलने का तरीका दिखाया। [[बिजनेस सिस्टम 12|बिजनेस प्रणाली 12]] एक अल्पकालिक उद्योग-शक्ति संबंधपरक डीबीएमएस था जो आईएसबीएल उदाहरण का पालन करता था।


1998 में क्रिस्टोफर जे. डेट और [[ह्यूग डार्वेन]] ने संबंधपरक डेटाबेस थ्योरी सिखाने में उपयोग के लिए ट्यूटोरियल डी नामक एक भाषा प्रस्तावित की, और इसकी क्वेरी भाषा भी आईएसबीएल के विचारों पर आधारित है। [[Rel (DBMS)]] ट्यूटोरियल डी का कार्यान्वयन है।
1998 में [[क्रिस्टोफर जे. डेट]] और [[ह्यूग डार्वेन]] ने संबंधपरक डेटाबेस थ्योरी सिखाने में उपयोग के लिए ट्यूटोरियल डी नामक एक भाषा प्रस्तावित की, और इसकी क्वेरी भाषा भी आईएसबीएल के विचारों पर आधारित है। [[Rel (DBMS)|रेल]] ट्यूटोरियल डी का कार्यान्वयन है।


यहां तक ​​​​कि SQL की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि SQL ([[तालिका (डेटाबेस)]]) में संचालन वास्तव में संबंध (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय SQL समकक्ष में नहीं हैं ( यकीनन ऑप्टिमाइज़र और/या उपयोगकर्ताओं की हानि के लिए)। SQL टेबल मॉडल एक समुच्चय के बजाय एक बैग (मल्टीसमुच्चय) है। उदाहरण के लिए, अभिव्यक्ति <math>(R \cup S) \setminus T = (R \setminus T) \cup (S \setminus T)</math> समुच्चय पर संबंधपरक बीजगणित के लिए एक प्रमेय है, लेकिन बैग पर संबंधपरक बीजगणित के लिए नहीं; थैलों पर संबंधपरक बीजगणित के उपचार के लिए [[ गार्सिया मोलिना ]], [[जेफरी उल्मैन]] और [[जेनिफर विडोम]] द्वारा कम्प्लीट टेक्स्टबुक का अध्याय 5 देखें।<ref name="Garcia-MolinaUllman2009">{{cite book |author1 = Hector Garcia-Molina |author2 = Jeffrey D. Ullman |author3 = Jennifer Widom |title = Database systems: the complete book |year = 2009 |publisher = Pearson Prentice Hall |isbn = 978-0-13-187325-4 |edition = 2nd }}</ref>
यहां तक ​​​​कि [[एसक्यूएल]] की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि एसक्यूएल ([[तालिका (डेटाबेस)]]) में संचालन वास्तव में [[संबंध]] (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय एसक्यूएल समकक्ष में नहीं हैं ( तर्कसंगत अनुकूलक और/या उपयोगकर्ताओं की हानि के लिए)। एसक्यूएल तालिका प्रारूप एक समुच्चय के बजाय एक बैग ( बहुसमुच्चय) है। उदाहरण के लिए, अभिव्यक्ति <math>(R \cup S) \setminus T = (R \setminus T) \cup (S \setminus T)</math> समुच्चय पर संबंधपरक बीजगणित के लिए एक प्रमेय है, लेकिन बैग पर संबंधपरक बीजगणित के लिए नहीं, बैगो पर संबंधपरक बीजगणित के उपचार के लिए [[ गार्सिया मोलिना ]], [[जेफरी उल्मैन]] और [[जेनिफर विडोम]] द्वारा कम्प्लीट टेक्स्टबुक का अध्याय 5 देखें।<ref name="Garcia-MolinaUllman2009">{{cite book |author1 = Hector Garcia-Molina |author2 = Jeffrey D. Ullman |author3 = Jennifer Widom |title = Database systems: the complete book |year = 2009 |publisher = Pearson Prentice Hall |isbn = 978-0-13-187325-4 |edition = 2nd }}</ref>
== यह भी देखें ==
== यह भी देखें ==
{{div col|colwidth=25em}}
{{div col|colwidth=25em}}
Line 858: Line 858:
* [http://www.slinfo.una.ac.cr/rat/rat.html RAT. Software Relational Algebra Translator to SQL]
* [http://www.slinfo.una.ac.cr/rat/rat.html RAT. Software Relational Algebra Translator to SQL]
* [http://www.databaselecture.com/processing.html Lecture Videos: Relational Algebra Processing] - An introduction to how database systems process relational algebra
* [http://www.databaselecture.com/processing.html Lecture Videos: Relational Algebra Processing] - An introduction to how database systems process relational algebra
* [http://www.databasteknik.se/webbkursen/relalg-lecture/index.html Lecture Notes: Relational Algebra] – A quick tutorial to adapt SQL queries into relational algebra
* [http://www.databasteknik.se/webbkursen/relalg-lecture/index.html Lecture Notes: Relational Algebra] – A quick tutorial to adapt एसक्यूएल queries into relational algebra
* [https://ltworf.github.io/relational/index.html Relational – A graphic implementation of the relational algebra]
* [https://ltworf.github.io/relational/index.html Relational – A graphic implementation of the relational algebra]
* [http://www-db.stanford.edu/~widom/cs346/ioannidis.pdf <s>Query Optimization</s>] (Page deleted; Closest alternatives: [https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf Standford Query Optimization 2], [https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf Microsoft research Query Optimization in relational systems], [http://infolab.stanford.edu/lore/pubs/qo.pdf Stanford paper: Query Optimization])This paper is an introduction into the use of the relational algebra in optimizing queries, and includes numerous citations for more in-depth study.
* [http://www-db.stanford.edu/~widom/cs346/ioannidis.pdf <s>Query Optimization</s>] (Page deleted; Closest alternatives: [https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf Standford Query Optimization 2], [https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf Microsoft research Query Optimization in relational systems], [http://infolab.stanford.edu/lore/pubs/qo.pdf Stanford paper: Query Optimization])This paper is an introduction into the use of the relational algebra in optimizing queries, and includes numerous citations for more in-depth study.
* [http://www.cse.fau.edu/~marty#RADownload Relational Algebra System for Oracle and Microsoft SQL Server]
* [http://www.cse.fau.edu/~marty#RADownload Relational Algebra System for Oracle and Microsoft एसक्यूएल Server]
* [https://centaurialpha.github.io/pireal/index.html Pireal – An experimental educational tool for working with Relational Algebra]
* [https://centaurialpha.github.io/pireal/index.html Pireal – An experimental educational tool for working with Relational Algebra]
* [http://des.sourceforge.net DES – An educational tool for working with Relational Algebra and other formal languages]
* [http://des.sourceforge.net DES – An educational tool for working with Relational Algebra and other formal languages]
* [https://dbis-uibk.github.io/relax/ RelaX - Relational Algebra Calculator] (open-source software available as an online service without registration)
* [https://dbis-uibk.github.io/relax/ RelaX - Relational Algebra Calculator] (open-source software available as an online service without registration)
* [https://users.cs.duke.edu/~junyang/ra2/ RA: A Relational Algebra Interpreter]
* [https://users.cs.duke.edu/~junyang/ra2/ RA: A Relational Algebra Interpreter]
* [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating SQL to Relational Algebra]
* [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating एसक्यूएल to Relational Algebra]
{{Databases}}
{{Databases}}
[[Category: संबंधपरक बीजगणित | संबंधपरक बीजगणित ]] [[Category: संबंधपरक मॉडल]]  
[[Category: संबंधपरक बीजगणित | संबंधपरक बीजगणित ]] [[Category: संबंधपरक मॉडल]]  

Revision as of 08:52, 20 March 2023

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

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

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

एक अंगीय प्रचालक निविष्ट के रूप में एकल संबंध स्वीकार करते हैं, उदाहरणों में एक निविष्ट संबंध से कुछ विशेषताओं (स्तंभों) या टुपल्स (पंक्तियों) को निस्यंदक करने के लिए प्रचालक सम्मिलित हैं।

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

अन्य अधिक उन्नत प्रचालकों को भी सम्मिलित किया जा सकता है, जहां कुछ प्रचालकों का समावेश या बहिष्करण बीजगणित के एक परिवार को जन्म देता है।

प्रस्तावना

1970 में एडगर एफ. कोडड के डेटा के संबंधपरक प्रारूप के प्रकाशन तक संबंधपरक बीजगणित को शुद्ध गणित के बाहर बहुत कम ध्यान दिया गया था। कोडड ने इस तरह के बीजगणित को डेटाबेस पृच्छा भाषाओं के आधार के रूप में प्रस्तावित किया। (अनुभाग कार्यान्वयन देखें।)

कॉड के बीजगणित के पांच प्राचीन संचालक चयन (संबंधपरक बीजगणित), प्रक्षेपण (संबंधपरक बीजगणित), कार्तीय गुणन (जिसे अन्योन्य गुणन या अन्योन्य संबंध भी कहा जाता है), समुच्चय सिद्धांत और समुच्चय अंतर हैं।

समुच्चय प्रचालक

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

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

कार्तीय गुणनफल को परिभाषित करने के लिए, सम्मिलित दो संबंधों में असंयुक्त शीर्षलेख होने चाहिए—अर्थात्, उनके पास एक सामान्य विशेषता नाम नहीं होना चाहिए।

इसके अलावा, कार्तीय गुणन को समुच्चय (गणित) सिद्धांत में एक से अलग तरीके से परिभाषित किया गया है, इस अर्थ में कि प्रचालक के प्रयोजनों के लिए टुपल्स को "उथला" माना जाता है। अर्थात्, एम-टुपल्स के समुच्चय के साथ एन-टुपल्स के समुच्चय का कार्तीय गुणन "चपटा" का एक समुच्चय उत्पन्न करता है (n + m)-टुपल्स (जबकि बुनियादी समुच्चय सिद्धांत ने 2-टुपल्स का एक समुच्चय निर्धारित किया होगा, प्रत्येक में एक एन-टुपल और एक एम-टुपल होगा)। अधिक औपचारिक रूप से, R × S को इस प्रकार परिभाषित किया गया है:

कार्तीय उत्पाद की प्रमुखता इसके कारकों की प्रमुखताओं का गुणनफल है, अर्थात |R × S| = |आर| × |एस|.

प्रोजेक्शन (Π)

एक प्रक्षेपण एक एकात्मक ऑपरेशन है जिसे लिखा जाता है कहाँ विशेषता नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को समुच्चय (गणित) के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी टुपल्स समुच्चय तक सीमित होते हैं .

नोट: जब एसक्यूएल मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रोजेक्शन एक समुच्चय के बजाय एक multiset लौटाता है, और Π डुप्लीकेट डेटा को खत्म करने के लिए प्रोजेक्शन सेलेक्ट (एसक्यूएल) के जोड़ से प्राप्त किया जाता हैDISTINCT कीवर्ड।

चयन (एस)

एक सामान्यीकृत चयन एक यूनरी ऑपरेशन है जिसे लिखा जाता है कहाँ φ एक प्रस्तावनात्मक सूत्र है जिसमें चयन (संबंधपरक बीजगणित) और तार्किक संचालकों में अनुमत परमाणु सूत्र सम्मिलित हैं (तार्किक संयोजन), (तार्किक संयोजन) और (निषेध)। यह चयन R में उन सभी tuples का चयन करता है जिनके लिए φ रखता है।

पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को इस रूप में लिखा जा सकता है . परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी isFriend सच है या कहाँ isBusinessContact क्या सच है।

नाम बदलें (ρ)

एक नाम बदलना एक यूनरी ऑपरेशन है जिसे लिखा जाता है जहां परिणाम R के समान है सिवाय इसके कि सभी tuples में b विशेषता का नाम बदलकर a विशेषता कर दिया जाता है। इसका उपयोग केवल संबंध (डेटाबेस) या स्वयं संबंध की विशेषता का नाम बदलने के लिए किया जाता है।

किसी संबंध में isFriend विशेषता का नाम बदलकर isBusinessसंपर्क करने के लिए, इस्तेमाल किया जा सकता है।

वहाँ भी है अंकन, जहाँ R का नाम बदलकर x और विशेषताएँ कर दिया गया है का पुनर्नामकरण किया जाता है .[1]


जॉइन और जॉइन-लाइक प्रचालक्स

प्राकृतिक जुड़ाव (⋈)

प्राकृतिक जुड़ाव (⋈) एक द्विआधारी संबंध है जिसे (R ⋈ S) के रूप में लिखा जाता है जहां R और S संबंध (डेटाबेस) हैं।[lower-alpha 1] प्राकृतिक जुड़ाव का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों पर समान हैं। एक उदाहरण के लिए कर्मचारी और विभाग और उनके प्राकृतिक जुड़ाव पर विचार करें:[citation needed]

ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन विभाग दिखाई देता है।

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

प्राकृतिक जुड़ना यकीनन सबसे महत्वपूर्ण प्रचालकों में से एक है क्योंकि यह तार्किक AND प्रचालक का संबंधपरक समकक्ष है। ध्यान दें कि यदि एक ही चर प्रत्येक दो विधेय में दिखाई देता है जो AND से जुड़े हैं, तो वह चर एक ही चीज़ के लिए खड़ा होता है और दोनों दिखावे को हमेशा एक ही मान से प्रतिस्थापित किया जाना चाहिए (यह तार्किक AND की मूर्खता का परिणाम है) . विशेष रूप से, प्राकृतिक जुड़ाव उन संबंधों के संयोजन की अनुमति देता है जो एक विदेशी कुंजी से जुड़े होते हैं। उदाहरण के लिए, ऊपर दिए गए उदाहरण में एक विदेशी कुंजी शायद Employee.DeptName से Dept.DeptName तक रखती है और फिर Employee और Dept का स्वाभाविक जुड़ाव सभी कर्मचारियों को उनके विभागों से जोड़ता है। यह काम करता है क्योंकि विदेशी कुंजी समान नाम वाले गुणों के बीच होती है। यदि यह मामला नहीं है जैसे कि Dept.Manager से Employee.Name की विदेशी कुंजी में, तो स्वाभाविक रूप से सम्मिलित होने से पहले इन स्तंभों का नाम बदला जाना चाहिए। इस तरह के जुड़ाव को कभी-कभी 'इक्विजॉइन' भी कहा जाता है (θ-जॉइन देखें)।

अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है:

 

 

 

 

(1)

जहाँ Fun(t) एक विधेय (गणित) है जो एक संबंध (गणित) के लिए सत्य है t (गणितीय अर्थ में) iff t एक फ़ंक्शन है (अर्थात, t किसी भी गुण को एकाधिक मानों में मैप नहीं करता है)। आमतौर पर यह आवश्यक है कि आर और एस में कम से कम एक सामान्य विशेषता होनी चाहिए, लेकिन अगर यह बाधा छोड़ी जाती है, और आर और एस में कोई सामान्य विशेषता नहीं है, तो प्राकृतिक जुड़ाव बिल्कुल कार्तीय गुणन बन जाता है।

कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि सी1,...,सीm विशेषता नाम आर और एस, आर के लिए सामान्य हैं1,...,आरn हैं विशेषता नाम आर और एस के लिए अद्वितीय हैं1,...,एसk हैं विशेषता नाम एस के लिए अद्वितीय है। इसके अलावा, मान लें कि विशेषता नाम x1,...,एक्सm न तो R में हैं और न ही S में। पहले चरण में S में सामान्य विशेषता नामों का नाम बदला जा सकता है:

 

 

 

 

(2)

फिर हम कार्तीय गुणन लेते हैं और जुड़ने वाले टुपल्स का चयन करते हैं:

 

 

 

 

(3)

अंत में हम पुनर्नामित विशेषताओं से छुटकारा पाने के लिए एक प्रक्षेपण लेते हैं:

 

 

 

 

(4)

θ-जॉइन और इक्वीजॉइन

टेबल कार और नाव पर विचार करें जो कारों और नावों के प्रारूप और उनकी संबंधित कीमतों को सूचीबद्ध करती हैं। मान लीजिए एक ग्राहक एक कार और एक नाव खरीदना चाहता है, लेकिन वह कार की तुलना में नाव के लिए अधिक पैसा खर्च नहीं करना चाहता। θ-जॉइन (⋈θ) CarPrice विधेय पर ≥ BoatPrice पंक्तियों के चपटे जोड़े का उत्पादन करता है जो विधेय को संतुष्ट करता है। ऐसी स्थिति का उपयोग करते समय जहां विशेषताएँ समान हों, उदाहरण के लिए मूल्य, तब स्थिति को मूल्य = मूल्य के रूप में निर्दिष्ट किया जा सकता है या वैकल्पिक रूप से (मूल्य) ही।

दो संबंधों से टुपल्स को संयोजित करने के लिए जहां संयोजन की स्थिति केवल साझा विशेषताओं की समानता नहीं है, इसमें सम्मिलित होने वाले प्रचालक का अधिक सामान्य रूप होना सुविधाजनक है, जो θ-जॉइन (या थीटा-जॉइन) है। θ-जॉइन एक बाइनरी प्रचालक है जिसे इस रूप में लिखा जाता है या जहाँ a और b विशेषता नाम हैं, θ समुच्चय {<, ≤, =, ≠, >, ≥} में एक बाइनरी संबंधपरक प्रचालक है, υ एक मान स्थिरांक है, और R और एस संबंध हैं। इस ऑपरेशन के परिणाम में R और S में tuples के सभी संयोजन सम्मिलित हैं जो θ को संतुष्ट करते हैं। θ-जॉइन का नतीजा केवल तभी परिभाषित किया जाता है जब एस और आर के शीर्षलेख अलग होते हैं, यानी इसमें एक सामान्य विशेषता नहीं होती है।

मौलिक संचालन में इस ऑपरेशन का अनुकरण इस प्रकार है:

आर ⋈θ स = पθ(आर × एस)

यदि प्रचालक θ समानता प्रचालक (=) है तो इस जुड़ाव को 'इक्विजॉइन' भी कहा जाता है।

ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कार्तीय गुणन को पतित करता है जब कोई साझा नहीं होता है) गुण)।

एसक्यूएल कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और on कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है: चपटा कार्तीय गुणन बनाना और फिर पंक्तियों को फ़िल्टर करना अवधारणात्मक रूप से सही है, लेकिन एक कार्यान्वयन ज्वाइन क्वेरी को गति देने के लिए अधिक परिष्कृत डेटा संरचनाओं का उपयोग करेगा।

सेमिजॉइन (⋉ और ⋊)

बायाँ सेमीजॉइन प्राकृतिक जोड़ के समान एक जुड़ाव है और इसे लिखा जाता है, जहाँ और संबंध (डेटाबेस) हैं।[lower-alpha 2] परिणाम में सभी tuples का समुच्चय है, जिसके लिए में एक tuple है जो उनके सामान्य गुण नामों के बराबर है। प्राकृतिक जोड़ से अंतर यह है कि के अन्य कॉलम दिखाई नहीं देते हैं। उदाहरण के लिए, कर्मचारी और विभाग और उनके सेमीजॉइन टेबल पर विचार करें:[citation needed]

अधिक औपचारिक रूप से सेमीजॉइन के शब्दार्थ को इस रूप में परिभाषित किया जा सकता है इस प्रकार है:

जहां नेचुरल जॉइन की परिभाषा के अनुसार है।

निम्नानुसार प्राकृतिक जुड़ाव का उपयोग करके सेमीजॉइन का अनुकरण किया जा सकता है। अगर के एट्रिब्यूट नाम हैं, तो

चूँकि हम मूल संचालकों के साथ प्राकृतिक जुड़ाव का अनुकरण कर सकते हैं, इसलिए यह इस प्रकार है कि यह सेमीजॉइन के लिए भी लागू होता है।

कॉड के 1970 के पेपर में, सेमीजॉइन को प्रतिबंध कहा जाता है।[2]


एंटीजॉइन (▷)

एंटीजॉइन, R ▷ S के रूप में लिखा जाता है जहाँ R और S रिलेशन (डेटाबेस) हैं,[lower-alpha 3] सेमिजॉइन के समान है, लेकिन एक एंटीजॉइन का नतीजा आर में केवल वे ट्यूपल्स हैं जिनके लिए एस में कोई ट्यूपल नहीं है जो उनके सामान्य विशेषता नामों के बराबर है।[citation needed]

उदाहरण के लिए कर्मचारी और विभाग और उनके तालिकाओं पर विचार करें एंटीजॉइन:

एंटीजॉइन को औपचारिक रूप से निम्नानुसार परिभाषित किया गया है:

R ▷ S = { t : t ∈ R ∧ ¬∃s ∈ S(Fun (t ∪ s)) }

या

R ▷ S = { t : t ∈ R, S का कोई tuple s नहीं है जो Fun (t ∪ s) को संतुष्ट करता हो

कहाँ Fun (ts) प्राकृतिक जुड़ाव की परिभाषा के अनुसार है।

एंटीजॉइन को सेमीजॉइन के पूरक (समुच्चय सिद्धांत) के रूप में भी परिभाषित किया जा सकता है:

RS = R − RS

 

 

 

 

(5)

इसे देखते हुए, एंटीजॉइन को कभी-कभी एंटी-सेमीजॉइन कहा जाता है, और एंटीजॉइन प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजॉइन प्रतीक के रूप में लिखा जाता है।

डिवीजन (÷)

डिवीजन एक बाइनरी ऑपरेशन है जिसे R ÷ S के रूप में लिखा जाता है। डिवीजन सीधे एसक्यूएल में लागू नहीं होता है। परिणाम में आर में ट्यूपल्स के प्रतिबंध आर के लिए अद्वितीय विशेषता नाम हैं, यानी, आर के शीर्षलेख में, लेकिन एस के शीर्षलेख में नहीं, जिसके लिए यह माना जाता है कि एस में ट्यूपल्स के साथ उनके सभी संयोजन आर में मौजूद हैं। एक उदाहरण के लिए पूर्ण तालिकाएँ, DBProject और उनका विभाजन देखें:

यदि DBProject में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है:

R ÷ S = { t[a1,...,an] : tR ∧ ∀sS ( (t[a1,...,an] ∪ s) ∈ R) }

 

 

 

 

(6)

जहाँ एक1,...,एn} आर और टी [ए के लिए अद्वितीय विशेषता नामों का समुच्चय है1,...,एn] इस समुच्चय के लिए टी का प्रतिबंध है। आमतौर पर यह आवश्यक है कि एस के शीर्षलेख में विशेषता नाम आर के सबसमुच्चय हैं क्योंकि अन्यथा ऑपरेशन का परिणाम हमेशा खाली रहेगा।

मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि ए1,...,एn विशेषता नाम आर और बी के लिए अद्वितीय हैं1,...,बीm एस के विशेषता नाम हैं। पहले चरण में हम आर को इसके अद्वितीय विशेषता नामों पर प्रोजेक्ट करते हैं और एस में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं:

त:= πa1,...,एn</उप>(आर) × एस

पिछले उदाहरण में, टी एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 टी में।

EG: सबसे पहले, मान लें कि Completed के पास ग्रेड नामक एक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रोजेक्ट करना चाहिए। वास्तव में इस चरण में हम टास्क को आर से भी छोड़ सकते हैं; गुणा इसे वापस रखता है।
त:= πStudent(आर) × एस // यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में आर में मौजूद नहीं हैं, और दूसरों को छोड़कर (जैसे फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है)

अगले चरण में हम R को T से घटाते हैं

संबंध (डेटाबेस):

यू := टी - आर

यू में हमारे पास संभव है संयोजन जो आर में हो सकते थे, लेकिन नहीं थे।

ईजी: फिर से अनुमानों के साथ - टी और आर को समान विशेषता नाम/शीर्षक रखने की आवश्यकता है।
यू := टी − πStudent,Task(आर) // यह हमें एक लापता सूची देता है।

तो अगर हम अब आर के लिए अद्वितीय विशेषता नामों पर प्रक्षेपण लेते हैं

तो हमारे पास आर में टुपल्स का प्रतिबंध है जिसके लिए नहीं S में tuples वाले सभी संयोजन R में मौजूद थे:

वि := πa1,...,एn</उप>(यू)
ईजी: प्रोजेक्‍ट यू को केवल प्रश्‍नगत विशेषताओं (छात्रों) तक सीमित करें (विद्यार्थी)
वि:= πStudent(में)

तो जो करना बाकी रह गया है, वह है इसके ऊपर R का प्रक्षेपण लेना अद्वितीय विशेषता नाम और उन्हें वी में घटाएं:

व := πa1,...,एn</ उप> (आर) - वी
ईजी: डब्ल्यू: = πStudent(आर) - वी।

सामान्य एक्सटेंशन

अभ्यास में ऊपर वर्णित शास्त्रीय संबंधपरक बीजगणित को विभिन्न संक्रियाओं जैसे बाहरी जोड़, कुल कार्य और यहां तक ​​कि सकर्मक समापन के साथ विस्तारित किया गया है।[3]

बाहरी जुड़ता है

जबकि एक जॉइन (या इनर जॉइन) के परिणाम में दो ऑपरेंड में मैचिंग ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जॉइन में वे ट्यूपल्स होते हैं और इसके अलावा कुछ ट्यूपल्स एक ऑपरेंड में एक बेजोड़ ट्यूपल को बढ़ाकर प्रत्येक के लिए मान भरते हैं। दूसरे ऑपरेंड की विशेषताओं का। अब तक चर्चा किए गए शास्त्रीय संबंधपरक बीजगणित का हिस्सा बाहरी जुड़ाव नहीं माना जाता है।[4] इस खंड में परिभाषित प्रचालक एक शून्य मान के अस्तित्व को मानते हैं, ω, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है; व्यवहार में यह एसक्यूएल में Null (SQL) से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए असाइन करने की आवश्यकता है; कोडड के दृष्टिकोण में चयन द्वारा उपयोग किए जाने वाले प्रस्तावपरक तर्क Null (SQL)#Comparisons with NULL और तीन-मूल्यवान तर्क .283VL.29|तीन-मूल्यवान तर्क तक विस्तारित है, हालांकि हम इस लेख में उन विवरणों को अलग करते हैं।

तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है: बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। (बाहरी शब्द कभी-कभी छोड़ दिया जाता है।)

वाम बाहरी जोड़ (⟕)

बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S संबंध (डेटाबेस) हैं।[lower-alpha 4] बाएं बाहरी जोड़ का परिणाम आर और एस में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, आर में ट्यूपल्स के अलावा (ढीले बोलने वाले) जिनके एस में कोई मिलान ट्यूपल नहीं है।[citation needed]

एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके बाएं बाहरी जुड़ाव पर विचार करें:

परिणामी संबंध में, S में tuples जिनका R में tuples के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान लेते हैं, ω।

चूंकि विभाग में वित्त या कार्यकारी के विभाग नाम के साथ कोई ट्यूपल नहीं है, इसलिए परिणामी संबंध में ω होते हैं जहां कर्मचारी में ट्यूपल के पास वित्त या कार्यकारी विभाग का नाम होता है।

चलो आर1, आर2, ..., आरn संबंध R के गुण हों और {(ω, ..., ω)} को सिंगलटन होने दें उन विशेषताओं पर संबंध जो संबंध S के लिए अद्वितीय हैं (जो R के गुण नहीं हैं)। फिर बाएं बाहरी जोड़ को प्राकृतिक जुड़ाव (और इसलिए बुनियादी प्रचालकों का उपयोग करके) के रूप में निम्नानुसार वर्णित किया जा सकता है:


दायां बाहरी जोड़ (⟖)

दायाँ बाहरी जुड़ाव लगभग बाएँ बाहरी जुड़ाव के समान व्यवहार करता है, लेकिन तालिकाओं की भूमिकाएँ बदल जाती हैं।

संबंध (डेटाबेस) के दाएं बाहरी जुड़ाव R और S को R ⟖ S लिखा जाता है।[lower-alpha 5] सही बाहरी जुड़ाव का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो S में tuples के अलावा उनके सामान्य विशेषता नामों पर समान हैं, जिनका R में कोई मिलान tuples नहीं है।[citation needed]

उदाहरण के लिए, कर्मचारी और विभाग और उनके तालिकाओं पर विचार करें सही बाहरी सम्मिलित हों:

परिणामी संबंध में, R में tuples जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में tuples के साथ एक शून्य मान, ω लेते हैं।

चूंकि उत्पादन के DeptName वाले कर्मचारी में कोई tuples नहीं है, इसलिए परिणामी संबंध के नाम और EmpId विशेषताओं में ω होते हैं, जहां विभाग के tuples में उत्पादन का DeptName था।

चलो एस1, एस2, ..., एसn संबंध एस के गुण बनें और {(ω, ..., ω)} को सिंगलटन होने दें उन विशेषताओं पर संबंध जो संबंध R के लिए अद्वितीय हैं (जो S के गुण नहीं हैं)। फिर, जैसा कि बाएँ बाहरी जोड़ के साथ होता है, दाएँ बाहरी जोड़ को प्राकृतिक जोड़ का उपयोग करके अनुकरण किया जा सकता है:


पूर्ण बाहरी जुड़ाव (⟗)

बाहरी जोड़ या पूर्ण बाहरी जुड़ाव प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है।

पूर्ण बाहरी जोड़ को RS के रूप में लिखा जाता है जहां R और S रिलेशन (डेटाबेस) हैं।[lower-alpha 6] पूर्ण बाहरी जुड़ने का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, S में tuples के अलावा R में कोई मिलान tuples नहीं हैं और R में tuples हैं जिनका कोई मिलान नहीं है उनके सामान्य गुण नामों में S में tuples।[citation needed]

उदाहरण के लिए कर्मचारी और विभाग और उनके तालिकाओं पर विचार करें पूर्ण बाहरी सम्मिलित हों:

परिणामी संबंध में, R में tuples जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में tuples के साथ एक शून्य मान, ω लेते हैं। S में Tuples जिनका R में tuples के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान भी लेते हैं, ω।

पूर्ण बाहरी जोड़ को बाएँ और दाएँ बाहरी जोड़ (और इसलिए प्राकृतिक जुड़ाव और समुच्चय संघ) का उपयोग करके सिम्युलेटेड किया जा सकता है:

आर ⟗ एस = (आर ⟕ एस) ∪ (आर ⟖ एस)

डोमेन संगणनाओं के लिए संचालन

अब तक पेश किए गए संबंधपरक बीजगणित में ऐसा कुछ भी नहीं है जो डेटा डोमेन पर संगणना की अनुमति दे (समानता से जुड़े प्रस्तावात्मक भावों के मूल्यांकन के अलावा)। उदाहरण के लिए, अब तक शुरू किए गए बीजगणित का उपयोग करके एक व्यंजक लिखना संभव नहीं है जो संख्याओं को दो स्तंभों से गुणा करेगा, उदा. कुल मूल्य प्राप्त करने के लिए मात्रा के साथ एक इकाई मूल्य। व्यावहारिक क्वेरी भाषाओं में ऐसी सुविधाएं होती हैं, उदा. एसक्यूएल चयन परिणाम में नए कॉलम को परिभाषित करने के लिए अंकगणितीय संचालन की अनुमति देता है SELECT unit_price * quantity AS total_price FROM t, और इसी तरह की सुविधा ट्यूटोरियल डी द्वारा अधिक स्पष्ट रूप से प्रदान की जाती है EXTEND कीवर्ड।[5] डेटाबेस सिद्धांत में, इसे विस्तारित प्रक्षेपण कहा जाता है।[6]: 213 

एकत्रीकरण

इसके अलावा, एक स्तंभ पर विभिन्न कार्यों की गणना करना, जैसे कि इसके तत्वों का योग, अब तक पेश किए गए संबंधपरक बीजगणित का उपयोग करना भी संभव नहीं है। अधिकांश संबंधपरक डेटाबेस प्रणाली के साथ सम्मिलित किए गए पांच समग्र कार्य हैं। ये ऑपरेशन सम, काउंट, एवरेज, मैक्सिमम और मिनिमम हैं। संबंधपरक बीजगणित में एक स्कीमा पर एकत्रीकरण ऑपरेशन (ए1, ए2, ... एn) इस प्रकार लिखा गया है:

जहां प्रत्येक एj', 1 ≤ j ≤ k, A के मूल गुणों में से एक हैi, 1 ≤ मैं ≤ एन।

जी से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए एकत्रीकरण कार्यों की मनमानी संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो एकत्रीकरण कार्य पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है।

मान लेते हैं कि हमारे पास नाम की एक तालिका है Account तीन स्तंभों के साथ, अर्थात् Account_Number, Branch_Name और Balance. हम प्रत्येक शाखा की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह द्वारा पूरा किया जाता है Branch_NameGMax(Balance)(Account). शाखा की परवाह किए बिना सभी खातों की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल जी लिख सकते हैंMax(Balance)(Account).

ग्रुपिंग को प्रायः लिखा जाता है Branch_NameɣMax(Balance)(Account) बजाय।[6]


सकर्मक बंद

यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली लगता है, संबंध (डेटाबेस) पर कुछ सरल और प्राकृतिक संचालक हैं जिन्हें संबंधपरक बीजगणित द्वारा व्यक्त नहीं किया जा सकता है। उनमें से एक द्विआधारी संबंध का सकर्मक समापन है। एक डोमेन डी दिया गया है, बाइनरी रिलेशन आर को डी × डी का सबसमुच्चय होने दें। सकर्मक बंद आर+ R का D×D का सबसे छोटा उपसमुच्चय है जिसमें R सम्मिलित है और निम्नलिखित शर्तों को पूरा करता है:

यह इस तथ्य का उपयोग करके सिद्ध किया जा सकता है कि कोई संबंधपरक बीजगणित अभिव्यक्ति E(R) नहीं है जो R को एक चर तर्क के रूप में लेता है जो R उत्पन्न करता है+.[7] एसक्यूएल हालांकि आधिकारिक तौर पर 1999 से एसक्यूएल में इस तरह के पदानुक्रमित और पुनरावर्ती प्रश्नों का समर्थन करता है, और इससे पहले इस दिशा में विक्रेता-विशिष्ट एक्सटेंशन थे।

क्वेरी अनुकूलन के लिए बीजगणितीय गुणों का उपयोग

संबंधपरक प्रश्न को ट्री (डेटा स्ट्रक्चर) के रूप में दर्शाया जा सकता है, जहां

  • आंतरिक नोड प्रचालक हैं,
  • पत्तियां संबंध (डेटाबेस) हैं,
  • सबट्री सबएक्सप्रेशन हैं।

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

यहां नियमों का एक समूह दिया गया है जिनका उपयोग ऐसे परिवर्तनों में किया जा सकता है।

चयन

चयन प्रचालकों के बारे में नियम क्वेरी ऑप्टिमाइज़ेशन में सबसे महत्वपूर्ण भूमिका निभाते हैं। चयन एक प्रचालक है जो अपने ऑपरेंड में पंक्तियों की संख्या को बहुत प्रभावी ढंग से कम करता है, इसलिए यदि अभिव्यक्ति वृक्ष में चयन पत्तियों की ओर ले जाया जाता है, तो आंतरिक संबंध (डेटाबेस) एस (उप-अभिव्यक्तियों द्वारा प्राप्त) संभवतः सिकुड़ जाएगा।

मूल चयन गुण

चयन उदासीन है (एक ही चयन के कई अनुप्रयोगों का पहले वाले के अलावा कोई अतिरिक्त प्रभाव नहीं है), और क्रमविनिमेय (आदेश चयन लागू होते हैं, अंतिम परिणाम पर कोई प्रभाव नहीं पड़ता है)।


जटिल परिस्थितियों के साथ चयनों को तोड़ना

एक चयन जिसकी स्थिति सरल स्थितियों का तार्किक संयोजन है, उन्हीं व्यक्तिगत स्थितियों के साथ चयन के अनुक्रम के बराबर है, और चयन जिसकी स्थिति एक तार्किक संयोजन है, चयनों के संघ के बराबर है। इन पहचानों का उपयोग चयनों को मर्ज करने के लिए किया जा सकता है ताकि कम चयनों का मूल्यांकन किया जा सके, या उन्हें विभाजित किया जा सके ताकि घटक चयनों को अलग से स्थानांतरित या अनुकूलित किया जा सके।


चयन और क्रॉस उत्पाद

मूल्यांकन करने के लिए क्रॉस उत्पाद सबसे महंगा प्रचालक है। यदि निविष्ट संबंध (डेटाबेस) में N और M पंक्तियाँ हैं, तो परिणाम में सम्मिलित होंगे पंक्तियाँ। इसलिए, क्रॉस उत्पाद प्रचालक को लागू करने से पहले दोनों ऑपरेंड के आकार को कम करना महत्वपूर्ण है।

यह प्रभावी ढंग से किया जा सकता है यदि चयन प्रचालक द्वारा क्रॉस उत्पाद का पालन किया जाता है, उदा। . ज्वाइन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित मामला है। यदि चयन प्रचालक द्वारा क्रॉस उत्पाद का पालन नहीं किया जाता है, तो हम अन्य चयन नियमों का उपयोग करके अभिव्यक्ति ट्री के उच्च स्तरों से चयन को नीचे धकेलने का प्रयास कर सकते हैं।

उपरोक्त मामले में जटिल चयन स्थितियों के बारे में विभाजित नियमों का उपयोग करके स्थिति A को शर्तों B, C और D में विभाजित किया गया है, ताकि और B में केवल R की विशेषताएँ हैं, C में केवल P की विशेषताएँ हैं, और D में A का वह भाग है जिसमें R और P दोनों की विशेषताएँ हैं। ध्यान दें, कि B, C या D संभवतः खाली हैं। फिर निम्नलिखित धारण करता है:


चयन और समुच्चय प्रचालक

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


चयन और प्रक्षेपण

चयन प्रक्षेपण के साथ संचार करता है यदि और केवल यदि चयन स्थिति में संदर्भित फ़ील्ड प्रक्षेपण में फ़ील्ड का सबसमुच्चय हैं। प्रक्षेपण से पहले चयन करना उपयोगी हो सकता है यदि ऑपरेंड क्रॉस उत्पाद या सम्मिलित हो। अन्य मामलों में, यदि चयन की स्थिति की गणना करना अपेक्षाकृत महंगा है, तो प्रक्षेपण के बाहर चयन को स्थानांतरित करने से उन टुपल्स की संख्या कम हो सकती है जिनका परीक्षण किया जाना चाहिए (चूंकि छोड़े गए क्षेत्रों से उत्पन्न डुप्लिकेट के उन्मूलन के कारण प्रक्षेपण कम टुपल्स उत्पन्न कर सकता है)।


प्रोजेक्शन

मूल प्रक्षेपण गुण

प्रोजेक्शन बेवकूफ है, ताकि (वैध) अनुमानों की एक श्रृंखला सबसे बाहरी प्रक्षेपण के बराबर हो।


प्रोजेक्शन और समुच्चय प्रचालक

प्रोजेक्शन समुच्चय यूनियन पर वितरण संपत्ति है।

प्रोजेक्शन चौराहे पर वितरित नहीं होता है और अंतर समुच्चय करता है। प्रति उदाहरण दिए गए हैं:

और

जहाँ b को इससे अलग माना जाता है b'.

नाम बदलें

मूल नाम बदलें गुण

एक चर के क्रमिक नाम बदलने को एकल नाम में संक्षिप्त किया जा सकता है। नाम बदलने की कार्रवाइयाँ जिनमें सामान्य रूप से कोई चर नहीं है, को एक दूसरे के संबंध में मनमाने ढंग से पुनर्क्रमित किया जा सकता है, जिसका उपयोग क्रमिक नामों को आसन्न बनाने के लिए किया जा सकता है ताकि उन्हें ढहाया जा सके।


नाम बदलें और प्रचालकों को समुच्चय करें

नाम बदलें समुच्चय अंतर, संघ और चौराहे पर वितरण है।


उत्पाद और संघ

कार्तीय उत्पाद संघ पर वितरण है।

कार्यान्वयन

कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, आईएसबीएल बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा सराहा गया है[8] कोडड के विचार को एक उपयोगी भाषा में बदलने का तरीका दिखाया। बिजनेस प्रणाली 12 एक अल्पकालिक उद्योग-शक्ति संबंधपरक डीबीएमएस था जो आईएसबीएल उदाहरण का पालन करता था।

1998 में क्रिस्टोफर जे. डेट और ह्यूग डार्वेन ने संबंधपरक डेटाबेस थ्योरी सिखाने में उपयोग के लिए ट्यूटोरियल डी नामक एक भाषा प्रस्तावित की, और इसकी क्वेरी भाषा भी आईएसबीएल के विचारों पर आधारित है। रेल ट्यूटोरियल डी का कार्यान्वयन है।

यहां तक ​​​​कि एसक्यूएल की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि एसक्यूएल (तालिका (डेटाबेस)) में संचालन वास्तव में संबंध (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय एसक्यूएल समकक्ष में नहीं हैं ( तर्कसंगत अनुकूलक और/या उपयोगकर्ताओं की हानि के लिए)। एसक्यूएल तालिका प्रारूप एक समुच्चय के बजाय एक बैग ( बहुसमुच्चय) है। उदाहरण के लिए, अभिव्यक्ति समुच्चय पर संबंधपरक बीजगणित के लिए एक प्रमेय है, लेकिन बैग पर संबंधपरक बीजगणित के लिए नहीं, बैगो पर संबंधपरक बीजगणित के उपचार के लिए गार्सिया मोलिना , जेफरी उल्मैन और जेनिफर विडोम द्वारा कम्प्लीट टेक्स्टबुक का अध्याय 5 देखें।[6]

यह भी देखें

टिप्पणियाँ

  1. In Unicode, the bowtie symbol is ⋈ (U+22C8).
  2. In Unicode, the ltimes symbol is ⋉ (U+22C9). The rtimes symbol is ⋊ (U+22CA)
  3. In Unicode, the Antijoin symbol is ▷ (U+25B7).
  4. In Unicode, the Left outer join symbol is ⟕ (U+27D5).
  5. In Unicode, the Right outer join symbol is ⟖ (U+27D6).
  6. In Unicode, the Full Outer join symbol is ⟗ (U+27D7).


संदर्भ

  1. Silberschatz, Abraham; Henry F. Korth; S. Sudarshan (2020). डेटाबेस सिस्टम अवधारणाएँ (Seventh ed.). New York. p. 56. ISBN 978-0-07-802215-9. OCLC 1080554130.{{cite book}}: CS1 maint: location missing publisher (link)
  2. Codd, E.F. (June 1970). "बड़े साझा डेटा बैंकों के लिए डेटा का एक संबंधपरक मॉडल". Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. S2CID 207549016.
  3. M. Tamer Özsu; Patrick Valduriez (2011). वितरित डेटाबेस सिस्टम के सिद्धांत (3rd ed.). Springer. p. 46. ISBN 978-1-4419-8833-1.
  4. Patrick O'Neil; Elizabeth O'Neil (2001). Database: Principles, Programming, and Performance, Second Edition. Morgan Kaufmann. p. 120. ISBN 978-1-55860-438-4.
  5. C. J. Date (2011). SQL and Relational Theory: How to Write Accurate SQL Code. O'Reilly Media, Inc. pp. 133–135. ISBN 978-1-4493-1974-8.
  6. 6.0 6.1 6.2 Hector Garcia-Molina; Jeffrey D. Ullman; Jennifer Widom (2009). Database systems: the complete book (2nd ed.). Pearson Prentice Hall. ISBN 978-0-13-187325-4.
  7. Aho, Alfred V.; Jeffrey D. Ullman (1979). "डेटा पुनर्प्राप्ति भाषाओं की सार्वभौमिकता". Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages: 110–119. doi:10.1145/567752.567763. S2CID 3242505.
  8. C. J. Date. "एडगर एफ कॉड - ए.एम. ट्यूरिंग पुरस्कार विजेता". amturing.acm.org. Retrieved 2020-12-27.


अग्रिम पठन

Practically any academic textbook on databases has a detailed treatment of the classic relational algebra.


बाहरी संबंध