संबंधपरक बीजगणित: Difference between revisions
No edit summary |
|||
(27 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
संबंधपरक बीजगणित का मुख्य अनुप्रयोग[[ संबंध का डेटाबेस | संबंधपरक डेटाबेस]] के लिए एक सैद्धांतिक आधार प्रदान करना है, विशेष रूप से [[ पूछताछ भाषा |पृच्छा भाषा]] जैसे डेटाबेस के लिए, जिनमें से [[SQL|एसक्यूएल]] प्रमुख है। संबंधपरक डेटाबेस सारणीबद्ध डेटा को [[संबंध (डेटाबेस)|संबंधों]] के रूप में प्रदर्शित करते हैं। [[संबंधपरक]] डेटाबेस पर प्रश्न प्रायः समान रूप से सारणीबद्ध डेटा की पुनरावृत्ति करते हैं जिसे [[संबंध]] के रूप में दर्शाया गया है। | संबंधपरक बीजगणित का मुख्य अनुप्रयोग[[ संबंध का डेटाबेस | संबंधपरक डेटाबेस]] के लिए एक सैद्धांतिक आधार प्रदान करना है, विशेष रूप से [[ पूछताछ भाषा |पृच्छा भाषा]] जैसे डेटाबेस के लिए, जिनमें से [[SQL|एसक्यूएल]] प्रमुख है। संबंधपरक डेटाबेस सारणीबद्ध डेटा को [[संबंध (डेटाबेस)|संबंधों]] के रूप में प्रदर्शित करते हैं। [[संबंधपरक]] डेटाबेस पर प्रश्न प्रायः समान रूप से सारणीबद्ध डेटा की पुनरावृत्ति करते हैं जिसे [[संबंध]] के रूप में दर्शाया गया है। | ||
संबंधपरक बीजगणित का मुख्य उद्देश्य उन प्रचालको को परिभाषित करना है जो निर्गत संबंध में एक या एक से अधिक निविष्ट संबंधों को बदल देते हैं। यह देखते हुए कि ये प्रचालक संबंधों को निविष्ट के रूप में स्वीकार करते हैं और निर्गत के रूप में संबंधों का निर्माण करते हैं, उन्हें जोड़ा जा सकता है और संभावित | संबंधपरक बीजगणित का मुख्य उद्देश्य उन प्रचालको को परिभाषित करना है जो निर्गत संबंध में एक या एक से अधिक निविष्ट संबंधों को बदल देते हैं। यह देखते हुए कि ये प्रचालक संबंधों को निविष्ट के रूप में स्वीकार करते हैं और निर्गत के रूप में संबंधों का निर्माण करते हैं, उन्हें जोड़ा जा सकता है और संभावित सम्मिश्र प्रश्नों को व्यक्त करने के लिए उनका उपयोग किया जा सकता है जो संभावित रूप से कई निविष्ट संबंधों (जिनका डेटा डेटाबेस में संग्रहीत होता है) को एकल निर्गत संबंधों (क्वेरी परिणाम) में परिवर्तित करते है। | ||
अंगीय प्रचालक निविष्ट के रूप में एकल संबंध स्वीकार करते हैं, उदाहरणों में एक निविष्ट संबंध से कुछ विशेषताओं (स्तंभों) या टुपल्स (पंक्तियों) को फ़िल्टर करने के लिए प्रचालक सम्मिलित हैं। | अंगीय प्रचालक निविष्ट के रूप में एकल संबंध स्वीकार करते हैं, उदाहरणों में एक निविष्ट संबंध से कुछ विशेषताओं (स्तंभों) या टुपल्स (पंक्तियों) को फ़िल्टर करने के लिए प्रचालक सम्मिलित हैं। | ||
Line 43: | Line 43: | ||
पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को <math>\sigma_{\text{isFriend = true} \,\lor\, \text{isBusinessContact = true}}( \text{addressBook} )</math> के रूप में लिखा जा सकता है। परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी, जहां {{math|size=90%|मित्र }}सत्य है या {{math|size=90%|व्यवसाय संपर्क }} कहां सत्य है। | पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को <math>\sigma_{\text{isFriend = true} \,\lor\, \text{isBusinessContact = true}}( \text{addressBook} )</math> के रूप में लिखा जा सकता है। परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी, जहां {{math|size=90%|मित्र }}सत्य है या {{math|size=90%|व्यवसाय संपर्क }} कहां सत्य है। | ||
=== | === पुनःनामकरण (ρ) === | ||
{{Main| | {{Main|पुनःनामकरण (संबंधपरक बीजगणित)}} | ||
एक | |||
एक पुनःनामकरण एक [[एकल संक्रिया]] है जिसे <math>\rho_{a / b}(R)</math> के रूप में लिखा जाता है, जहां परिणाम R के समान है, इसके अलावा सभी ट्यूपल्स में b विशेषता का नाम बदलकर a विशेषता कर दिया जाता है। इसका उपयोग केवल किसी [[संबंध]] या स्वयं संबंध की विशेषता का नाम बदलने के लिए किया जाता है। | |||
किसी संबंध में "isFriend" विशेषता का नाम बदलकर "isBusinessContact" करने के लिए, <math>\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )</math> का उपयोग किया जा सकता है। | किसी संबंध में "isFriend" विशेषता का नाम बदलकर "isBusinessContact" करने के लिए, <math>\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )</math> का उपयोग किया जा सकता है। | ||
Line 103: | Line 104: | ||
{{col-end}} | {{col-end}} | ||
ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन | ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन विभाग दिखाई देता है। | ||
इसका उपयोग [[संबंधों की संरचना को परिभाषित]] करने के लिए भी किया जा सकता है। उदाहरण के लिए, कर्मचारी और विभाग की संरचना उनका जुड़ाव है जैसा कि ऊपर दिखाया गया है, सामान्य विशेषता विभाग के नाम को छोड़कर सभी पर अनुमानित है। [[श्रेणी सिद्धांत]] में, जुड़ना ठीक [[फाइबर उत्पाद|फाइबर गुणन]] है। | इसका उपयोग [[संबंधों की संरचना को परिभाषित]] करने के लिए भी किया जा सकता है। उदाहरण के लिए, कर्मचारी और विभाग की संरचना उनका जुड़ाव है जैसा कि ऊपर दिखाया गया है, सामान्य विशेषता विभाग के नाम को छोड़कर सभी पर अनुमानित है। [[श्रेणी सिद्धांत]] में, जुड़ना ठीक [[फाइबर उत्पाद|फाइबर गुणन]] है। | ||
प्राकृतिक जोड़ यकीनन सबसे महत्वपूर्ण प्रचालकों में से एक है क्योंकि यह तार्किक एएनडी प्रचालक का संबंधपरक समकक्ष है। ध्यान दें कि यदि एएनडी द्वारा संयोजित किए गए प्रत्येक दो विधेय में एक ही चर प्रकट होता है, तो वह चर एक ही चीज़ के लिए खड़ा होता है और दोनों दिखावे को हमेशा एक ही मान से प्रतिस्थापित किया जाना चाहिए (यह तार्किक एएनडी की [[मूर्खता]] का परिणाम है)। विशेष रूप से, प्राकृतिक जुड़ाव उन संबंधों के संयोजन की अनुमति देता है जो एक [[विदेशी कुंजी]] से जुड़े होते हैं। उदाहरण के लिए, ऊपर दिए गए उदाहरण में एक | प्राकृतिक जोड़ यकीनन सबसे महत्वपूर्ण प्रचालकों में से एक है क्योंकि यह तार्किक एएनडी प्रचालक का संबंधपरक समकक्ष है। ध्यान दें कि यदि एएनडी द्वारा संयोजित किए गए प्रत्येक दो विधेय में एक ही चर प्रकट होता है, तो वह चर एक ही चीज़ के लिए खड़ा होता है और दोनों दिखावे को हमेशा एक ही मान से प्रतिस्थापित किया जाना चाहिए (यह तार्किक एएनडी की [[मूर्खता|निष्क्रियता]] का परिणाम है)। विशेष रूप से, प्राकृतिक जुड़ाव उन संबंधों के संयोजन की अनुमति देता है जो एक [[विदेशी कुंजी|भिन्न कुंजी]] से जुड़े होते हैं। उदाहरण के लिए, ऊपर दिए गए उदाहरण में एक भिन्न कुंजी शायद कर्मचारी.विभाग के नाम से विभाग.विभाग के नाम तक रखती है और फिर कर्मचारी और विभाग का स्वाभाविक जुड़ाव सभी कर्मचारियों को उनके विभागों से जोड़ता है। यह काम करता है क्योंकि भिन्न कुंजी समान नाम वाले गुणों के बीच होती है। यदि यह स्थिति नहीं है जैसे कि विभाग प्रबंधक से कर्मचारी का नाम की भिन्न कुंजी में, तो स्वाभाविक रूप से सम्मिलित होने से पहले इन स्तंभों का नाम बदला जाना चाहिए। इस तरह के जुड़ाव को कभी-कभी 'इक्विजोड़' भी कहा जाता है (θ-जोड़ देखें)। | ||
अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है, | अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है, | ||
Line 113: | Line 114: | ||
{{NumBlk|:|<math>R \bowtie S = \left\{ r \cup s \ \vert \ r \in R \ \land \ s \in S \ \land \ \mathit{Fun}(r \cup s) \right\}</math>|{{EquationRef|1}}}} | {{NumBlk|:|<math>R \bowtie S = \left\{ r \cup s \ \vert \ r \in R \ \land \ s \in S \ \land \ \mathit{Fun}(r \cup s) \right\}</math>|{{EquationRef|1}}}} | ||
जहाँ फन (t) एक [[विधेय (गणित)]] है जो एक [[संबंध (गणित)]] t के लिए सत्य है (गणितीय अर्थ में) [[iff|यदि]] t एक फलन है (अर्थात, t किसी भी गुण को एकाधिक मानों में मैप नहीं करता है)। आमतौर पर यह आवश्यक है कि R और S में कम से कम एक सामान्य विशेषता होनी चाहिए, लेकिन अगर यह बाधा छोड़ी जाती है, और R और S में कोई सामान्य विशेषता नहीं है, तो प्राकृतिक जुड़ाव बिल्कुल कार्तीय गुणन बन जाता है। | जहाँ फन (t) एक [[विधेय (गणित)]] है जो एक [[संबंध (गणित)|संबंध]] t के लिए सत्य है (गणितीय अर्थ में) [[iff|यदि]] t एक फलन है (अर्थात, t किसी भी गुण को एकाधिक मानों में मैप नहीं करता है)। आमतौर पर यह आवश्यक है कि R और S में कम से कम एक सामान्य विशेषता होनी चाहिए, लेकिन अगर यह बाधा छोड़ी जाती है, और R और S में कोई सामान्य विशेषता नहीं है, तो प्राकृतिक जुड़ाव बिल्कुल कार्तीय गुणन बन जाता है। | ||
कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि c<sub>1</sub>,...,c<sub>''m''</sub> R और S के लिए सामान्य विशेषता नाम हैं,r<sub>1</sub>,...,r<sub>''n''</sub> विशेषता नाम R और S के लिए अद्वितीय हैं और s<sub>1</sub>,...,s<sub>''k''</sub> S के लिए अद्वितीय विशेषता नाम हैं। इसके अलावा, मान लें कि विशेषता नाम x<sub>1</sub>,...,x<sub>''m''</sub> न तो R में हैं और न ही S | कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि c<sub>1</sub>,...,c<sub>''m''</sub> R और S के लिए सामान्य विशेषता नाम हैं,r<sub>1</sub>,...,r<sub>''n''</sub> विशेषता नाम R और S के लिए अद्वितीय हैं और s<sub>1</sub>,...,s<sub>''k''</sub> S के लिए अद्वितीय विशेषता नाम हैं। इसके अलावा, मान लें कि विशेषता नाम x<sub>1</sub>,...,x<sub>''m''</sub> न तो R में हैं और न ही S में हैं। पहले चरण में S में सामान्य विशेषता नामों का पुनःनामकरण किया जा सकता है, | ||
{{NumBlk|:|<math>T = \rho_{x_1/c_1,\ldots,x_m/c_m}(S) = \rho_{x_1/c_1}(\rho_{x_2/c_2}(\ldots\rho_{x_m/c_m}(S)\ldots))</math>|{{EquationRef|2}}}} | {{NumBlk|:|<math>T = \rho_{x_1/c_1,\ldots,x_m/c_m}(S) = \rho_{x_1/c_1}(\rho_{x_2/c_2}(\ldots\rho_{x_m/c_m}(S)\ldots))</math>|{{EquationRef|2}}}} | ||
Line 174: | Line 175: | ||
मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है | मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है | ||
: | : ''R'' ⋈<sub>''θ''</sub> ''S'' = ''σ''<sub>θ</sub>(''R'' × ''S'') | ||
यदि प्रचालक θ समानता प्रचालक (=) है तो इस जुड़ाव को 'इक्विजोड़' भी कहा जाता है। | यदि प्रचालक θ समानता प्रचालक (=) है तो इस जुड़ाव को 'इक्विजोड़' भी कहा जाता है। | ||
Line 180: | Line 181: | ||
ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कोई साझा विशेषता नहीं होने पर कार्तीय गुणन को पतित करता है)। | ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कोई साझा विशेषता नहीं होने पर कार्तीय गुणन को पतित करता है)। | ||
एसक्यूएल कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और ऑन कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है | एसक्यूएल कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और ऑन कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है, चपटा कार्तीय गुणन बनाना और फिर पंक्तियों को फ़िल्टर करना अवधारणात्मक रूप से सही है, लेकिन एक कार्यान्वयन ज्वाइन क्वेरी को गति देने के लिए अधिक परिष्कृत डेटा संरचनाओं का उपयोग करेगा। | ||
=== सेमिजोड़ (⋉ और ⋊) === | === सेमिजोड़ (⋉ और ⋊) === | ||
Line 238: | Line 239: | ||
=== एंटीजोड़ (▷) === | === एंटीजोड़ (▷) === | ||
एंटीजोड़, R ▷ S के रूप में लिखा जाता है जहाँ R और S [[संबंध]] | एंटीजोड़, R ▷ S के रूप में लिखा जाता है जहाँ R और S [[संबंध]] हैं,{{efn|In [[Unicode]], the Antijoin symbol is ▷ (U+25B7).}} सेमिजोड़ के समान है, लेकिन एक एंटीजोड़ का नतीजा R में केवल वे ट्यूपल्स हैं जिनके लिए S में कोई ट्यूपल नहीं है जो उनके सामान्य विशेषता नामों के बराबर है।{{fact|date=April 2022}} | ||
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके एंटीजोड़ पर विचार करें, | एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके एंटीजोड़ पर विचार करें, | ||
Line 289: | Line 290: | ||
जहां {{math|''फन'' (''t'' ∪ ''s'')}} प्राकृतिक जुड़ाव की परिभाषा के अनुसार है। | जहां {{math|''फन'' (''t'' ∪ ''s'')}} प्राकृतिक जुड़ाव की परिभाषा के अनुसार है। | ||
एंटीजोड़ को सेमीजोड़ के [[पूरक (सेट सिद्धांत)|पूरक | एंटीजोड़ को सेमीजोड़ के [[पूरक (सेट सिद्धांत)|पूरक]] के रूप में भी परिभाषित किया जा सकता है, | ||
{{NumBlk|:| {{math|1=''R'' ▷ ''S'' = ''R'' − ''R'' ⋉ ''S''}} |{{EquationRef|5}}}} | {{NumBlk|:| {{math|1=''R'' ▷ ''S'' = ''R'' − ''R'' ⋉ ''S''}} |{{EquationRef|5}}}} | ||
इसे देखते हुए, एंटीजोड़ को कभी-कभी एंटी-सेमीजोड़ कहा जाता है, और एंटीजोड़ प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजोड़ प्रतीक के रूप में लिखा जाता है। | इसे देखते हुए, एंटीजोड़ को कभी-कभी एंटी-सेमीजोड़ कहा जाता है, और एंटीजोड़ प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजोड़ प्रतीक के रूप में लिखा जाता है। | ||
=== विभाजन (÷) === | === विभाजन (÷) === | ||
विभाजन एक द्वि-आधारी संक्रिया है जिसे R ÷ S के रूप में लिखा जाता है। विभाजन सीधे एसक्यूएल में लागू नहीं होता है। परिणाम में | विभाजन एक द्वि-आधारी संक्रिया है जिसे R ÷ S के रूप में लिखा जाता है। विभाजन सीधे एसक्यूएल में लागू नहीं होता है। परिणाम में R में ट्यूपल्स के प्रतिबंध R के लिए अद्वितीय विशेषता नाम हैं, अर्थात, R के शीर्षलेख में, लेकिन S के शीर्षलेख में नहीं, जिसके लिए यह माना जाता है कि S में ट्यूपल्स के साथ उनके सभी संयोजन R में मौजूद हैं। एक उदाहरण के लिए पूर्ण तालिकाएँ, डीबी प्रोजेक्ट और उनका विभाजन देखें, | ||
{{col-begin|width=auto; margin:0.5em auto}} | {{col-begin|width=auto; margin:0.5em auto}} | ||
Line 338: | Line 339: | ||
{{col-end}}यदि डीबी प्रोजेक्ट में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है,{{NumBlk|:| {{math|''R'' ÷ ''S'' {{=}} { ''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] : ''t'' ∈ ''R'' ∧ ∀''s'' ∈ ''S'' ( (''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] ∪ ''s'') ∈ ''R'') } }} |{{EquationRef|6}}}}जहाँ {a<sub>1</sub>,...,a<sub>''n''</sub>} विशेषता नामों का समुच्चय है जो R लिए अद्वितीय है और t [a<sub>1</sub>,...,a<sub>''n''</sub>] इस समुच्चय के लिए t का प्रतिबंध है। आमतौर पर यह आवश्यक है कि S के शीर्षलेख में गुण नाम R के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा। | {{col-end}}यदि डीबी प्रोजेक्ट में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है,{{NumBlk|:| {{math|''R'' ÷ ''S'' {{=}} { ''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] : ''t'' ∈ ''R'' ∧ ∀''s'' ∈ ''S'' ( (''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] ∪ ''s'') ∈ ''R'') } }} |{{EquationRef|6}}}}जहाँ {a<sub>1</sub>,...,a<sub>''n''</sub>} विशेषता नामों का समुच्चय है जो R लिए अद्वितीय है और t [a<sub>1</sub>,...,a<sub>''n''</sub>] इस समुच्चय के लिए t का प्रतिबंध है। आमतौर पर यह आवश्यक है कि S के शीर्षलेख में गुण नाम R के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा। | ||
मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि a<sub>1</sub>,...,a<sub>''n''</sub> गुण नाम R के लिए अद्वितीय हैं और b<sub>1</sub>,...,b<sub>''m''</sub> S के गुण नाम हैं। पहले चरण में हम R को इसके अद्वितीय गुण नामों पर | मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि a<sub>1</sub>,...,a<sub>''n''</sub> गुण नाम R के लिए अद्वितीय हैं और b<sub>1</sub>,...,b<sub>''m''</sub> S के गुण नाम हैं। पहले चरण में हम R को इसके अद्वितीय गुण नामों पर प्रक्षेपित करते हैं और S में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं, | ||
: ''T'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') × ''S'' | : ''T'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') × ''S'' | ||
पिछले उदाहरण में, T एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 T में। | पिछले उदाहरण में, T एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 T में। | ||
:: | :: EG, सबसे पहले, आइए दिखाते हैं कि "पूर्ण" में "श्रेणी" नामक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रक्षेपित करना चाहिए। वास्तव में इस चरण में हम "कार्य" को R से भी छोड़ सकते हैं, तथा गुणा इसे वापस रखता है। | ||
:: ''T'':= π<sub>छात्र</sub>(''R'') × ''S'' // दूसरों को छोड़कर,यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में ''R'' में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है) | :: ''T'':= π<sub>छात्र</sub>(''R'') × ''S'' // दूसरों को छोड़कर, यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में ''R'' में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है) | ||
{{col-begin|width=auto; margin:0.5em auto}} | {{col-begin|width=auto; margin:0.5em auto}} | ||
{{col-break|gap=5em}} | {{col-break|gap=5em}} | ||
Line 365: | Line 366: | ||
|} | |} | ||
{{col-end}} अगले चरण में हम R को T से घटाते हैं | {{col-end}} अगले चरण में हम R को T से घटाते हैं | ||
संबंध | संबंध, | ||
: ''U'' := ''T'' - ''R'' | : ''U'' := ''T'' - ''R'' | ||
''U'' में हमारे पास संभावित संयोजन हैं जो ''R'' में "हो सकते थे", लेकिन नहीं थे। | ''U'' में हमारे पास संभावित संयोजन हैं जो ''R'' में "हो सकते थे", लेकिन नहीं थे। | ||
:: | :: EG, फिर से अनुमानों के साथ - ''T'' और R को समान गुण नाम/शीर्षक रखने की आवश्यकता है। | ||
:: ''U'' := ''T'' − π<sub>छात्र, कार्य</sub>(''R'') // यह हमें एक लापता सूची देता है। | :: ''U'' := ''T'' − π<sub>छात्र, कार्य</sub>(''R'') // यह हमें एक लापता सूची देता है। | ||
{{col-begin|width=auto; margin:0.5em auto}} | {{col-begin|width=auto; margin:0.5em auto}} | ||
Line 401: | Line 402: | ||
| फ्रेड|| संकलक1 | | फ्रेड|| संकलक1 | ||
|- | |- | ||
| | | यूजीन || डाटाबेस1 | ||
|- | |- | ||
| | | यूजीन || संकलक1 | ||
|- | |- | ||
| | | सराह || डाटाबेस1 | ||
|- | |- | ||
| | | सराह || डाटाबेस2 | ||
|} | |} | ||
{{col-break|gap=2em}} | {{col-break|gap=2em}} | ||
Line 421: | Line 422: | ||
| यूजीन|| डाटाबेस2 | | यूजीन|| डाटाबेस2 | ||
|} | |} | ||
{{col-end}} | {{col-end}} इसलिए यदि हम अब R के लिए अद्वितीय विशेषता नामों पर प्रक्षेपण लेते हैं | ||
तब हमारे पास R में टुपल्स का प्रतिबंध है जिसके लिए नहीं S में ट्यूपल्स वाले सभी संयोजन R में मौजूद थे, | |||
S में ट्यूपल्स वाले सभी संयोजन R में मौजूद थे | |||
: ''V'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''U'') | : ''V'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''U'') | ||
:<sub> | :<sub> | ||
Line 440: | Line 440: | ||
तो जो किया जाना बाकी है, वह R के प्रक्षेपण को उसके विशिष्ट गुण नामों पर ले जाता है और उन्हें V में घटा देता है, | तो जो किया जाना बाकी है, वह R के प्रक्षेपण को उसके विशिष्ट गुण नामों पर ले जाता है और उन्हें V में घटा देता है, | ||
: ''W'':= π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') | : ''W'':= π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') − ''V'' | ||
: | :EG: ''W'' : = π<sub>Student</sub>(R) - ''V''। | ||
{{col-begin|width=auto; margin:0.5em auto}} | {{col-begin|width=auto; margin:0.5em auto}} | ||
{{col-break|gap=5em}} | {{col-break|gap=5em}} | ||
Line 480: | Line 480: | ||
== सामान्य विस्तार == | == सामान्य विस्तार == | ||
अभ्यास में ऊपर वर्णित | अभ्यास में ऊपर वर्णित उत्कृष्ट संबंधपरक बीजगणित को विभिन्न संक्रियाओं जैसे बाहरी जोड़, योग संचालन और यहां तक कि सकर्मक संवरण के साथ विस्तारित किया गया है।<ref name="ÖzsuValduriez2011">{{cite book|author1=M. Tamer Özsu|author2=Patrick Valduriez|title=वितरित डेटाबेस सिस्टम के सिद्धांत|url=https://books.google.com/books?id=TOBaLQMuNV4C&pg=PA46|year=2011|publisher=Springer|isbn=978-1-4419-8833-1|page=46|edition=3rd}}</ref> | ||
=== बाहरी जोड़ === | === बाहरी जोड़ === | ||
{{See also|जोड़ (एसक्यूएल)#बाहरी जोड़}} | {{See also|जोड़ (एसक्यूएल)#बाहरी जोड़}} | ||
जबकि एक जोड़ (या आंतरिक जोड़) के परिणाम में दो संकार्य में मेल खाने वाले ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जोड़ में वे ट्यूपल्स होते हैं और इसके | जबकि एक जोड़ (या आंतरिक जोड़) के परिणाम में दो संकार्य में मेल खाने वाले ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जोड़ में वे ट्यूपल्स होते हैं और इसके अतिरिक्त कुछ संकार्य के गुणों में से प्रत्येक के लिए "पूर्ण" मानों में से एक संकार्य में एक बेजोड़ टुपल का विस्तार करके गठित कुछ टुपल्स होते हैं। बाहरी जोड़ों को अब तक चर्चित उत्कृष्ट संबंधपरक बीजगणित का हिस्सा नहीं माना जाता है।<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> | ||
इस खंड में परिभाषित प्रचालक एक शून्य मान ω के अस्तित्व को मानते हैं, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है, व्यवहार में यह एसक्यूएल में [[Null (SQL)|शून्य]] से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए निर्दिष्ट करने की आवश्यकता है, | इस खंड में परिभाषित प्रचालक एक शून्य मान ω के अस्तित्व को मानते हैं, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है, व्यवहार में यह एसक्यूएल में [[Null (SQL)|शून्य]] से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए निर्दिष्ट करने की आवश्यकता है, कॉड के दृष्टिकोण में चयन द्वारा उपयोग किए जाने वाले प्रस्तावपरक तर्क को [[तीन-मूल्यवान तर्क तक बढ़ाया]] गया है, हालांकि हम इस लेख में उन विवरणों को अलग करते हैं। | ||
तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है, बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। ("बाहरी" शब्द कभी-कभी छोड़ दिया जाता है।) | तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है, बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। ("बाहरी" शब्द कभी-कभी छोड़ दिया जाता है।) | ||
Line 492: | Line 492: | ||
==== बायां बाहरी जुड़ाव (⟕) ==== | ==== बायां बाहरी जुड़ाव (⟕) ==== | ||
बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S [[संबंध]] | बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S [[संबंध]] हैं।{{efn|In [[Unicode]], the Left outer join symbol is ⟕ (U+27D5).}} बाएं बाहरी जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, R में ट्यूपल्स के अलावा (अस्पष्ट कथन) एस में कोई मिलान ट्यूपल नहीं है।{{fact|date=April 2022}} | ||
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके बाएं बाहरी जुड़ाव पर विचार करें, | एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके बाएं बाहरी जुड़ाव पर विचार करें, | ||
Line 607: | Line 607: | ||
'''बाहरी जोड़''' या '''पूर्ण बाहरी जुड़ाव''' प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है। | '''बाहरी जोड़''' या '''पूर्ण बाहरी जुड़ाव''' प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है। | ||
पूर्ण बाहरी | पूर्ण बाहरी जुड़ाव को ''R'' ⟗ ''S'' के रूप में लिखा जाता है जहां ''R'' और ''S'' [[संबंध]] हैं।{{efn|In [[Unicode]], the Full Outer join symbol is ⟗ (U+27D7).}} पूर्ण बाहरी जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, S में ट्यूपल्स के अलावा जिनके पास R में कोई मिलान ट्यूपल्स नहीं हैं और R में ट्यूपल्स हैं जिनके सामान्य विशेषता नामों में S में कोई मिलान ट्यूपल्स नहीं है।{{fact|date=April 2022}} | ||
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके पूर्ण बाहरी जुड़ाव पर विचार करे, | एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके पूर्ण बाहरी जुड़ाव पर विचार करे, | ||
Line 660: | Line 660: | ||
परिणामी संबंध में, R में ट्यूपल्स जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में ट्यूपल्स के साथ एक शून्य मान, ω लेते हैं। S में ट्यूपल्स जिनका R में ट्यूपल्स के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान ω भी लेते हैं। | परिणामी संबंध में, R में ट्यूपल्स जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में ट्यूपल्स के साथ एक शून्य मान, ω लेते हैं। S में ट्यूपल्स जिनका R में ट्यूपल्स के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान ω भी लेते हैं। | ||
पूर्ण बाहरी जोड़ को बाएँ और दाएँ बाहरी जोड़ (और इसलिए प्राकृतिक जुड़ाव और समुच्चय | पूर्ण बाहरी जोड़ को बाएँ और दाएँ बाहरी जोड़ (और इसलिए प्राकृतिक जुड़ाव और समुच्चय सम्मिलन) का उपयोग करके सिम्युलेटे किया जा सकता है, | ||
: R⟗S = (R⟕ S) ∪ (R⟖ S) | : R⟗S = (R⟕ S) ∪ (R⟖ S) | ||
Line 668: | Line 668: | ||
==== समुचच्चयन ==== | ==== समुचच्चयन ==== | ||
इसके अलावा, एक स्तंभ पर विभिन्न कार्यों की गणना करना, जैसे कि इसके तत्वों का योग, अब तक पेश किए गए संबंधपरक बीजगणित का उपयोग करना भी संभव नहीं है। अधिकांश संबंधपरक डेटाबेस प्रणाली के साथ सम्मिलित किए गए पांच समग्र फलन हैं। ये प्रचालन योग, गणना, औसत, अधिकतम और न्यूनतम हैं। संबंधपरक बीजगणित में एक स्कीमा पर समुचच्चयन प्रचालन (''A''<sub>1</sub>, ''A''<sub>2</sub>, ... ''A<sub>n</sub>'') | इसके अलावा, एक स्तंभ पर विभिन्न कार्यों की गणना करना, जैसे कि इसके तत्वों का योग, अब तक पेश किए गए संबंधपरक बीजगणित का उपयोग करना भी संभव नहीं है। अधिकांश संबंधपरक डेटाबेस प्रणाली के साथ सम्मिलित किए गए पांच समग्र फलन हैं। ये प्रचालन योग, गणना, औसत, अधिकतम और न्यूनतम हैं। संबंधपरक बीजगणित में एक स्कीमा पर समुचच्चयन प्रचालन (''A''<sub>1</sub>, ''A''<sub>2</sub>, ... ''A<sub>n</sub>'') निम्नानुसार लिखा जाता है, | ||
:<math>G_1, G_2, \ldots, G_m\ g_{f_1({A_1}'), f_2({A_2}'), \ldots, f_k({A_k}')}\ (r)</math> | :<math>G_1, G_2, \ldots, G_m\ g_{f_1({A_1}'), f_2({A_2}'), \ldots, f_k({A_k}')}\ (r)</math> | ||
जहां प्रत्येक ''A<sub>j</sub>''', 1 ≤ j ≤ k, A | जहां प्रत्येक ''A<sub>j</sub>''', 1 ≤ j ≤ k, A मूल गुणों में से एक है<sub>''i''</sub>, 1 ≤ i ≤ n। | ||
G से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए समुचच्चयन | G से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए समुचच्चयन फलनो की स्वेच्छ संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो समुचच्चयन फलंन पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है। | ||
मान लेते हैं कि हमारे पास {{mono|अकाउंट_नंबर, ब्रांच_नेम}} और शेष नाम से तीन कॉलम के साथ {{mono|अकाउंट }} नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह <sub>{{mono|ब्रांच_नेम}}</sub>G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) लिख सकते हैं। | मान लेते हैं कि हमारे पास {{mono|अकाउंट_नंबर, ब्रांच_नेम}} और शेष नाम से तीन कॉलम के साथ {{mono|अकाउंट }} नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह <sub>{{mono|ब्रांच_नेम}}</sub>G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) लिख सकते हैं। | ||
वर्गीकरण को अक्सर इसके बजाय <sub>{{mono|ब्रांच_नेम}}</sub>ɣ<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) के रूप में लिखा जाता है।<ref name="Garcia-MolinaUllman2009"></ref> | |||
=== | === संक्रामी संवरक === | ||
यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली | यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली प्रतीत होता है, [[संबंध|संबंधों]] पर कुछ सरल और प्राकृतिक संचालक हैं जिन्हें संबंधपरक बीजगणित द्वारा व्यक्त नहीं किया जा सकता है। उनमें से एक द्विआधारी संबंध का [[सकर्मक समापन|संक्रामी संवरक]] है। द्विचर संबंध R को D× D का सबसमुच्चय होने के लिए, एक प्रक्षेत्र D दिया गया है। R का सकर्मक संवरण R<sup>+</sup>, D×D का सबसे छोटा उपसमुच्चय है जिसमें R सम्मिलित है और निम्नलिखित शर्तों को पूरा करता है, | ||
:<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> | ||
हालांकि, एसक्यूएल आधिकारिक तौर पर 1999 से इस तरह के [[पुनरावर्ती प्रश्नों]] का समर्थन करता है, | हालांकि, एसक्यूएल आधिकारिक तौर पर 1999 से इस तरह के [[पुनरावर्ती प्रश्नों]] का समर्थन करता है, चुकी इससे पहले इस दिशा में विक्रेता-विशिष्ट विस्तार थे। | ||
== क्वेरी इष्टमीकरण के लिए बीजगणितीय गुणों का उपयोग == | == क्वेरी इष्टमीकरण के लिए बीजगणितीय गुणों का उपयोग == | ||
[[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] में अक्सर एक [[क्वेरी अनुकूलक]] सम्मिलित होता है जो किसी दिए गए क्वेरी को निष्पादित करने का सबसे कुशल तरीका निर्धारित करने का प्रयास करता है। क्वेरी अनुकूलक संभावित [[क्वेरी योजनाओं]] की गणना करते हैं, उनकी लागत का अनुमान लगाते हैं और सबसे कम अनुमानित लागत वाली योजना चुनते हैं। यदि प्रश्नों को संबंधपरक बीजगणित से प्रचालको द्वारा दर्शाया जाता है, तो क्वेरी अनुकूलक इन प्रचालको के बीजगणितीय गुणों का उपयोग करके प्रारंभिक क्वेरी को फिर से लिखकर संभावित क्वेरी योजनाओं की गणना कर | [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] में अक्सर एक [[क्वेरी अनुकूलक]] सम्मिलित होता है जो किसी दिए गए क्वेरी को निष्पादित करने का सबसे कुशल तरीका निर्धारित करने का प्रयास करता है। क्वेरी अनुकूलक संभावित [[क्वेरी योजनाओं]] की गणना करते हैं, तथा उनकी लागत का अनुमान लगाते हैं और सबसे कम अनुमानित लागत वाली योजना चुनते हैं। यदि प्रश्नों को संबंधपरक बीजगणित से प्रचालको द्वारा दर्शाया जाता है, तो क्वेरी अनुकूलक इन प्रचालको के बीजगणितीय गुणों का उपयोग करके प्रारंभिक क्वेरी को फिर से लिखकर संभावित क्वेरी योजनाओं की गणना कर सकते है। | ||
[[ संबंधपरक प्रश्न | | [[ संबंधपरक प्रश्न | प्रश्नों]] को एक [[ट्री]] के रूप में दर्शाया जा सकता है, जहां | ||
* आंतरिक नोड प्रचालक हैं, | * आंतरिक नोड प्रचालक हैं, | ||
* पत्तियां [[संबंध]] | * पत्तियां [[संबंध]] हैं, | ||
* सबट्री उप-व्यंजक हैं। | * सबट्री उप-व्यंजक हैं। | ||
Line 704: | Line 704: | ||
==== मूल चयन गुण ==== | ==== मूल चयन गुण ==== | ||
चयन [[उदासीन]] (एक ही चयन के कई अनुप्रयोगों का पहले वाले के अलावा कोई अतिरिक्त प्रभाव नहीं है), और | चयन [[उदासीन|वर्गसम]] (एक ही चयन के कई अनुप्रयोगों का पहले वाले के अलावा कोई अतिरिक्त प्रभाव नहीं है), और [[विनिमेय|क्रमविनिमेय]] (आदेश चयन लागू होते हैं, अंतिम परिणाम पर कोई प्रभाव नहीं पड़ता है) है। | ||
#<math>\sigma_{A}(R)=\sigma_{A}\sigma_{A}(R)\,\!</math> | #<math>\sigma_{A}(R)=\sigma_{A}\sigma_{A}(R)\,\!</math> | ||
#<math>\sigma_{A}\sigma_{B}(R)=\sigma_{B}\sigma_{A}(R)\,\!</math> | #<math>\sigma_{A}\sigma_{B}(R)=\sigma_{B}\sigma_{A}(R)\,\!</math> | ||
==== | ==== सम्मिश्र परिस्थितियों के साथ चयनों को तोड़ना ==== | ||
एक चयन जिसकी स्थिति सरल स्थितियों का | एक चयन जिसकी स्थिति सरल स्थितियों का [[संयोजन]] है, वही व्यक्तिगत स्थितियों के साथ चयन के अनुक्रम के बराबर है, और चयन जिसकी स्थिति एक [[संयोजन (व्याकरण)|संयोजन]] है, चयनों के सम्मिलन के बराबर है। इन पहचानों का उपयोग चयनों को संयोजित करने के लिए किया जा सकता है ताकि कम चयनों का मूल्यांकन किया जा सके, या उन्हें विभाजित किया जा सके ताकि घटक चयनों को अलग से स्थानांतरित या अनुकूलित किया जा सके। | ||
#<math>\sigma_{A \land B}(R)=\sigma_{A}(\sigma_{B}(R))=\sigma_{B}(\sigma_{A}(R))</math> | #<math>\sigma_{A \land B}(R)=\sigma_{A}(\sigma_{B}(R))=\sigma_{B}(\sigma_{A}(R))</math> | ||
#<math>\sigma_{A \lor B}(R)=\sigma_{A}(R)\cup\sigma_{B}(R)</math> | #<math>\sigma_{A \lor B}(R)=\sigma_{A}(R)\cup\sigma_{B}(R)</math> | ||
==== चयन और अन्योन्य गुणन ==== | ==== चयन और अन्योन्य गुणन ==== | ||
मूल्यांकन करने के लिए अन्योन्य गुणन सबसे महंगा प्रचालक है। यदि निविष्ट [[संबंध]] | मूल्यांकन करने के लिए अन्योन्य गुणन सबसे महंगा प्रचालक है। यदि निविष्ट [[संबंध|संबंधों]] में N और M पंक्तियाँ हैं, तो परिणाम में <math>NM</math> पंक्तियाँ होंगी। इसलिए, अन्योन्य गुणन प्रचालक को लागू करने से पहले दोनों संकार्य के आकार को कम करना महत्वपूर्ण है। | ||
यह प्रभावी ढंग से किया जा सकता है यदि चयन प्रचालक द्वारा अन्योन्य गुणन का पालन किया जाता है, उदाहरण के लिये <math>\sigma_{A}(R \times P)</math>। सम्मिलन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित | यह प्रभावी ढंग से किया जा सकता है यदि चयन प्रचालक द्वारा अन्योन्य गुणन का पालन किया जाता है, उदाहरण के लिये <math>\sigma_{A}(R \times P)</math>। सम्मिलन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित स्थिति है। यदि चयन प्रचालक द्वारा अन्योन्य गुणन का पालन नहीं किया जाता है, तो हम अन्य चयन नियमों का उपयोग करके व्यंजक ट्री के उच्च स्तरों से चयन को नीचे पुश का प्रयास कर सकते हैं। | ||
उपरोक्त | उपरोक्त स्थिति में सम्मिश्र चयन स्थितियों के बारे में विभाजित नियमों का उपयोग करके स्थिति A को शर्तों B, C और D में विभाजित किया गया है, ताकि <math>A = B \wedge C \wedge D</math> और B में केवल R की विशेषताएँ हों, C में केवल P की विशेषताएँ हैं, और D में A का वह भाग हो जिसमें R और P दोनों की विशेषताएँ हो। ध्यान दें, कि B, C या D संभवतः खाली हैं। तो निम्नलिखित स्थिति होती है, | ||
:<math>\sigma_{A}(R \times P) = \sigma_{B \wedge C \wedge D}(R \times P) = \sigma_{D}(\sigma_{B}(R) \times \sigma_{C}(P))</math> | :<math>\sigma_{A}(R \times P) = \sigma_{B \wedge C \wedge D}(R \times P) = \sigma_{D}(\sigma_{B}(R) \times \sigma_{C}(P))</math> | ||
==== चयन और समुच्चय प्रचालक ==== | ==== चयन और समुच्चय प्रचालक ==== | ||
चयन समुच्चय अंतर, प्रतिच्छेदन और | चयन समुच्चय अंतर, प्रतिच्छेदन और सम्मिलन संचालकों पर [[वितरण]] है। व्यंजक ट्री में समुच्चय संचालन के नीचे चयन को पुश करने के लिए निम्नलिखित तीन नियमों का उपयोग किया जाता है। समुच्चय अंतर और प्रतिच्छेदन प्रचालकों के लिए, परिवर्तन के बाद चयन प्रचालक को केवल एक संकार्य पर लागू करना संभव है। यह फायदेमंद हो सकता है जहां एक संकार्य छोटा होता है, और चयन प्रचालक का मूल्यांकन करने का अतिरिक्त संकार्य के रूप में एक छोटे [[संबंध]] का उपयोग करने के लाभों से अधिक होता है। | ||
#<math>\sigma_{A}(R\setminus P)=\sigma_{A}(R)\setminus \sigma_{A}(P) =\sigma_{A}(R)\setminus P</math> | #<math>\sigma_{A}(R\setminus P)=\sigma_{A}(R)\setminus \sigma_{A}(P) =\sigma_{A}(R)\setminus P</math> | ||
Line 729: | Line 729: | ||
==== चयन और प्रक्षेपण ==== | ==== चयन और प्रक्षेपण ==== | ||
चयन एक प्रक्षेपण के साथ रूपान्तरित होता है और केवल चयन की स्थिति में संदर्भित क्षेत्र प्रक्षेपण में क्षेत्र का सबसमुच्चय हैं। प्रक्षेपण से पहले चयन करना उपयोगी हो सकता है यदि संकार्य में अन्योन्य गुणन सम्मिलित हो। अन्य स्थितियों में, यदि चयन की स्थिति की गणना करना अपेक्षाकृत महंगा है, तो प्रक्षेपण के बाहर चयन को स्थानांतरित करने से उन टुपल्स की संख्या कम हो सकती है जिनका परीक्षण किया जाना चाहिए (चूंकि छोड़े गए क्षेत्रों से उत्पन्न प्रतिलिपि के उन्मूलन के कारण प्रक्षेपण कम टुपल्स उत्पन्न कर सकता है)। | |||
:<math>\pi_{a_1, \ldots ,a_n}(\sigma_A( R )) = \sigma_A(\pi_{a_1, \ldots,a_n}( R ))\text{ where fields in }A \subseteq \{a_1,\ldots,a_n\}</math> | :<math>\pi_{a_1, \ldots ,a_n}(\sigma_A( R )) = \sigma_A(\pi_{a_1, \ldots,a_n}( R ))\text{ where fields in }A \subseteq \{a_1,\ldots,a_n\}</math> | ||
Line 741: | Line 741: | ||
==== प्रक्षेपण और समुच्चय प्रचालक ==== | ==== प्रक्षेपण और समुच्चय प्रचालक ==== | ||
प्रक्षेपण समुच्चय | प्रक्षेपण समुच्चय सम्मिलन पर [[वितरण]] है। | ||
:<math>\pi_{a_1, \ldots, a_n}(R \cup P) = \pi_{a_1, \ldots, a_n}(R) \cup \pi_{a_1, \ldots, a_n}(P). \, </math> | :<math>\pi_{a_1, \ldots, a_n}(R \cup P) = \pi_{a_1, \ldots, a_n}(R) \cup \pi_{a_1, \ldots, a_n}(P). \, </math> | ||
प्रक्षेपण प्रतिच्छेदन पर वितरित नहीं होता | प्रक्षेपण प्रतिच्छेदन और समुच्चय अंतर पर वितरित नहीं होता है। प्रति उदाहरण दिए गए हैं, | ||
:<math>\pi_A(\{ \langle A=a, B=b \rangle \} \cap \{ \langle A=a, B=b' \rangle \}) = \emptyset</math> | :<math>\pi_A(\{ \langle A=a, B=b \rangle \} \cap \{ \langle A=a, B=b' \rangle \}) = \emptyset</math> | ||
Line 754: | Line 754: | ||
जहाँ b को {{var|b'}} से अलग माना जाता है । | जहाँ b को {{var|b'}} से अलग माना जाता है । | ||
=== | === पुनःनामकरण === | ||
==== मूल | ==== मूल पुनःनामकरण गुण ==== | ||
एक चर के क्रमिक नाम बदलने को एकल नाम में संक्षिप्त किया जा सकता है। | एक चर के क्रमिक नाम बदलने को एकल नाम में संक्षिप्त किया जा सकता है। पुनःनामकरण संचालन जिनमें सामान्य रूप से कोई चर नहीं है, उन्हें एक दूसरे के संबंध में स्वेच्छतः पुन: व्यवस्थित किया जा सकता है, जिसका उपयोग निकटवर्ती नाम बदलने के लिए किया जा सकता है ताकि उन्हें संक्षिप्त जा सके। | ||
#<math>\rho_{a / b}(\rho_{b / c}(R)) = \rho_{a / c}(R)\,\!</math> | #<math>\rho_{a / b}(\rho_{b / c}(R)) = \rho_{a / c}(R)\,\!</math> | ||
#<math>\rho_{a / b}(\rho_{c / d}(R)) = \rho_{c / d}(\rho_{a / b}(R))\,\!</math> | #<math>\rho_{a / b}(\rho_{c / d}(R)) = \rho_{c / d}(\rho_{a / b}(R))\,\!</math> | ||
==== | ==== पुनःनामकरण और समुच्चय प्रचालक ==== | ||
पुनःनामकरण समुच्चय अंतर, सम्मिलन और प्रतिच्छेदन पर वितरण है। | |||
#<math>\rho_{a / b}(R \setminus P) = \rho_{a / b}(R) \setminus \rho_{a / b}(P)</math> | #<math>\rho_{a / b}(R \setminus P) = \rho_{a / b}(R) \setminus \rho_{a / b}(P)</math> | ||
#<math>\rho_{a / b}(R \cup P) = \rho_{a / b}(R) \cup \rho_{a / b}(P)</math> | #<math>\rho_{a / b}(R \cup P) = \rho_{a / b}(R) \cup \rho_{a / b}(P)</math> | ||
#<math>\rho_{a / b}(R \cap P) = \rho_{a / b}(R) \cap \rho_{a / b}(P)</math> | #<math>\rho_{a / b}(R \cap P) = \rho_{a / b}(R) \cap \rho_{a / b}(P)</math> | ||
=== | === गुणनफल और सम्मिलन === | ||
कार्तीय | कार्तीय गुणनफल सम्मिलन पर वितरण है। | ||
#<math>(A \times B) \cup (A \times C) = A \times (B \cup C)</math> | #<math>(A \times B) \cup (A \times C) = A \times (B \cup C)</math> | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, [[आईएसबीएल]] बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा | कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, [[आईएसबीएल]] बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा प्रशंसित भी गया है<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 में [[क्रिस्टोफर जे. डेट]] और [[ह्यूग डार्वेन]] ने संबंधपरक डेटाबेस | 1998 में [[क्रिस्टोफर जे. डेट]] और [[ह्यूग डार्वेन]] ने संबंधपरक डेटाबेस सिद्धांत पढ़ाने में उपयोग के लिए ट्यूटोरियल डी नामक एक भाषा प्रस्तावित की, और इसकी क्वेरी भाषा भी आईएसबीएल के विचारों पर आधारित है। [[Rel (DBMS)|रेल]] ट्यूटोरियल डी का कार्यान्वयन है। | ||
यहां तक कि [[एसक्यूएल]] की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि एसक्यूएल ([[तालिका (डेटाबेस)]]) में संचालन वास्तव में [[संबंध]] (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय एसक्यूएल समकक्ष में नहीं हैं ( तर्कसंगत अनुकूलक और/या उपयोगकर्ताओं की हानि के लिए)। एसक्यूएल तालिका प्रारूप एक समुच्चय के बजाय एक बैग ( बहुसमुच्चय) है। उदाहरण के लिए, व्यंजक <math>(R \cup S) \setminus T = (R \setminus T) \cup (S \setminus T)</math> समुच्चय पर संबंधपरक बीजगणित के लिए एक प्रमेय है, लेकिन बैग पर संबंधपरक बीजगणित के लिए नहीं, बैगो पर संबंधपरक बीजगणित | यहां तक कि [[एसक्यूएल]] की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि एसक्यूएल ([[तालिका (डेटाबेस)|तालिकाओं]]) में संचालन वास्तव में [[संबंध]] (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय एसक्यूएल समकक्ष में नहीं हैं ( तर्कसंगत रूप से अनुकूलक और/या उपयोगकर्ताओं की हानि के लिए)। एसक्यूएल तालिका प्रारूप एक समुच्चय के बजाय एक बैग (बहुसमुच्चय) है। उदाहरण के लिए, व्यंजक <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 832: | Line 832: | ||
* [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 एसक्यूएल to Relational Algebra] | * [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating एसक्यूएल to Relational Algebra] | ||
[[Category: | [[Category:All articles with unsourced statements]] | ||
[[Category:Articles with hatnote templates targeting a nonexistent page]] | |||
[[Category:Articles with unsourced statements from April 2022]] | |||
[[Category:Created On 28/02/2023]] | [[Category:Created On 28/02/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Missing redirects]] | |||
[[Category:Multi-column templates]] | |||
[[Category:Pages using div col with small parameter]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Templates using under-protected Lua modules]] | |||
[[Category:Wikipedia fully protected templates|Div col]] | |||
[[Category:संबंधपरक बीजगणित| संबंधपरक बीजगणित ]] | |||
[[Category:संबंधपरक मॉडल]] |
Latest revision as of 16:22, 27 April 2023
डेटाबेस सिद्धांत में, संबंधपरक बीजगणित एक सिद्धांत है जो मॉडलिंग डेटा के लिए बीजगणितीय संरचनाओं का उपयोग करता है, और एक अच्छी तरह से स्थापित शब्दार्थ विज्ञान के साथ उस पर प्रश्नों को परिभाषित करता है। यह सिद्धांत एडगर एफ कॉड द्वारा पेश किया गया था।
संबंधपरक बीजगणित का मुख्य अनुप्रयोग संबंधपरक डेटाबेस के लिए एक सैद्धांतिक आधार प्रदान करना है, विशेष रूप से पृच्छा भाषा जैसे डेटाबेस के लिए, जिनमें से एसक्यूएल प्रमुख है। संबंधपरक डेटाबेस सारणीबद्ध डेटा को संबंधों के रूप में प्रदर्शित करते हैं। संबंधपरक डेटाबेस पर प्रश्न प्रायः समान रूप से सारणीबद्ध डेटा की पुनरावृत्ति करते हैं जिसे संबंध के रूप में दर्शाया गया है।
संबंधपरक बीजगणित का मुख्य उद्देश्य उन प्रचालको को परिभाषित करना है जो निर्गत संबंध में एक या एक से अधिक निविष्ट संबंधों को बदल देते हैं। यह देखते हुए कि ये प्रचालक संबंधों को निविष्ट के रूप में स्वीकार करते हैं और निर्गत के रूप में संबंधों का निर्माण करते हैं, उन्हें जोड़ा जा सकता है और संभावित सम्मिश्र प्रश्नों को व्यक्त करने के लिए उनका उपयोग किया जा सकता है जो संभावित रूप से कई निविष्ट संबंधों (जिनका डेटा डेटाबेस में संग्रहीत होता है) को एकल निर्गत संबंधों (क्वेरी परिणाम) में परिवर्तित करते है।
अंगीय प्रचालक निविष्ट के रूप में एकल संबंध स्वीकार करते हैं, उदाहरणों में एक निविष्ट संबंध से कुछ विशेषताओं (स्तंभों) या टुपल्स (पंक्तियों) को फ़िल्टर करने के लिए प्रचालक सम्मिलित हैं।
द्वि आधारी प्रचालक निविष्ट दो संबंधों के रूप में स्वीकार करते हैं, ऐसे प्रचालक दो निविष्ट संबंधों को एक एकल निर्गत संबंध में जोड़ते हैं, उदाहरण के लिए, किसी भी संबंध में पाए जाने वाले सभी ट्यूपल्स को लेना, दूसरे संबंध में पाए गए पहले संबंध से ट्यूपल्स को हटाना, और पहले संबंध के टुपल्स को कुछ शर्तों से मेल खाने वाले दूसरे संबंध में टुपल्स के साथ विस्तारित करना, इत्यादि।
अन्य अधिक उन्नत प्रचालकों को भी सम्मिलित किया जा सकता है, जहां कुछ प्रचालकों का समावेश या बहिष्करण बीजगणित के एक परिवार को जन्म देता है।
प्रस्तावना
संबंधपरक बीजगणित को 1970 में डेटा के एडगर एफ. कोड के संबंधपरक प्रारूप के प्रकाशन तक शुद्ध गणित के बाहर बहुत कम ध्यान दिया गया था। कोड ने डेटाबेस क्वेरी भाषा के आधार के रूप में इस तरह के बीजगणित का प्रस्ताव किया। (अनुभाग कार्यान्वयन देखें।)
कॉड के बीजगणित के पांच आदिम संचालक चयन (संबंधपरक बीजगणित), प्रक्षेपण (संबंधपरक बीजगणित), कार्तीय गुणन (जिसे अन्योन्य गुणन या अन्योन्य संबंध भी कहा जाता है), समुच्चय सिद्धांत और समुच्चय अंतर हैं।
समुच्चय प्रचालक
संबंधपरक बीजगणित समुच्चय सिद्धांत से समुच्चय सर्वनिष्ट, समुच्चय अंतर और कार्तीय गुणन का उपयोग करता है, लेकिन इन प्रचालकों के लिए अतिरिक्त व्यवरोध को जोड़ता है।
समुच्चय सर्वनिष्ट और समुच्चय अन्तर के लिए, इसमें सम्मिलित दो संबंध सर्वनिष्ट-संगत होने चाहिए- अर्थात, दो संबंधों में समान गुणों का समुच्चय होना चाहिए। क्योंकि समुच्चय प्रतिच्छेदन को समुच्चय सर्वनिष्ट और समुच्चय अन्तर के संदर्भ में परिभाषित किया गया है, समुच्चय प्रतिच्छेदन में सम्मिलित दो संबंध भी सर्वनिष्ठ-संगत होने चाहिए।
कार्तीय गुणनफल को परिभाषित करने के लिए, सम्मिलित दो संबंधों में असंयुक्त शीर्षलेख होने चाहिए—अर्थात्, उनके पास एक सामान्य गुण शीर्षक नहीं होना चाहिए।
इसके अलावा, कार्तीय गुणन को समुच्चय सिद्धांत में एक से अलग तरीके से परिभाषित किया गया है, इस अर्थ में कि प्रचालक के उद्देश्य के लिए टुपल्स को "उथला" माना जाता है। अर्थात्, m-टुपल्स के समुच्चय के साथ n-टुपल्स के समुच्चय का कार्तीय गुणन "सपाट" (n + m)-टुपल्स का एक समुच्चय उत्पन्न करता है (जबकि मूल समुच्चय सिद्धांत ने 2-टुपल्स का एक समुच्चय निर्धारित किया होगा, प्रत्येक में एक n-टुपल और एक m-टुपल होगा)। अधिक औपचारिक रूप से, R × S को इस प्रकार परिभाषित किया गया है,
प्रक्षेपण (Π)
एक प्रक्षेपण एक एकल संक्रिया है जिसे के रूप में लिखा जाता है जहां गुण नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को उस समुच्चय के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी टुपल्स समुच्चय तक सीमित होते हैं।
नोट, जब एसक्यूएल मानक में कार्यान्वित किया जाता है तो "डिफ़ॉल्ट प्रक्षेपण" एक समुच्चय के बजाय एक मल्टीसेट लौटाता है, और डुप्लीकेट डेटा को खत्म करने के लिए Π प्रक्षेपण भिन्न
कीवर्ड को जोड़कर प्राप्त किया जाता है।
चयन (σ)
एक व्यापकीकृत चयन एक एकल संक्रिया है जिसे के रूप में लिखा जाता है जहाँ φ एक प्रस्तावनात्मक सूत्र है जिसमें सामान्य चयन में अनुमत परमाणु होते हैं और तार्किक संकारक (तार्किक संयोजन), (तार्किक संयोजन) और (निषेध) होते हैं। यह चयन R में उन सभी ट्यूपल्स का चयन करता है जिनके लिए φ धारण करता है।
पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को के रूप में लिखा जा सकता है। परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी, जहां मित्र सत्य है या व्यवसाय संपर्क कहां सत्य है।
पुनःनामकरण (ρ)
एक पुनःनामकरण एक एकल संक्रिया है जिसे के रूप में लिखा जाता है, जहां परिणाम R के समान है, इसके अलावा सभी ट्यूपल्स में b विशेषता का नाम बदलकर a विशेषता कर दिया जाता है। इसका उपयोग केवल किसी संबंध या स्वयं संबंध की विशेषता का नाम बदलने के लिए किया जाता है।
किसी संबंध में "isFriend" विशेषता का नाम बदलकर "isBusinessContact" करने के लिए, का उपयोग किया जा सकता है।
संकेतन भी है, जहाँ R का नाम बदलकर x और विशेषताओं का नाम बदलकर कर दिया गया है।[1]
जोड़ और जोड़ की तरह प्रचालक
प्राकृतिक जुड़ाव (⋈)
प्राकृतिक जोड़ (⋈) एक द्विआधारी प्रचालक है जिसे (R ⋈ S) के रूप में लिखा जाता है जहां R और S संबंध हैं।[lower-alpha 1] प्राकृतिक जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के समान हैं। एक उदाहरण के लिए एम्प्लॉई और विभाग और उनके प्राकृतिक जुड़ाव पर विचार करें,[citation needed]
|
|
|
ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन विभाग दिखाई देता है।
इसका उपयोग संबंधों की संरचना को परिभाषित करने के लिए भी किया जा सकता है। उदाहरण के लिए, कर्मचारी और विभाग की संरचना उनका जुड़ाव है जैसा कि ऊपर दिखाया गया है, सामान्य विशेषता विभाग के नाम को छोड़कर सभी पर अनुमानित है। श्रेणी सिद्धांत में, जुड़ना ठीक फाइबर गुणन है।
प्राकृतिक जोड़ यकीनन सबसे महत्वपूर्ण प्रचालकों में से एक है क्योंकि यह तार्किक एएनडी प्रचालक का संबंधपरक समकक्ष है। ध्यान दें कि यदि एएनडी द्वारा संयोजित किए गए प्रत्येक दो विधेय में एक ही चर प्रकट होता है, तो वह चर एक ही चीज़ के लिए खड़ा होता है और दोनों दिखावे को हमेशा एक ही मान से प्रतिस्थापित किया जाना चाहिए (यह तार्किक एएनडी की निष्क्रियता का परिणाम है)। विशेष रूप से, प्राकृतिक जुड़ाव उन संबंधों के संयोजन की अनुमति देता है जो एक भिन्न कुंजी से जुड़े होते हैं। उदाहरण के लिए, ऊपर दिए गए उदाहरण में एक भिन्न कुंजी शायद कर्मचारी.विभाग के नाम से विभाग.विभाग के नाम तक रखती है और फिर कर्मचारी और विभाग का स्वाभाविक जुड़ाव सभी कर्मचारियों को उनके विभागों से जोड़ता है। यह काम करता है क्योंकि भिन्न कुंजी समान नाम वाले गुणों के बीच होती है। यदि यह स्थिति नहीं है जैसे कि विभाग प्रबंधक से कर्मचारी का नाम की भिन्न कुंजी में, तो स्वाभाविक रूप से सम्मिलित होने से पहले इन स्तंभों का नाम बदला जाना चाहिए। इस तरह के जुड़ाव को कभी-कभी 'इक्विजोड़' भी कहा जाता है (θ-जोड़ देखें)।
अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है,
-
(1)
जहाँ फन (t) एक विधेय (गणित) है जो एक संबंध t के लिए सत्य है (गणितीय अर्थ में) यदि t एक फलन है (अर्थात, t किसी भी गुण को एकाधिक मानों में मैप नहीं करता है)। आमतौर पर यह आवश्यक है कि R और S में कम से कम एक सामान्य विशेषता होनी चाहिए, लेकिन अगर यह बाधा छोड़ी जाती है, और R और S में कोई सामान्य विशेषता नहीं है, तो प्राकृतिक जुड़ाव बिल्कुल कार्तीय गुणन बन जाता है।
कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि c1,...,cm R और S के लिए सामान्य विशेषता नाम हैं,r1,...,rn विशेषता नाम R और S के लिए अद्वितीय हैं और s1,...,sk S के लिए अद्वितीय विशेषता नाम हैं। इसके अलावा, मान लें कि विशेषता नाम x1,...,xm न तो R में हैं और न ही S में हैं। पहले चरण में S में सामान्य विशेषता नामों का पुनःनामकरण किया जा सकता है,
-
(2)
फिर हम कार्तीय गुणन लेते हैं और जुड़ने वाले टुपल्स का चयन करते हैं,
-
(3)
अंत में हम पुनर्नामित विशेषताओं से छुटकारा पाने के लिए एक प्रक्षेपण लेते हैं,
-
(4)
θ-जुड़ना और इक्वीजोड़
टेबल कार और नाव पर विचार करें जो कारों और नावों के प्रारूप और उनकी संबंधित कीमतों को सूचीबद्ध करती हैं। मान लीजिए एक ग्राहक एक कार और एक नाव खरीदना चाहता है, लेकिन वह कार की तुलना में नाव के लिए अधिक पैसा खर्च नहीं करना चाहता। θ-जुड़ना (⋈θ) विधेय कार मूल्य ≥ नाव मूल्य पर पंक्तियों के चपटे जोड़े का उत्पादन करता है जो विधेय को संतुष्ट करता है। ऐसी स्थिति का उपयोग करते समय जहां विशेषताएँ समान हों, उदाहरण के लिए मूल्य, तब स्थिति को मूल्य = मूल्य के रूप में निर्दिष्ट किया जा सकता है।
|
|
|
टुपल्स को दो संबंधों से संयोजित करने के लिए जहां संयोजन की स्थिति केवल साझा विशेषताओं की समानता नहीं है, इसमें सम्मिलित होने वाले प्रचालक का अधिक सामान्य रूप होना सुविधाजनक है, जो θ-जोड़ (या थीटा-जोड़) है। θ-जोड़ एक द्विआधारी संकारक है जिसे या के रूप में लिखा जाता है जहाँ a और b विशेषता नाम हैं, θ समुच्चय {<, ≤, =, ≠, >, ≥} में एक द्विआधारी संबंधपरक प्रचालक है, υ एक मान स्थिरांक है, और R और S संबंध हैं। इस संचालन के परिणाम में R और S में ट्यूपल्स के सभी संयोजन सम्मिलित हैं जो θ को संतुष्ट करते हैं। θ-जोड़ का परिणाम केवल तभी परिभाषित किया जाता है जब S और R के शीर्षलेख अलग होते हैं, अर्थात इसमें एक सामान्य विशेषता नहीं होती है।
मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है
- R ⋈θ S = σθ(R × S)
यदि प्रचालक θ समानता प्रचालक (=) है तो इस जुड़ाव को 'इक्विजोड़' भी कहा जाता है।
ध्यान दें, हालाँकि, एक कंप्यूटर भाषा जो प्राकृतिक जुड़ने और चयन प्रचालकों का समर्थन करती है, उसे θ-जुड़ने की भी आवश्यकता नहीं होती है, क्योंकि यह एक प्राकृतिक जुड़ाव के परिणाम से चयन द्वारा प्राप्त किया जा सकता है (जो कोई साझा विशेषता नहीं होने पर कार्तीय गुणन को पतित करता है)।
एसक्यूएल कार्यान्वयन में, एक विधेय पर सम्मिलित होने को आमतौर पर एक आंतरिक जुड़ाव कहा जाता है, और ऑन कीवर्ड पंक्तियों को फ़िल्टर करने के लिए उपयोग किए जाने वाले विधेय को निर्दिष्ट करने की अनुमति देता है। यह नोट करना महत्वपूर्ण है, चपटा कार्तीय गुणन बनाना और फिर पंक्तियों को फ़िल्टर करना अवधारणात्मक रूप से सही है, लेकिन एक कार्यान्वयन ज्वाइन क्वेरी को गति देने के लिए अधिक परिष्कृत डेटा संरचनाओं का उपयोग करेगा।
सेमिजोड़ (⋉ और ⋊)
बायाँ सेमीजोड़ प्राकृतिक जोड़ के समान एक जोड़ है और इसे लिखा जाता है, जहाँ और संबंध (डेटाबेस) हैं।[lower-alpha 2] परिणाम में सभी ट्यूपल्स का समुच्चय है, जिसके लिए में एक ट्यूपल् है जो उनके सामान्य गुण नामों के बराबर है। प्राकृतिक जुड़ाव से अंतर यह है कि के अन्य कॉलम दिखाई नहीं देते हैं। उदाहरण के लिए, कर्मचारी और विभाग और उनके सेमीजोड़ टेबल पर विचार करें,[citation needed]
|
|
|
अधिक औपचारिक रूप से सेमीजोड़ के शब्दार्थ को इस रूप में परिभाषित किया जा सकता है,
जहां प्राकृतिक जोड़ की परिभाषा के अनुसार है।
निम्नानुसार प्राकृतिक जुड़ाव का उपयोग करके सेमीजोड़ का अनुकरण किया जा सकता है। यदि के गुण नाम हैं, तो
चूँकि हम मूल संचालकों के साथ प्राकृतिक जुड़ाव का अनुकरण कर सकते हैं, इसलिए यह इस प्रकार है कि यह सेमीजोड़ के लिए भी लागू होता है।
कॉड के 1970 के पेपर में, सेमीजोड़ को प्रतिबंध कहा जाता है।[2]
एंटीजोड़ (▷)
एंटीजोड़, R ▷ S के रूप में लिखा जाता है जहाँ R और S संबंध हैं,[lower-alpha 3] सेमिजोड़ के समान है, लेकिन एक एंटीजोड़ का नतीजा R में केवल वे ट्यूपल्स हैं जिनके लिए S में कोई ट्यूपल नहीं है जो उनके सामान्य विशेषता नामों के बराबर है।[citation needed]
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके एंटीजोड़ पर विचार करें,
|
|
|
एंटीजोड़ को औपचारिक रूप से निम्नानुसार परिभाषित किया गया है,
- R ▷ S = { t : t ∈ R ∧ ¬∃s ∈ S(Fun (t ∪ s)) }
या
- R ▷ S = { t : t ∈ R, S का कोई ट्यूपल्स नहीं है जो फन (t ∪ s) को संतुष्ट करता हो
जहां फन (t ∪ s) प्राकृतिक जुड़ाव की परिभाषा के अनुसार है।
एंटीजोड़ को सेमीजोड़ के पूरक के रूप में भी परिभाषित किया जा सकता है,
-
R ▷ S = R − R ⋉ S
(5)
इसे देखते हुए, एंटीजोड़ को कभी-कभी एंटी-सेमीजोड़ कहा जाता है, और एंटीजोड़ प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजोड़ प्रतीक के रूप में लिखा जाता है।
विभाजन (÷)
विभाजन एक द्वि-आधारी संक्रिया है जिसे R ÷ S के रूप में लिखा जाता है। विभाजन सीधे एसक्यूएल में लागू नहीं होता है। परिणाम में R में ट्यूपल्स के प्रतिबंध R के लिए अद्वितीय विशेषता नाम हैं, अर्थात, R के शीर्षलेख में, लेकिन S के शीर्षलेख में नहीं, जिसके लिए यह माना जाता है कि S में ट्यूपल्स के साथ उनके सभी संयोजन R में मौजूद हैं। एक उदाहरण के लिए पूर्ण तालिकाएँ, डीबी प्रोजेक्ट और उनका विभाजन देखें,
|
|
|
यदि डीबी प्रोजेक्ट में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है,
-
R ÷ S = { t[a1,...,an] : t ∈ R ∧ ∀s ∈ S ( (t[a1,...,an] ∪ s) ∈ R) }
(6)
जहाँ {a1,...,an} विशेषता नामों का समुच्चय है जो R लिए अद्वितीय है और t [a1,...,an] इस समुच्चय के लिए t का प्रतिबंध है। आमतौर पर यह आवश्यक है कि S के शीर्षलेख में गुण नाम R के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा।
मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि a1,...,an गुण नाम R के लिए अद्वितीय हैं और b1,...,bm S के गुण नाम हैं। पहले चरण में हम R को इसके अद्वितीय गुण नामों पर प्रक्षेपित करते हैं और S में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं,
- T := πa1,...,an(R) × S
पिछले उदाहरण में, T एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 T में।
- EG, सबसे पहले, आइए दिखाते हैं कि "पूर्ण" में "श्रेणी" नामक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रक्षेपित करना चाहिए। वास्तव में इस चरण में हम "कार्य" को R से भी छोड़ सकते हैं, तथा गुणा इसे वापस रखता है।
- T:= πछात्र(R) × S // दूसरों को छोड़कर, यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में R में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है)
|
अगले चरण में हम R को T से घटाते हैं
संबंध,
- U := T - R
U में हमारे पास संभावित संयोजन हैं जो R में "हो सकते थे", लेकिन नहीं थे।
- EG, फिर से अनुमानों के साथ - T और R को समान गुण नाम/शीर्षक रखने की आवश्यकता है।
- U := T − πछात्र, कार्य(R) // यह हमें एक लापता सूची देता है।
|
|
|
इसलिए यदि हम अब R के लिए अद्वितीय विशेषता नामों पर प्रक्षेपण लेते हैं
तब हमारे पास R में टुपल्स का प्रतिबंध है जिसके लिए नहीं S में ट्यूपल्स वाले सभी संयोजन R में मौजूद थे,
- V := πa1,...,an(U)
-
- ईजी: प्रोजेक्ट यू को केवल प्रश्नगत विशेषताओं (छात्रों) तक सीमित करें (विद्यार्थी)
- वि:= πStudent(में)
|
तो जो किया जाना बाकी है, वह R के प्रक्षेपण को उसके विशिष्ट गुण नामों पर ले जाता है और उन्हें V में घटा देता है,
- W:= πa1,...,an(R) − V
- EG: W : = πStudent(R) - V।
|
|
|
सामान्य विस्तार
अभ्यास में ऊपर वर्णित उत्कृष्ट संबंधपरक बीजगणित को विभिन्न संक्रियाओं जैसे बाहरी जोड़, योग संचालन और यहां तक कि सकर्मक संवरण के साथ विस्तारित किया गया है।[3]
बाहरी जोड़
जबकि एक जोड़ (या आंतरिक जोड़) के परिणाम में दो संकार्य में मेल खाने वाले ट्यूपल्स के संयोजन से बनने वाले ट्यूपल्स होते हैं, एक बाहरी जोड़ में वे ट्यूपल्स होते हैं और इसके अतिरिक्त कुछ संकार्य के गुणों में से प्रत्येक के लिए "पूर्ण" मानों में से एक संकार्य में एक बेजोड़ टुपल का विस्तार करके गठित कुछ टुपल्स होते हैं। बाहरी जोड़ों को अब तक चर्चित उत्कृष्ट संबंधपरक बीजगणित का हिस्सा नहीं माना जाता है।[4]
इस खंड में परिभाषित प्रचालक एक शून्य मान ω के अस्तित्व को मानते हैं, जिसे हम परिभाषित नहीं करते हैं, जिसका उपयोग भरण मूल्यों के लिए किया जाता है, व्यवहार में यह एसक्यूएल में शून्य से संबंधित है। परिणामी तालिका पर बाद के चयन कार्यों को अर्थपूर्ण बनाने के लिए, अर्थपूर्ण अर्थ को शून्य करने के लिए निर्दिष्ट करने की आवश्यकता है, कॉड के दृष्टिकोण में चयन द्वारा उपयोग किए जाने वाले प्रस्तावपरक तर्क को तीन-मूल्यवान तर्क तक बढ़ाया गया है, हालांकि हम इस लेख में उन विवरणों को अलग करते हैं।
तीन बाहरी जुड़ने वाले प्रचालकों को परिभाषित किया गया है, बायां बाहरी जुड़ाव, दायां बाहरी जुड़ाव और पूर्ण बाहरी जुड़ाव। ("बाहरी" शब्द कभी-कभी छोड़ दिया जाता है।)
बायां बाहरी जुड़ाव (⟕)
बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S संबंध हैं।[lower-alpha 4] बाएं बाहरी जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, R में ट्यूपल्स के अलावा (अस्पष्ट कथन) एस में कोई मिलान ट्यूपल नहीं है।[citation needed]
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके बाएं बाहरी जुड़ाव पर विचार करें,
|
|
|
परिणामी संबंध में, S में ट्यूपल्स जिनका R में ट्यूपल्स के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान ω लेते हैं।
चूंकि विभाग में वित्त या कार्यकारी के विभाग नाम के साथ कोई ट्यूपल नहीं है, इसलिए परिणामी संबंध में ω होते हैं जहां कर्मचारी में ट्यूपल के पास वित्त या कार्यकारी विभाग का नाम होता है।
मान लीजिए r1, r2, ..., rn संबंध R के गुण हों और {(ω, ..., ω)} उन विशेषताओं पर सिंगलटन संबंध हैं जो संबंध S के लिए अद्वितीय हैं (जो R के गुण नहीं हैं)। फिर बाएं बाहरी जोड़ को प्राकृतिक जुड़ाव (और इसलिए बुनियादी प्रचालकों का उपयोग करके) के रूप में निम्नानुसार वर्णित किया जा सकता है,
दायां बाहरी जोड़ (⟖)
दायाँ बाहरी जुड़ाव लगभग बाएँ बाहरी जुड़ाव के समान व्यवहार करता है, लेकिन तालिकाओं की भूमिकाएँ बदल जाती हैं।
संबंध R और S के दाहिने बाहरी जोड़ को R ⟖ S लिखा जाता है।[lower-alpha 5] सही बाहरी जुड़ाव का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो S में ट्यूपल्स के अलावा उनके सामान्य विशेषता नामों पर समान हैं, जिनमें R में कोई मिलान ट्यूपल्स नहीं है।[citation needed]
उदाहरण के लिए, कर्मचारी और विभाग और उनके दाहिने बाहरी जुड़ाव पर विचार करें,
|
|
|
परिणामी संबंध में, R में ट्यूपल्स जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में ट्यूपल्स के साथ एक शून्य मान, ω लेते हैं।
चूंकि उत्पादन के विभाग का नाम वाले कर्मचारी में कोई ट्यूपल्स नहीं है, इसलिए परिणामी संबंध के नाम और कर्मचारी आईडी विशेषताओं में ω होते हैं, जहां विभाग के ट्यूपल्स में उत्पादन का विभाग का नाम था।
मान लीजिए S1, S2, ..., Sn संबंध S के गुण हैं और {(ω, ..., ω)} उन विशेषताओं पर एकल संबंध हैं जो संबंध R के लिए अद्वितीय हैं (जो S के गुण नहीं हैं)। फिर, जैसा कि बाएँ बाहरी जोड़ के साथ होता है, दाएँ बाहरी जोड़ को प्राकृतिक जोड़ का उपयोग करके अनुकरण किया जा सकता है,
पूर्ण बाहरी जुड़ाव (⟗)
बाहरी जोड़ या पूर्ण बाहरी जुड़ाव प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है।
पूर्ण बाहरी जुड़ाव को R ⟗ S के रूप में लिखा जाता है जहां R और S संबंध हैं।[lower-alpha 6] पूर्ण बाहरी जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, S में ट्यूपल्स के अलावा जिनके पास R में कोई मिलान ट्यूपल्स नहीं हैं और R में ट्यूपल्स हैं जिनके सामान्य विशेषता नामों में S में कोई मिलान ट्यूपल्स नहीं है।[citation needed]
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके पूर्ण बाहरी जुड़ाव पर विचार करे,
|
|
|
परिणामी संबंध में, R में ट्यूपल्स जिनके सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, S में ट्यूपल्स के साथ एक शून्य मान, ω लेते हैं। S में ट्यूपल्स जिनका R में ट्यूपल्स के साथ सामान्य विशेषता नामों में कोई सामान्य मान नहीं है, एक शून्य मान ω भी लेते हैं।
पूर्ण बाहरी जोड़ को बाएँ और दाएँ बाहरी जोड़ (और इसलिए प्राकृतिक जुड़ाव और समुच्चय सम्मिलन) का उपयोग करके सिम्युलेटे किया जा सकता है,
- R⟗S = (R⟕ S) ∪ (R⟖ S)
प्रक्षेत्र संगणनाओं के लिए संचालन
अब तक पेश किए गए संबंधपरक बीजगणित में ऐसा कुछ भी नहीं है जो डेटा प्रक्षेत्र पर संगणना की अनुमति दे (समानता से जुड़े प्रस्तावात्मक भावों के मूल्यांकन के अलावा)। उदाहरण के लिए, अब तक शुरू किए गए बीजगणित का उपयोग करके एक व्यंजक लिखना संभव नहीं है जो संख्याओं को दो स्तंभों से गुणा करेगा, उदाहरण के लिए कुल मूल्य प्राप्त करने के लिए मात्रा के साथ एक इकाई मूल्य। व्यावहारिक क्वेरी भाषाओं में ऐसे गुण होते हैं, उदाहरण के लिय एसक्यूएल चयन परिणाम में नए कॉलम को परिभाषित करने की अनुमति देता है यूनिट_कीमत * मात्रा को टी से कुल_कीमत के रूप में चुनें
, और इसी तरह की सुविधा ट्यूटोरियल डी के एक्सटेंड
कीवर्ड द्वारा अधिक स्पष्ट रूप से प्रदान की जाती है।[5] डेटाबेस सिद्धांत में, इसे विस्तारित प्रक्षेपण कहा जाता है।[6]: 213
समुचच्चयन
इसके अलावा, एक स्तंभ पर विभिन्न कार्यों की गणना करना, जैसे कि इसके तत्वों का योग, अब तक पेश किए गए संबंधपरक बीजगणित का उपयोग करना भी संभव नहीं है। अधिकांश संबंधपरक डेटाबेस प्रणाली के साथ सम्मिलित किए गए पांच समग्र फलन हैं। ये प्रचालन योग, गणना, औसत, अधिकतम और न्यूनतम हैं। संबंधपरक बीजगणित में एक स्कीमा पर समुचच्चयन प्रचालन (A1, A2, ... An) निम्नानुसार लिखा जाता है,
जहां प्रत्येक Aj', 1 ≤ j ≤ k, A मूल गुणों में से एक हैi, 1 ≤ i ≤ n।
G से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए समुचच्चयन फलनो की स्वेच्छ संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो समुचच्चयन फलंन पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है।
मान लेते हैं कि हमारे पास अकाउंट_नंबर, ब्रांच_नेम और शेष नाम से तीन कॉलम के साथ अकाउंट नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह ब्रांच_नेमGमैक्स(बैलेंस )(अकाउंट ) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल Gमैक्स(बैलेंस )(अकाउंट ) लिख सकते हैं।
वर्गीकरण को अक्सर इसके बजाय ब्रांच_नेमɣमैक्स(बैलेंस )(अकाउंट ) के रूप में लिखा जाता है।[6]
संक्रामी संवरक
यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली प्रतीत होता है, संबंधों पर कुछ सरल और प्राकृतिक संचालक हैं जिन्हें संबंधपरक बीजगणित द्वारा व्यक्त नहीं किया जा सकता है। उनमें से एक द्विआधारी संबंध का संक्रामी संवरक है। द्विचर संबंध R को D× D का सबसमुच्चय होने के लिए, एक प्रक्षेत्र D दिया गया है। R का सकर्मक संवरण 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]
यह भी देखें
- कार्तीय गुणन
- डी4 (प्रोग्रामिंग भाषा) (डी का कार्यान्वयन)
- डेटाबेस
- सापेक्ष का तर्क
- ऑब्जेक्ट-रोल मॉडलिंग
- प्रक्षेप (गणित)
- प्रक्षेपण (संबंधपरक बीजगणित)
- प्रोजेक्शन (समुच्चय सिद्धांत)
- संबंध (गणित)
- संबंध (डेटाबेस)
- संबंध बीजगणित
- संबंध संयोजन
- संबंध निर्माण
- संबंधपरक कैलकुलस
- संबधपरक डेटाबेस
- संबंधपरक प्रारूप
- संबंधों का सिद्धांत
- त्रिक संबंध
- त्रिक संबंधपरक कैलकुलस
- एसक्यूएल
- डेटा लॉग
- कॉड की प्रमेय
टिप्पणियाँ
- ↑ In Unicode, the bowtie symbol is ⋈ (U+22C8).
- ↑ In Unicode, the ltimes symbol is ⋉ (U+22C9). The rtimes symbol is ⋊ (U+22CA)
- ↑ In Unicode, the Antijoin symbol is ▷ (U+25B7).
- ↑ In Unicode, the Left outer join symbol is ⟕ (U+27D5).
- ↑ In Unicode, the Right outer join symbol is ⟖ (U+27D6).
- ↑ In Unicode, the Full Outer join symbol is ⟗ (U+27D7).
संदर्भ
- ↑ 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) - ↑ Codd, E.F. (June 1970). "बड़े साझा डेटा बैंकों के लिए डेटा का एक संबंधपरक मॉडल". Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. S2CID 207549016.
- ↑ M. Tamer Özsu; Patrick Valduriez (2011). वितरित डेटाबेस सिस्टम के सिद्धांत (3rd ed.). Springer. p. 46. ISBN 978-1-4419-8833-1.
- ↑ Patrick O'Neil; Elizabeth O'Neil (2001). Database: Principles, Programming, and Performance, Second Edition. Morgan Kaufmann. p. 120. ISBN 978-1-55860-438-4.
- ↑ 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.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.
- ↑ 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.
- ↑ 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.
- Imieliński, T.; Lipski, W. (1984). "The relational model of data and cylindric algebras". Journal of Computer and System Sciences. 28: 80–102. doi:10.1016/0022-0000(84)90077-1. (For relationship with cylindric algebras).
बाहरी संबंध
- RAT. Software Relational Algebra Translator to SQL
- Lecture Videos: Relational Algebra Processing - An introduction to how database systems process relational algebra
- Lecture Notes: Relational Algebra – A quick tutorial to adapt एसक्यूएल queries into relational algebra
- Relational – A graphic implementation of the relational algebra
Query Optimization(Page deleted; Closest alternatives: Stएएनडीford Query Optimization 2, Microsoft research Query Optimization in relational systems, Stanford paper: Query Optimization)This paper is an introduction into the use of the relational algebra in optimizing queries, एएनडी includes numerous citations for more in-depth study.- Relational Algebra System for Oracle एएनडी Microsoft एसक्यूएल Server
- Pireal – An experimental educational tool for working with Relational Algebra
- DES – An educational tool for working with Relational Algebra एएनडी other formal languages
- RelaX - Relational Algebra Calculator (open-source software available as an online service without registration)
- RA: A Relational Algebra Interpreter
- Translating एसक्यूएल to Relational Algebra