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

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


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


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


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


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


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


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


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


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


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


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


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


<math display=block>R\times S:=\{(r_1,r_2,\dots,r_n,s_1,s_2,\dots,s_m)|(r_1,r_2,\dots,r_n)\in R, (s_1,s_2,\dots,s_m)\in S\}</math>
<math display=block>R\times S:=\{(r_1,r_2,\dots,r_n,s_1,s_2,\dots,s_m)|(r_1,r_2,\dots,r_n)\in R, (s_1,s_2,\dots,s_m)\in S\}</math>
कार्तीय उत्पाद की प्रमुखता इसके कारकों की प्रमुखताओं का गुणनफल है, अर्थात |R × S| = |आर| × |एस|.
कार्तीय गुणनफल की प्रमुखता इसके गुणको की प्रमुखताओं का गुणनफल है, अर्थात |R × S| = |R| × |S|


=== प्रोजेक्शन ({{math|&Pi;}}) ===
=== प्रक्षेपण ({{math|&Pi;}}) ===
{{Main|Projection (relational algebra)}}
{{Main|प्रक्षेपण (संबंधपरक बीजगणित)}}
एक प्रक्षेपण एक [[ एकात्मक ऑपरेशन ]] है जिसे लिखा जाता है <math>\Pi_{a_1, \ldots,a_n}( R )</math> कहाँ <math>a_1,\ldots,a_n</math> विशेषता नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को समुच्चय (गणित) के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी टुपल्स समुच्चय तक सीमित होते हैं <math>\{a_1,\ldots,a_n\}</math>.


नोट: जब एसक्यूएल मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रोजेक्शन एक समुच्चय के बजाय एक [[ multiset ]] लौटाता है, और {{math|&Pi;}} डुप्लीकेट डेटा को खत्म करने के लिए प्रोजेक्शन सेलेक्ट (एसक्यूएल) के जोड़ से प्राप्त किया जाता है<code>DISTINCT</code> कीवर्ड।
एक प्रक्षेपण एक[[ एकात्मक ऑपरेशन | एकल संक्रिया]] है जिसे <math>\Pi_{a_1, \ldots,a_n}( R )</math> के रूप में लिखा जाता है जहां <math>a_1,\ldots,a_n</math> गुण नामों का एक समुच्चय है। इस तरह के प्रक्षेपण के परिणाम को उस [[समुच्चय]] के रूप में परिभाषित किया जाता है जो तब प्राप्त होता है जब R में सभी [[टुपल्स]] समुच्चय <math>\{a_1,\ldots,a_n\}</math> तक सीमित होते हैं।


=== चयन (एस) ===
नोट, जब [[एसक्यूएल]] मानक में कार्यान्वित किया जाता है तो "डिफ़ॉल्ट प्रक्षेपण" एक समुच्चय के बजाय एक [[ multiset |मल्टीसेट]] लौटाता है, और डुप्लीकेट डेटा को खत्म करने के लिए {{math|&Pi;}} प्रक्षेपण <code>भिन्न</code> [[कीवर्ड]] को जोड़कर प्राप्त किया जाता है।
{{Main|Selection (relational algebra)}}
एक सामान्यीकृत चयन एक यूनरी ऑपरेशन है जिसे लिखा जाता है <math>\sigma_\varphi(R)</math> कहाँ {{φ}} एक प्रस्तावनात्मक सूत्र है जिसमें चयन (संबंधपरक बीजगणित) और तार्किक संचालकों में अनुमत [[परमाणु सूत्र]] सम्मिलित हैं {{and}} ([[तार्किक संयोजन]]), {{or-}} (तार्किक संयोजन) और {{Not}} (निषेध)। यह चयन R में उन सभी tuples का चयन करता है जिनके लिए {{φ}} रखता है।


पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को इस रूप में लिखा जा सकता है <math>\sigma_{\text{isFriend = true} \,\lor\, \text{isBusinessContact = true}}( \text{addressBook} )</math>. परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी {{math|size=90%|isFriend}} सच है या कहाँ {{math|size=90%|isBusinessContact}} क्या सच है।
=== चयन (''σ'') ===
{{Main|चयन (संबंधपरक बीजगणित)}}


=== नाम बदलें (ρ) ===
एक [[सामान्यीकृत चयन|व्यापकीकृत चयन]] एक [[एकल संक्रिया]] है जिसे <math>\sigma_\varphi(R)</math> के रूप में लिखा जाता है जहाँ {{φ}} एक [[प्रस्तावनात्मक सूत्र]] है जिसमें सामान्य चयन में [[अनुमत परमाणुओं|अनुमत परमाणु]] होते हैं और तार्किक संकारक {{and}} ([[तार्किक संयोजन]]), {{or-}} (तार्किक संयोजन) [[और]] {{Not}} ([[निषेध]]) होते हैं। यह चयन R में उन सभी [[ट्यूपल्स]] का चयन करता है जिनके लिए {{φ}} धारण करता है।
{{Main|Rename (relational algebra)}}
एक नाम बदलना एक यूनरी ऑपरेशन है जिसे लिखा जाता है <math>\rho_{a / b}(R)</math> जहां परिणाम R के समान है सिवाय इसके कि सभी tuples में b विशेषता का नाम बदलकर a विशेषता कर दिया जाता है। इसका उपयोग केवल संबंध (डेटाबेस) या स्वयं संबंध की विशेषता का नाम बदलने के लिए किया जाता है।


किसी संबंध में isFriend विशेषता का नाम बदलकर isBusinessसंपर्क करने के लिए, <math>\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )</math> इस्तेमाल किया जा सकता है।
पता पुस्तिका में सभी मित्रों या व्यावसायिक सहयोगियों की सूची प्राप्त करने के लिए, चयन को <math>\sigma_{\text{isFriend = true} \,\lor\, \text{isBusinessContact = true}}( \text{addressBook} )</math> के रूप में लिखा जा सकता है। परिणाम एक संबंध होगा जिसमें प्रत्येक अद्वितीय रिकॉर्ड की प्रत्येक विशेषता सम्मिलित होगी, जहां {{math|size=90%|मित्र }}सत्य है या  {{math|size=90%|व्यवसाय संपर्क }} कहां सत्य है।


वहाँ भी है <math>\rho_{x(A_1, \ldots,A_n)}(R)</math> अंकन, जहाँ R का नाम बदलकर x और विशेषताएँ कर दिया गया है <math>\{a_1,\ldots,a_n\}</math> का पुनर्नामकरण किया जाता है <math>\{A_1,\ldots,A_n\}</math>.<ref>{{Cite book|last=Silberschatz|first=Abraham |title=डेटाबेस सिस्टम अवधारणाएँ|date=2020 |author2=Henry F. Korth |author3=S. Sudarshan|isbn=978-0-07-802215-9|edition=Seventh |location=New York |oclc=1080554130|page=56}}</ref>
=== पुनःनामकरण (ρ) ===
{{Main|पुनःनामकरण (संबंधपरक बीजगणित)}}


एक पुनःनामकरण एक [[एकल संक्रिया]] है जिसे <math>\rho_{a / b}(R)</math> के रूप में लिखा जाता है, जहां परिणाम R के समान है, इसके अलावा सभी ट्यूपल्स में b विशेषता का नाम बदलकर a विशेषता कर दिया जाता है। इसका उपयोग केवल किसी [[संबंध]] या स्वयं संबंध की विशेषता का नाम बदलने के लिए किया जाता है।


== जॉइन और जॉइन-लाइक प्रचालक्स ==
किसी संबंध में "isFriend" विशेषता का नाम बदलकर  "isBusinessContact" करने के लिए, <math>\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )</math> का उपयोग किया जा सकता है।
 
<math>\rho_{x(A_1, \ldots,A_n)}(R)</math> संकेतन भी है, जहाँ R का नाम बदलकर x और विशेषताओं <math>\{a_1,\ldots,a_n\}</math> का नाम बदलकर <math>\{A_1,\ldots,A_n\}</math>कर दिया गया है।<ref>{{Cite book|last=Silberschatz|first=Abraham |title=डेटाबेस सिस्टम अवधारणाएँ|date=2020 |author2=Henry F. Korth |author3=S. Sudarshan|isbn=978-0-07-802215-9|edition=Seventh |location=New York |oclc=1080554130|page=56}}</ref>
== जोड़ और जोड़ की तरह प्रचालक ==


=== प्राकृतिक जुड़ाव (⋈) ===
=== प्राकृतिक जुड़ाव (⋈) ===
{{redirect|Natural join|the SQL implementation|Natural join (SQL)}}
{{redirect|प्राकृतिक जोड़ |एसक्यूएल कार्यान्वयन|प्राकृतिक जोड़ (एसक्यूएल)}}
{{redirect|⋈|the band sometimes represented by this symbol|The Armed}}
{{redirect|⋈|बैंड को कभी-कभी इस प्रतीक द्वारा दर्शाया जाता है|द आर्म्ड }}
प्राकृतिक जुड़ाव (⋈) एक द्विआधारी संबंध है जिसे (R ⋈ S) के रूप में लिखा जाता है जहां R और S संबंध (डेटाबेस) हैं।{{efn|In [[Unicode]], the bowtie symbol is ⋈ (U+22C8).}} प्राकृतिक जुड़ाव का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों पर समान हैं। एक उदाहरण के लिए कर्मचारी और विभाग और उनके प्राकृतिक जुड़ाव पर विचार करें:{{fact|date=April 2022}}
 
प्राकृतिक जोड़ (⋈) एक [[द्विआधारी संबंध|द्विआधारी प्रचालक]] है जिसे (R ⋈ S) के रूप में लिखा जाता है जहां R और S [[संबंध]] हैं।{{efn|In [[Unicode]], the bowtie symbol is ⋈ (U+22C8).}} प्राकृतिक जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के समान हैं। एक उदाहरण के लिए एम्प्लॉई और विभाग और उनके प्राकृतिक जुड़ाव पर विचार करें,{{fact|date=April 2022}}


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Sales
  | हेरिएट|| 2202 || बिक्री
  |-
  |-
  | Mary  || 1257 || Human Resources
  | मेरी|| 1257 || मानव संसाधन
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Finance  || George
  | अर्थव्यवस्था|| जॉर्ज
  |-
  |-
  | Sales  || Harriet
  | बिक्री|| हेरिएट
  |-
  |-
  | Production || Charles
  | उत्पादन|| चार्ल्स
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee''&nbsp;⋈&nbsp;''Dept''
  |+  ''कर्मचारी''&nbsp;⋈&nbsp;''विभाग''
  |-
  |-
  ! Name  !! EmpId !!  DeptName  !! Manager
  ! नाम!! कर्मचारी आईडी!!  विभाग का नाम!! प्रबंधक
  |-
  |-
  | Harry  || 3415  || Finance  || George
  | हैरी|| 3415  || अर्थव्यवस्था|| जॉर्ज
  |-
  |-
  | Sally  || 2241  || Sales  || Harriet
  | सैली || 2241  || बिक्री|| हेरिएट
  |-
  |-
  | George || 3401  || Finance || George
  | जॉर्ज|| 3401  || अर्थव्यवस्था|| जॉर्ज
  |-
  |-
  | Harriet || 2202 || Sales || Harriet
  | हेरिएट|| 2202 || बिक्री|| हेरिएट
|}
|}
{{col-end}}
{{col-end}}
Line 105: Line 106:
ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन विभाग दिखाई देता है।
ध्यान दें कि परिणाम में न तो मैरी नाम का कर्मचारी और न ही उत्पादन विभाग दिखाई देता है।


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


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


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


{{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}}}}


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


कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि सी<sub>1</sub>,...,सी<sub>''m''</sub> विशेषता नाम आर और एस, आर के लिए सामान्य हैं<sub>1</sub>,...,आर<sub>''n''</sub> हैं
कोडड के आदिम के साथ प्राकृतिक जुड़ाव को निम्नानुसार अनुकरण किया जा सकता है। मान लीजिए कि 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 में सामान्य विशेषता नामों का पुनःनामकरण किया जा सकता है,
विशेषता नाम आर और एस के लिए अद्वितीय हैं<sub>1</sub>,...,एस<sub>''k''</sub> हैं
विशेषता नाम एस के लिए अद्वितीय है। इसके अलावा, मान लें कि विशेषता नाम x<sub>1</sub>,...,एक्स<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}}}}


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


{{NumBlk|:|<math>P = \sigma_{c_1=x_1,\ldots,c_m=x_m}(R \times T) = \sigma_{c_1=x_1}(\sigma_{c_2=x_2}(\ldots\sigma_{c_m=x_m}(R \times T)\ldots))</math>|{{EquationRef|3}}}}
{{NumBlk|:|<math>P = \sigma_{c_1=x_1,\ldots,c_m=x_m}(R \times T) = \sigma_{c_1=x_1}(\sigma_{c_2=x_2}(\ldots\sigma_{c_m=x_m}(R \times T)\ldots))</math>|{{EquationRef|3}}}}


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


{{NumBlk|:|<math>U = \Pi_{r_1,\ldots,r_n,c_1,\ldots,c_m,s_1,\ldots,s_k}(P)</math>|{{EquationRef|4}}}}
{{NumBlk|:|<math>U = \Pi_{r_1,\ldots,r_n,c_1,\ldots,c_m,s_1,\ldots,s_k}(P)</math>|{{EquationRef|4}}}}


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Car''
  |+          ''कार''
  |-
  |-
  ! CarModel  !! CarPrice
  ! कार के मॉडल!! कार की कीमत
  |-
  |-
  | CarA || 20,000
  | कारA || 20,000
  |-
  |-
  | CarB || 30,000
  | कारB || 30,000
  |-
  |-
  | CarC || 50,000
  | कारC || 50,000
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Boat''
  |+          ''नाव''
  |-
  |-
  ! BoatModel  !! BoatPrice
  ! नावमॉडल!! नाव मूल्य
  |-
  |-
  | Boat1 || 10,000
  | नाव 1 || 10,000
  |-
  |-
  | Boat2 || 40,000
  | नाव 2 || 40,000
  |-
  |-
  | Boat3 || 60,000
  | नाव 3 || 60,000
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  <math>{ Car \bowtie Boat \atop \scriptstyle CarPrice \geq BoatPrice }</math>
  |+  <math>{ Car \bowtie Boat \atop \scriptstyle CarPrice \geq BoatPrice }</math>
  |-
  |-
  ! CarModel  !! CarPrice !!  BoatModel !! BoatPrice
  ! कार के मॉडल!! कार की कीमत!!  नावमॉडल!! नाव मूल्य
  |-
  |-
  | CarA || 20,000  || Boat1 || 10,000
  | कारA || 20,000  || नाव 1 || 10,000
  |-
  |-
  | CarB || 30,000  || Boat1 || 10,000
  | कारB || 30,000  || नाव 1 || 10,000
  |-
  |-
  | CarC || 50,000  || Boat1 || 10,000
  | कारC || 50,000  || नाव 1 || 10,000
  |-
  |-
  | CarC || 50,000  || Boat2 || 40,000
  | कारC || 50,000  || नाव 2 || 40,000
|}
|}
{{col-end}}
{{col-end}}


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


मौलिक संचालन में इस ऑपरेशन का अनुकरण इस प्रकार है:
मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है
: आर ⋈<sub>''θ''</sub> = <sub>θ</sub>(आर × एस)
: ''R'' ⋈<sub>''θ''</sub> ''S'' = ''σ''<sub>θ</sub>(''R'' × ''S'')


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


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


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


=== सेमिजॉइन (⋉ और ⋊) ===
=== सेमिजोड़ (⋉ और ⋊) ===


बायाँ सेमीजॉइन प्राकृतिक जोड़ के समान एक जुड़ाव है और इसे <math alt= 𝑅 ⋉ 𝑆>R \ltimes S</math> लिखा जाता है, जहाँ <math alt= 𝑅>R</math> और <math alt= 𝑆>S </math> संबंध (डेटाबेस) हैं।{{efn|In [[Unicode]], the ltimes symbol is ⋉ (U+22C9). The rtimes symbol is ⋊ (U+22CA)}} परिणाम <math alt= 𝑅>R</math> में सभी tuples का समुच्चय है, जिसके लिए <math alt= 𝑆>S</math> में एक tuple है जो उनके सामान्य गुण नामों के बराबर है। प्राकृतिक जोड़ से अंतर यह है कि <math alt= 𝑆>S</math> के अन्य कॉलम दिखाई नहीं देते हैं। उदाहरण के लिए, कर्मचारी और विभाग और उनके सेमीजॉइन टेबल पर विचार करें:{{fact|date=April 2022}}
बायाँ सेमीजोड़ प्राकृतिक जोड़ के समान एक जोड़ है और इसे <math alt= 𝑅 ⋉ 𝑆>R \ltimes S</math> लिखा जाता है, जहाँ <math alt= 𝑅>R</math> और <math alt= 𝑆>S </math> [[संबंध]] (डेटाबेस) हैं।{{efn|In [[Unicode]], the ltimes symbol is ⋉ (U+22C9). The rtimes symbol is ⋊ (U+22CA)}} परिणाम <math alt= 𝑅>R</math> में सभी ट्यूपल्स का समुच्चय है, जिसके लिए <math alt= 𝑆>S</math> में एक ट्यूपल् है जो उनके सामान्य गुण नामों के बराबर है। प्राकृतिक जुड़ाव से अंतर यह है कि <math alt= 𝑆>S</math> के अन्य कॉलम दिखाई नहीं देते हैं। उदाहरण के लिए, कर्मचारी और विभाग और उनके सेमीजोड़ टेबल पर विचार करें,{{fact|date=April 2022}}


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! श्रेणी!! कर्मचारी आईडी !! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज || 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Production
  | हेरिएट|| 2202 || उत्पादन
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sales  || Sally 
  | बिक्री|| सैली
  |-
  |-
  | Production|| Harriet
  | उत्पादन|| हेरिएट
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee'' ⋉ ''Dept''
  |+  ''कर्मचारी'' ⋉ ''विभाग''
  |-
  |-
  ! Name   !! EmpId !!  DeptName
  ! नाम   !! कर्मचारी आईडी!!  विभाग का नाम
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | Harriet || 2202 || Production
  | हेरिएट|| 2202 || उत्पादन
|}
|}
{{col-end}}
{{col-end}}


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


<math alt= 𝑅 ⋉ 𝑆 = { 𝑡 : 𝑡 ∈ 𝑅 ∧  ∃ 𝑠 ∈ 𝑆(Fun(𝑡 ∩ 𝑠))} >R \ltimes S = \{ t : t \in R \land \exist s \in S (\operatorname{Fun}(t \cup s)) \}</math>
<math alt= 𝑅 ⋉ 𝑆 = { 𝑡 : 𝑡 ∈ 𝑅 ∧  ∃ 𝑠 ∈ 𝑆(Fun(𝑡 ∩ 𝑠))} >R \ltimes S = \{ t : t \in R \land \exist s \in S (\operatorname{Fun}(t \cup s)) \}</math>


जहां <math alt= Fun(𝑟) >\operatorname{Fun}(r)</math> नेचुरल जॉइन की परिभाषा के अनुसार है।
जहां <math alt= Fun(𝑟) >\operatorname{Fun}(r)</math> प्राकृतिक जोड़ की परिभाषा के अनुसार है।


निम्नानुसार प्राकृतिक जुड़ाव का उपयोग करके सेमीजॉइन का अनुकरण किया जा सकता है। अगर <math alt= a₁, …, aₙ >a_1, \ldots, a_n</math> <math alt= 𝑅 >R</math> के एट्रिब्यूट नाम हैं, तो
निम्नानुसार प्राकृतिक जुड़ाव का उपयोग करके सेमीजोड़ का अनुकरण किया जा सकता है। यदि <math alt= a₁, …, aₙ >a_1, \ldots, a_n</math> <math alt= 𝑅 >R</math> के गुण नाम हैं, तो


<math alt= 𝑅 ⋉ 𝑆 = Π_{a₁, …, aₙ} (𝑅 ⋈ 𝑆) >R \ltimes S = \Pi_{a_1, \ldots, a_n}(R \bowtie S).</math>
<math alt= 𝑅 ⋉ 𝑆 = Π_{a₁, …, aₙ} (𝑅 ⋈ 𝑆) >R \ltimes S = \Pi_{a_1, \ldots, a_n}(R \bowtie S).</math>


चूँकि हम मूल संचालकों के साथ प्राकृतिक जुड़ाव का अनुकरण कर सकते हैं, इसलिए यह इस प्रकार है कि यह सेमीजॉइन के लिए भी लागू होता है।
चूँकि हम मूल संचालकों के साथ प्राकृतिक जुड़ाव का अनुकरण कर सकते हैं, इसलिए यह इस प्रकार है कि यह सेमीजोड़ के लिए भी लागू होता है।
 
कॉड के 1970 के पेपर में, सेमीजॉइन को प्रतिबंध कहा जाता है।<ref name="Codd1970">{{cite journal|first=E.F.|last=Codd|author-link=E.F. Codd|title=बड़े साझा डेटा बैंकों के लिए डेटा का एक संबंधपरक मॉडल|journal=[[Communications of the ACM]]|volume=13|issue=6|date=June 1970|pages=377–387| doi = 10.1145/362384.362685|s2cid=207549016 }}</ref>


कॉड के 1970 के पेपर में, सेमीजोड़ को प्रतिबंध कहा जाता है।<ref name="Codd1970">{{cite journal|first=E.F.|last=Codd|author-link=E.F. Codd|title=बड़े साझा डेटा बैंकों के लिए डेटा का एक संबंधपरक मॉडल|journal=[[Communications of the ACM]]|volume=13|issue=6|date=June 1970|pages=377–387| doi = 10.1145/362384.362685|s2cid=207549016 }}</ref>
=== एंटीजोड़ (▷) ===


=== एंटीजॉइन () ===
एंटीजोड़, R ▷ S के रूप में लिखा जाता है जहाँ R और S [[संबंध]] हैं,{{efn|In [[Unicode]], the Antijoin symbol is ▷ (U+25B7).}} सेमिजोड़ के समान है, लेकिन एक एंटीजोड़ का नतीजा R में केवल वे ट्यूपल्स हैं जिनके लिए S में कोई ट्यूपल नहीं है जो उनके सामान्य विशेषता नामों के बराबर है।{{fact|date=April 2022}}


एंटीजॉइन, R ▷ S के रूप में लिखा जाता है जहाँ R और S रिलेशन (डेटाबेस) हैं,{{efn|In [[Unicode]], the Antijoin symbol is ▷ (U+25B7).}} सेमिजॉइन के समान है, लेकिन एक एंटीजॉइन का नतीजा आर में केवल वे ट्यूपल्स हैं जिनके लिए एस में कोई ट्यूपल नहीं है जो उनके सामान्य विशेषता नामों के बराबर है।{{fact|date=April 2022}}
एक उदाहरण के लिए टेबल कर्मचारी और विभाग और उनके एंटीजोड़ पर विचार करें,
 
उदाहरण के लिए कर्मचारी और विभाग और उनके तालिकाओं पर विचार करें
एंटीजॉइन:


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! श्रेणी!! कर्मचारी आईडी!! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Production
  | हेरिएट|| 2202 || उत्पादन
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sales  || Sally
  | बिक्री|| सैली
  |-
  |-
  | Production || Harriet
  | उत्पादन|| हेरिएट
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee''  ▷ ''Dept''
  |+  ''कर्मचारी''  ▷ ''विभाग''
  |-
  |-
  ! Name  !! EmpId !!  DeptName
  ! श्रेणी!! कर्मचारी आईडी!!  विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
|}
|}
{{col-end}}
{{col-end}}


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


: <span class= texhtml >R ▷ S = { t : t ∈ R ∧ ¬∃s ∈ S(Fun (t ∪ s)) }</span>
: <span class= texhtml >R ▷ S = { t : t ∈ R ∧ ¬∃s ∈ S(Fun (t ∪ s)) }</span>
Line 292: Line 286:
या
या


: <span class= texhtml >R ▷ S = { t : t ∈ R, S का कोई tuple s नहीं है जो Fun (t ∪ s) को संतुष्ट करता हो </span>
: <span class= texhtml >R ▷ S = { t : t ∈ R, S का कोई ट्यूपल्स नहीं है जो फन (t ∪ s) को संतुष्ट करता हो </span>


कहाँ {{math|''Fun'' (''t'' &cup; ''s'')}} प्राकृतिक जुड़ाव की परिभाषा के अनुसार है।
जहां {{math|''फन'' (''t'' &cup; ''s'')}} प्राकृतिक जुड़ाव की परिभाषा के अनुसार है।


एंटीजॉइन को सेमीजॉइन के [[पूरक (सेट सिद्धांत)|पूरक (समुच्चय सिद्धांत)]] के रूप में भी परिभाषित किया जा सकता है:
एंटीजोड़ को सेमीजोड़ के [[पूरक (सेट सिद्धांत)|पूरक]] के रूप में भी परिभाषित किया जा सकता है,
{{NumBlk|:| {{math|1=''R'' ▷ ''S'' = ''R''&nbsp;&minus;&nbsp;''R'' ⋉ ''S''}} |{{EquationRef|5}}}}
{{NumBlk|:| {{math|1=''R'' ▷ ''S'' = ''R''&nbsp;&minus;&nbsp;''R'' ⋉ ''S''}} |{{EquationRef|5}}}}
इसे देखते हुए, एंटीजॉइन को कभी-कभी एंटी-सेमीजॉइन कहा जाता है, और एंटीजॉइन प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजॉइन प्रतीक के रूप में लिखा जाता है।
इसे देखते हुए, एंटीजोड़ को कभी-कभी एंटी-सेमीजोड़ कहा जाता है, और एंटीजोड़ प्रचालक को कभी-कभी ▷ के बजाय इसके ऊपर एक बार के साथ सेमीजोड़ प्रतीक के रूप में लिखा जाता है।


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''Completed''
  |+ ''संपन्न''
  |-
  |-
  ! Student  !! Task !! RoomID
  ! छात्र!! काम!! रूमआईडी
  |-
  |-
  | Fred  || Database1 || 174
  | फ्रेड|| डाटाबेस1 || 174
  |-
  |-
  | Fred  || Database2 || 123
  | फ्रेड|| डाटाबेस2 || 123
  |-
  |-
  | Fred || Compiler1 || 234
  | फ्रेड|| संकलक1 || 234
  |-
  |-
  | Eugene  || Database1 || 671
  | यूजीन|| डाटाबेस1 || 671
  |-
  |-
  | Eugene  || Compiler1 || 829
  | यूजीन|| संकलक1 || 829
  |-
  |-
  | Sarah  || Database1 || 246
  | सराह|| डाटाबेस1 || 246
  |-
  || सराह|| डाटाबेस2|| 934
| Sarah  || Database2 || 934
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''DBProject''
  |+ ''डीबीप्रोजेक्ट ''
  |-
  |-
  ! Task !! TaskID
  ! कार्य!! टास्कआईडी
  |-
  |-
  | Database1 || 42
  | डाटाबेस1|| 42
  |-
  |-
  | Database2 || 91
  | डाटाबेस2 || 91
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''Completed'' ÷ ''DBProject''
  |+ ''संपूर्ण'' ÷ ''डीबीप्रोजेक्ट ''
  |-
  |-
  ! Student
  ! छात्र
  |-
  |-
  | Fred
  | फ्रेड
  |-
  |-
  | Sarah
  | सराह
|}
|}
{{col-end}}यदि DBProject में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं।
{{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 के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा।


अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है:{{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}}}}जहाँ एक<sub>1</sub>,...,ए<sub>''n''</sub>} आर और टी [ए के लिए अद्वितीय विशेषता नामों का समुच्चय है<sub>1</sub>,...,ए<sub>''n''</sub>] इस समुच्चय के लिए टी का प्रतिबंध है। आमतौर पर यह आवश्यक है कि एस के शीर्षलेख में विशेषता नाम आर के सबसमुच्चय हैं क्योंकि अन्यथा ऑपरेशन का परिणाम हमेशा खाली रहेगा।
मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि 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''  


मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि ए<sub>1</sub>,...,ए<sub>''n''</sub> विशेषता नाम आर और बी के लिए अद्वितीय हैं<sub>1</sub>,...,बी<sub>''m''</sub> एस के विशेषता नाम हैं। पहले चरण में हम आर को इसके अद्वितीय विशेषता नामों पर प्रोजेक्ट करते हैं और एस में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं:
पिछले उदाहरण में, T एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 T में।
: त:= π<sub>''a''<sub>1</sub>,...,ए<sub>''n''</sub></उप>(आर) × एस


पिछले उदाहरण में, टी एक तालिका का प्रतिनिधित्व करेगा जैसे कि प्रत्येक छात्र (क्योंकि छात्र पूर्ण तालिका की अनूठी कुंजी/विशेषता है) प्रत्येक दिए गए कार्य के साथ संयुक्त है। उदाहरण के लिए, यूजीन की दो पंक्तियाँ होंगी, यूजीन → डेटाबेस1 और यूजीन → डेटाबेस2 टी में।
:: EG, सबसे पहले, आइए दिखाते हैं कि "पूर्ण" में "श्रेणी" नामक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रक्षेपित करना चाहिए। वास्तव में इस चरण में हम "कार्य" को R से भी छोड़ सकते हैं, तथा गुणा इसे वापस रखता है।
 
:: ''T'':= π<sub>छात्र</sub>(''R'') × ''S'' // दूसरों को छोड़कर, यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में ''R'' में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है)
:: EG: सबसे पहले, मान लें कि Completed के पास ग्रेड नामक एक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रोजेक्ट करना चाहिए। वास्तव में इस चरण में हम टास्क को आर से भी छोड़ सकते हैं; गुणा इसे वापस रखता है।
:: := π<sub>Student</sub>(आर) × एस // यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में आर में मौजूद नहीं हैं, और दूसरों को छोड़कर (जैसे फ्रेड | कंपाइलर 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}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''T''
  |+ ''टी''
  |-
  |-
  ! Student  !! Task
  ! छात्र!! कार्य
  |-
  |-
  | Fred  || Database1
  | फ्रेड || डाटाबेस1
  |-
  |-
  | Fred  || Database2
  | फ्रेड || डाटाबेस2
  |-
  |-
  | Eugene  || Database1
  | यूजीन|| डाटाबेस1
  |-
  |-
  | Eugene  || Database2
  | यूजीन|| डाटाबेस2
  |-
  |-
  | Sarah  || Database1
  | यूजीन|| डाटाबेस1
  |-
  |-
  | Sarah  || Database2
  | यूजीन|| डाटाबेस2
|}
|}
{{col-end}} अगले चरण में हम R को T से घटाते हैं
{{col-end}} अगले चरण में हम R को T से घटाते हैं
संबंध (डेटाबेस):
संबंध,
: यू := टी - आर
: ''U'' := ''T'' - ''R''
यू में हमारे पास संभव है
''U'' में हमारे पास संभावित संयोजन हैं जो ''R'' में "हो सकते थे", लेकिन नहीं थे।
संयोजन जो आर में हो सकते थे, लेकिन नहीं थे।
:: EG, फिर से अनुमानों के साथ - ''T'' और R को समान गुण नाम/शीर्षक रखने की आवश्यकता है।
:: ईजी: फिर से अनुमानों के साथ - टी और आर को समान विशेषता नाम/शीर्षक रखने की आवश्यकता है।
:: ''U'' := ''T'' − π<sub>छात्र, कार्य</sub>(''R'') // यह हमें एक लापता सूची देता है।
:: यू := टी − π<sub>Student,Task</sub>(आर) // यह हमें एक लापता सूची देता है।
{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break|gap=5em}}
{{col-break|gap=5em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''T''
  |+ ''टी''
  |-
  |-
  ! Student  !! Task
  ! छात्र!! कार्य
  |-
  |-
  | Fred  || Database1
  | फ्रेड|| डाटाबेस1
  |-
  |-
  | Fred  || Database2
  | फ्रेड|| डाटाबेस2
  |-
  |-
  | Eugene  || Database1
  | यूजीन|| डाटाबेस1
  |-
  |-
  | Eugene  || Database2
  | यूजीन|| डाटाबेस2
  |-
  |-
  | Sarah  || Database1
  | सराह|| डाटाबेस1
  |-
  |-
  | Sarah  || Database2
  | सराह|| डाटाबेस2
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''R'' a.k.a. ''Completed''
  |+ ''R'' a.k.a. ''संपूर्ण''
  |-
  |-
  ! Student  !! Task
  ! छात्र!! कार्य
  |-
  |-
  | Fred  || Database1
  | फ्रेड|| डाटाबेस1
  |-
  |-
  | Fred  || Database2
  | फ्रेड|| डाटाबेस2
  |-
  |-
  | Fred || Compiler1
  | फ्रेड|| संकलक1
  |-
  |-
  | Eugene  || Database1
  | यूजीन || डाटाबेस1
  |-
  |-
  | Eugene  || Compiler1
  | यूजीन || संकलक1
  |-
  |-
  | Sarah  || Database1
  | सराह || डाटाबेस1
  |-
  |-
  | Sarah  || Database2
  | सराह || डाटाबेस2
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''U''
  |+ ''U''
  |+ aka
  |+ aka
  |+ ''T'' &minus; ''R''
  |+ ''T'' &ऋण; ''R''
  |+ aka
  |+ aka
  |+ ''what's missing''
  |+ ''क्या नहीं हैं''
  |-
  |-
  ! Student  !! Task
  ! छात्र!! कार्य
  |-
  |-
  | Eugene  || Database2
  | यूजीन|| डाटाबेस2
|}
|}
{{col-end}} तो अगर हम अब आर के लिए अद्वितीय विशेषता नामों पर प्रक्षेपण लेते हैं
{{col-end}} इसलिए यदि हम अब R के लिए अद्वितीय विशेषता नामों पर प्रक्षेपण लेते हैं
तो हमारे पास आर में टुपल्स का प्रतिबंध है जिसके लिए नहीं
तब हमारे पास R में टुपल्स का प्रतिबंध है जिसके लिए नहीं S में ट्यूपल्स वाले सभी संयोजन R में मौजूद थे,
S में tuples वाले सभी संयोजन R में मौजूद थे:
: ''V''  := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''U'')
: वि := π<sub>''a''<sub>1</sub>,...,<sub>''n''</sub></उप>(यू)
:<sub>
:: ईजी: प्रोजेक्‍ट यू को केवल प्रश्‍नगत विशेषताओं (छात्रों) तक सीमित करें (विद्यार्थी)
:: ईजी: प्रोजेक्‍ट यू को केवल प्रश्‍नगत विशेषताओं (छात्रों) तक सीमित करें (विद्यार्थी)
:: वि:= π<sub>Student</sub>(में)
:: वि:= π<sub>Student</sub>(में)
{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break|gap=5em}}
{{col-break|gap=5em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''V''
  |+ ''V''
  |-
  |-
  ! Student
  ! छात्र
  |-
  |-
  | Eugene
  | यूजीन
|}
|}
{{col-end}}
{{col-end}}


तो जो करना बाकी रह गया है, वह है इसके ऊपर R का प्रक्षेपण लेना
तो जो किया जाना बाकी है, वह R के प्रक्षेपण को उसके विशिष्ट गुण नामों पर ले जाता है और उन्हें V में घटा देता है,
अद्वितीय विशेषता नाम और उन्हें वी में घटाएं:
: ''W'':= π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') − ''V''
: := π<sub>''a''<sub>1</sub>,...,<sub>''n''</sub></ उप> (आर) - वी
:EG: ''W'' : = π<sub>Student</sub>(R) - ''V''।
:: ईजी: डब्ल्यू: = π<sub>Student</sub>(आर) - वी।
{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break|gap=5em}}
{{col-break|gap=5em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ π<sub>Student</sub>(''R'')
  |+ π<sub>छात्र</sub>(''R'')
  |-
  |-
  ! Student
  ! छात्र
  |-
  |-
  | Fred 
  | फ्रेड
  |-
  |-
  | Eugene
  | यूजीन
  |-
  |-
  | Sarah
  | सराह
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''V''
  |+ ''V''
  |-
  |-
  ! Student
  ! छात्र
  |-
  |-
  | Eugene
  | यूजीन
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+ ''W''
  |+ ''W''
  |+ aka
  |+ aka
  |+ {{math|(π<sub>Student</sub>(''R'') &minus; ''V'')}}
  |+ {{math|(π<sub>छात्र</sub>(''R'') &minus; ''V'')}}
  |+ aka
  |+ aka
  |+ desired result
  |+ वांछित परिणाम
  |-
  |-
  ! Student
  ! छात्र
  |-
  |-
  | Fred
  | फ्रेड
  |-
  |-
  | Sarah
  | सराह
|}
|}
{{col-end}}
{{col-end}}


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


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


==== वाम बाहरी जोड़ (⟕) ====
==== बायां बाहरी जुड़ाव (⟕) ====


बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S संबंध (डेटाबेस) हैं।{{efn|In [[Unicode]], the Left outer join symbol is ⟕ (U+27D5).}} बाएं बाहरी जोड़ का परिणाम आर और एस में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, आर में ट्यूपल्स के अलावा (ढीले बोलने वाले) जिनके एस में कोई मिलान ट्यूपल नहीं है।{{fact|date=April 2022}}
बाएं बाहरी जोड़ को R ⟕ S के रूप में लिखा जाता है जहां R और S [[संबंध]] हैं।{{efn|In [[Unicode]], the Left outer join symbol is ⟕ (U+27D5).}} बाएं बाहरी जोड़ का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, R में ट्यूपल्स के अलावा (अस्पष्ट कथन) एस में कोई मिलान ट्यूपल नहीं है।{{fact|date=April 2022}}


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Sales
  | हेरिएट|| 2202 || बिक्री
  |-
  |-
  | Tim || 1123 || Executive
  | टिम|| 1123 || कार्यकारिणी
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sales  || Harriet
  | बिक्री|| हेरिएट
  |-
  |-
  | Production || Charles
  | उत्पादन|| चार्ल्स
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee'' ⟕  ''Dept''
  |+  ''कर्मचारी'' ⟕  ''विभाग''
  |-
  |-
  ! Name  !! EmpId !! DeptName !! Manager
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Harry  || 3415  || Finance || ω
  | हैरी || 3415  || अर्थव्यवस्था|| ω
  |-
  |-
  | Sally  || 2241  || Sales || Harriet
  | सैली || 2241  || बिक्री|| हेरिएट
  |-
  |-
  | George || 3401  || Finance || ω
  | जॉर्ज|| 3401  || अर्थव्यवस्था|| ω
  |-
  |-
  | Harriet || 2202 || Sales || Harriet
  | हेरिएट|| 2202 || बिक्री|| हेरिएट
  |-
  |-
  | Tim || 1123 || Executive || ω
  | टिम|| 1123 || कार्यकारिणी || ω
|}
|}
{{col-end}}
{{col-end}}


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


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


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


:<math>(R \bowtie S) \cup ((R - \pi_{r_1, r_2, \dots, r_n}(R \bowtie S)) \times \{(\omega, \dots \omega)\})</math>
:<math>(R \bowtie S) \cup ((R - \pi_{r_1, r_2, \dots, r_n}(R \bowtie S)) \times \{(\omega, \dots \omega)\})</math>
==== दायां बाहरी जोड़ (⟖) ====
==== दायां बाहरी जोड़ (⟖) ====
दायाँ बाहरी जुड़ाव लगभग बाएँ बाहरी जुड़ाव के समान व्यवहार करता है, लेकिन तालिकाओं की भूमिकाएँ बदल जाती हैं।
दायाँ बाहरी जुड़ाव लगभग बाएँ बाहरी जुड़ाव के समान व्यवहार करता है, लेकिन तालिकाओं की भूमिकाएँ बदल जाती हैं।


संबंध (डेटाबेस) के दाएं बाहरी जुड़ाव R और S को R ⟖ S लिखा जाता है।{{efn|In [[Unicode]], the Right outer join symbol is ⟖ (U+27D6).}} सही बाहरी जुड़ाव का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो S में tuples के अलावा उनके सामान्य विशेषता नामों पर समान हैं, जिनका R में कोई मिलान tuples नहीं है।{{fact|date=April 2022}}
[[संबंध]] R और S के दाहिने बाहरी जोड़ को R ⟖ S लिखा जाता है।{{efn|In [[Unicode]], the Right outer join symbol is ⟖ (U+27D6).}} सही बाहरी जुड़ाव का परिणाम R और S में ट्यूपल्स के सभी संयोजनों का समुच्चय है जो S में ट्यूपल्स के अलावा उनके सामान्य विशेषता नामों पर समान हैं, जिनमें R में कोई मिलान ट्यूपल्स नहीं है।{{fact|date=April 2022}}


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! नाम!! कर्मचारी आईडी !! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली|| 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Sales
  | हेरिएट|| 2202 || बिक्री
  |-
  |-
  | Tim || 1123 || Executive
  | टिम|| 1123 || कार्यकारिणी
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sales  || Harriet
  | बिक्री|| हेरिएट
  |-
  |-
  | Production || Charles
  | उत्पादन|| चार्ल्स
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee'' ⟖  ''Dept''
  |+  ''कर्मचारी'' ⟖  ''विभाग''
  |-
  |-
  ! Name  !! EmpId !! DeptName !! Manager
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sally  || 2241  || Sales  || Harriet
  | सैली || 2241  || बिक्री|| हेरिएट
  |-
  |-
  | Harriet || 2202 || Sales  || Harriet
  | हेरिएट|| 2202 || बिक्री|| हेरिएट
  |-
  |-
  | ω || ω || Production  || Charles
  | ω || ω || उत्पादन|| चार्ल्स
|}
|}
{{col-end}}
{{col-end}}


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


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


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


:<math>(R \bowtie S) \cup (\{(\omega, \dots, \omega)\} \times (S - \pi_{s_1, s_2, \dots, s_n}(R \bowtie S)))</math>
:<math>(R \bowtie S) \cup (\{(\omega, \dots, \omega)\} \times (S - \pi_{s_1, s_2, \dots, s_n}(R \bowtie S)))</math>
==== पूर्ण बाहरी जुड़ाव (⟗) ====
==== पूर्ण बाहरी जुड़ाव (⟗) ====


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


पूर्ण बाहरी जोड़ को ''R'' ⟗ ''S'' के रूप में लिखा जाता है जहां ''R'' और ''S'' रिलेशन (डेटाबेस) हैं।{{efn|In [[Unicode]], the Full Outer join symbol is ⟗ (U+27D7).}} पूर्ण बाहरी जुड़ने का परिणाम R और S में tuples के सभी संयोजनों का समुच्चय है जो उनके सामान्य विशेषता नामों के बराबर हैं, S में tuples के अलावा R में कोई मिलान tuples नहीं हैं और R में tuples हैं जिनका कोई मिलान नहीं है उनके सामान्य गुण नामों में S में tuples।{{fact|date=April 2022}}
पूर्ण बाहरी जुड़ाव को ''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}}


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break}}
{{col-break}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Employee''
  |+          ''कर्मचारी''
  |-
  |-
  ! Name  !! EmpId !! DeptName
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम
  |-
  |-
  | Harry  || 3415  || Finance
  | हैरी || 3415  || अर्थव्यवस्था
  |-
  |-
  | Sally  || 2241  || Sales
  | सैली || 2241  || बिक्री
  |-
  |-
  | George || 3401  || Finance
  | जॉर्ज|| 3401  || अर्थव्यवस्था
  |-
  |-
  | Harriet || 2202 || Sales
  | हेरिएट|| 2202 || बिक्री
  |-
  |-
  | Tim || 1123 || Executive
  | टिम|| 1123 || कार्यकारिणी
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+          ''Dept''
  |+          ''विभाग''
  |-
  |-
  ! DeptName  !! Manager
  ! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Sales || Harriet
  | बिक्री || हेरिएट
  |-
  |-
  | Production || Charles
  | उत्पादन|| चार्ल्स
|}
|}
{{col-break|gap=2em}}
{{col-break|gap=2em}}
{| class="wikitable"
{| श्रेणी="विकिटेबल"
  |+  ''Employee'' ⟗  ''Dept''
  |+  ''कर्मचारी'' ⟗  ''विभाग''
  |-
  |-
  ! Name  !! EmpId !! DeptName !! Manager
  ! नाम!! कर्मचारी आईडी!! विभाग का नाम!! प्रबंधक
  |-
  |-
  | Harry  || 3415  || Finance || ω
  | हैरी || 3415  || अर्थव्यवस्था|| ω
  |-
  |-
  | Sally  || 2241  || Sales || Harriet
  | सैली || 2241  || बिक्री|| हेरिएट
  |-
  |-
  | George || 3401  || Finance || ω
  | जॉर्ज|| 3401  || अर्थव्यवस्था|| ω
  |-
  |-
  | Harriet || 2202 || Sales || Harriet
  | हेरिएट || 2202 || बिक्री|| हेरिएट
  |-
  |-
  | Tim || 1123 || Executive || ω
  | टिम|| 1123 || कार्यकारिणी|| ω
  |-
  |-
  | ω || ω || Production || Charles
  | ω || ω || उत्पादन || चार्ल्स
|}
|}
{{col-end}}
{{col-end}}


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


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


: आर ⟗ एस = (आर ⟕ एस) ∪ (आर ⟖ एस)
: R⟗S = (R⟕ S) ∪ (R⟖ S)


=== डोमेन संगणनाओं के लिए संचालन ===
=== प्रक्षेत्र संगणनाओं के लिए संचालन ===
अब तक पेश किए गए संबंधपरक बीजगणित में ऐसा कुछ भी नहीं है जो डेटा डोमेन पर संगणना की अनुमति दे (समानता से जुड़े प्रस्तावात्मक भावों के मूल्यांकन के अलावा)। उदाहरण के लिए, अब तक शुरू किए गए बीजगणित का उपयोग करके एक व्यंजक लिखना संभव नहीं है जो संख्याओं को दो स्तंभों से गुणा करेगा, उदा. कुल मूल्य प्राप्त करने के लिए मात्रा के साथ एक इकाई मूल्य। व्यावहारिक क्वेरी भाषाओं में ऐसी सुविधाएं होती हैं, उदा. एसक्यूएल चयन परिणाम में नए कॉलम को परिभाषित करने के लिए अंकगणितीय संचालन की अनुमति देता है <syntaxhighlight lang="sql" inline>SELECT unit_price * quantity AS total_price FROM t</syntaxhighlight>, और इसी तरह की सुविधा ट्यूटोरियल डी द्वारा अधिक स्पष्ट रूप से प्रदान की जाती है <code>EXTEND</code> कीवर्ड।<ref name="Date2011">{{cite book|author=C. J. Date|title=SQL and Relational Theory: How to Write Accurate SQL Code|url=https://books.google.com/books?id=WuZGD5tBfMwC&pg=PA133|year=2011|publisher=O'Reilly Media, Inc.|isbn=978-1-4493-1974-8|pages=133–135}}</ref> डेटाबेस सिद्धांत में, इसे विस्तारित प्रक्षेपण कहा जाता है।<ref name="Garcia-MolinaUllman2009"/>{{rp|213}}
अब तक पेश किए गए संबंधपरक बीजगणित में ऐसा कुछ भी नहीं है जो डेटा प्रक्षेत्र पर संगणना की अनुमति दे (समानता से जुड़े प्रस्तावात्मक भावों के मूल्यांकन के अलावा)। उदाहरण के लिए, अब तक शुरू किए गए बीजगणित का उपयोग करके एक व्यंजक लिखना संभव नहीं है जो संख्याओं को दो स्तंभों से गुणा करेगा, उदाहरण के लिए कुल मूल्य प्राप्त करने के लिए मात्रा के साथ एक इकाई मूल्य। व्यावहारिक क्वेरी भाषाओं में ऐसे गुण होते हैं, उदाहरण के लिय एसक्यूएल चयन परिणाम में नए कॉलम को परिभाषित करने की अनुमति देता है <syntaxhighlight lang="sql" inline="">यूनिट_कीमत * मात्रा को टी से कुल_कीमत के रूप में चुनें</syntaxhighlight>, और इसी तरह की सुविधा ट्यूटोरियल डी के <code>एक्सटेंड</code>कीवर्ड द्वारा अधिक स्पष्ट रूप से प्रदान की जाती है।<ref name="Date2011">{{cite book|author=C. J. Date|title=SQL and Relational Theory: How to Write Accurate SQL Code|url=https://books.google.com/books?id=WuZGD5tBfMwC&pg=PA133|year=2011|publisher=O'Reilly Media, Inc.|isbn=978-1-4493-1974-8|pages=133–135}}</ref> डेटाबेस सिद्धांत में, इसे विस्तारित प्रक्षेपण कहा जाता है।<ref name="Garcia-MolinaUllman2009"/>{{rp|213}}


==== एकत्रीकरण ====
==== समुचच्चयन ====
इसके अलावा, एक स्तंभ पर विभिन्न कार्यों की गणना करना, जैसे कि इसके तत्वों का योग, अब तक पेश किए गए संबंधपरक बीजगणित का उपयोग करना भी संभव नहीं है। अधिकांश संबंधपरक डेटाबेस प्रणाली के साथ सम्मिलित किए गए पांच समग्र कार्य हैं। ये ऑपरेशन सम, काउंट, एवरेज, मैक्सिमम और मिनिमम हैं। संबंधपरक बीजगणित में एक स्कीमा पर एकत्रीकरण ऑपरेशन (<sub>1</sub>, <sub>2</sub>, ... <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>
जहां प्रत्येक <sub>''j''</sub>', 1 ≤ j ≤ k, A के मूल गुणों में से एक है<sub>''i''</sub>, 1 ≤ मैं एन।
जहां प्रत्येक ''A<sub>j</sub>''', 1 ≤ j ≤ k, A मूल गुणों में से एक है<sub>''i''</sub>, 1 ≤ i n।


जी से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए एकत्रीकरण कार्यों की मनमानी संख्या होती है। संक्रिया एक स्वेच्छ संबंध r पर लागू होती है। समूहीकरण विशेषताएँ वैकल्पिक हैं, और यदि वे आपूर्ति नहीं की जाती हैं, तो एकत्रीकरण कार्य पूरे संबंध पर लागू होते हैं, जिस पर कार्रवाई लागू होती है।
G से पहले की विशेषताएँ समूहीकरण विशेषताएँ हैं, जो एसक्यूएल में समूह द्वारा खंड की तरह कार्य करती हैं। फिर अलग-अलग विशेषताओं पर लागू किए गए समुचच्चयन फलनो की स्वेच्छ संख्या होती है। संक्रिया एक स्वेच्छ संबंध 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|अकाउंट_नंबर, ब्रांच_नेम}} और शेष नाम से तीन कॉलम के साथ {{mono|अकाउंट }} नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह <sub>{{mono|ब्रांच_नेम}}</sub>G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) लिख सकते हैं।


ग्रुपिंग को प्रायः लिखा जाता है <sub>{{mono|Branch_Name}}</sub>ɣ<sub>Max({{mono|Balance}})</sub>({{mono|Account}}) बजाय।<ref name="Garcia-MolinaUllman2009"></ref>
वर्गीकरण को अक्सर इसके बजाय <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>
यह इस तथ्य का उपयोग करके सिद्ध किया जा सकता है कि कोई संबंधपरक बीजगणित व्यंजक 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 से इस तरह के [[पुनरावर्ती प्रश्नों]] का समर्थन करता है, चुकी इससे पहले इस दिशा में विक्रेता-विशिष्ट विस्तार थे।
यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली लगता है, संबंध (डेटाबेस) पर कुछ सरल और प्राकृतिक संचालक हैं जिन्हें संबंधपरक बीजगणित द्वारा व्यक्त नहीं किया जा सकता है। उनमें से एक द्विआधारी संबंध का सकर्मक समापन है। एक डोमेन डी दिया गया है, बाइनरी रिलेशन आर को डी × डी का सबसमुच्चय होने दें। सकर्मक बंद आर<sup>+</sup> R का 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>
== क्वेरी इष्टमीकरण के लिए बीजगणितीय गुणों का उपयोग ==
यह इस तथ्य का उपयोग करके सिद्ध किया जा सकता है कि कोई संबंधपरक बीजगणित अभिव्यक्ति 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 से एसक्यूएल में इस तरह के पदानुक्रमित और पुनरावर्ती प्रश्नों का समर्थन करता है, और इससे पहले इस दिशा में विक्रेता-विशिष्ट एक्सटेंशन थे।


== क्वेरी अनुकूलन के लिए बीजगणितीय गुणों का उपयोग ==
[[ संबंधपरक प्रश्न | प्रश्नों]] को एक [[ट्री]] के रूप में दर्शाया जा सकता है, जहां
{{unreferenced section|date=June 2013}}
[[ संबंधपरक प्रश्न ]] को ट्री (डेटा स्ट्रक्चर) के रूप में दर्शाया जा सकता है, जहां
* आंतरिक नोड प्रचालक हैं,
* आंतरिक नोड प्रचालक हैं,
* पत्तियां संबंध (डेटाबेस) हैं,
* पत्तियां [[संबंध]] हैं,
* सबट्री सबएक्सप्रेशन हैं।
* सबट्री उप-व्यंजक हैं।


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


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


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


==== मूल चयन गुण ====
==== मूल चयन गुण ====


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


#<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>। सम्मिलन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित स्थिति है। यदि चयन प्रचालक द्वारा अन्योन्य गुणन का पालन नहीं किया जाता है, तो हम अन्य चयन नियमों का उपयोग करके व्यंजक ट्री के उच्च स्तरों से चयन को नीचे पुश का प्रयास कर सकते हैं।


==== चयन और क्रॉस उत्पाद ====
उपरोक्त स्थिति में सम्मिश्र चयन स्थितियों के बारे में विभाजित नियमों का उपयोग करके स्थिति A को शर्तों B, C और D में विभाजित किया गया है, ताकि <math>A = B \wedge C \wedge D</math> और B में केवल R की विशेषताएँ हों, C में केवल P की विशेषताएँ हैं, और D में A का वह भाग हो जिसमें R और P दोनों की विशेषताएँ हो। ध्यान दें, कि B, C या D संभवतः खाली हैं। तो निम्नलिखित स्थिति होती है,
मूल्यांकन करने के लिए क्रॉस उत्पाद सबसे महंगा प्रचालक है। यदि निविष्ट संबंध (डेटाबेस) में N और M पंक्तियाँ हैं, तो परिणाम में सम्मिलित होंगे <math>NM</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>
#<math>\sigma_{A}(R\cup P)=\sigma_{A}(R)\cup\sigma_{A}(P)</math>
#<math>\sigma_{A}(R\cup P)=\sigma_{A}(R)\cup\sigma_{A}(P)</math>
#<math>\sigma_{A}(R\cap P)=\sigma_{A}(R)\cap\sigma_{A}(P)=\sigma_{A}(R)\cap P=R\cap \sigma_{A}(P)</math>
#<math>\sigma_{A}(R\cap P)=\sigma_{A}(R)\cap\sigma_{A}(P)=\sigma_{A}(R)\cap P=R\cap \sigma_{A}(P)</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>
:<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}(\pi_{b_1,\ldots , b_m}(R)) = \pi_{a_1, \ldots , a_n}(R)\text{ where }\{a_1, \ldots , a_n\} \subseteq \{b_1, \ldots , b_m\}</math>
:<math>\pi_{a_1, \ldots , a_n}(\pi_{b_1,\ldots , b_m}(R)) = \pi_{a_1, \ldots , a_n}(R)\text{ where }\{a_1, \ldots , a_n\} \subseteq \{b_1, \ldots , b_m\}</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_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 782: Line 752:
:<math>\pi_A(\{ \langle A=a, B=b \rangle \} \setminus \{ \langle A=a, B=b' \rangle \}) = \{ \langle A=a\rangle \}</math>
:<math>\pi_A(\{ \langle A=a, B=b \rangle \} \setminus \{ \langle A=a, B=b' \rangle \}) = \{ \langle A=a\rangle \}</math>
:<math>\pi_A(\{ \langle A=a, B=b \rangle \}) \setminus \pi_A(\{ \langle A=a, B=b' \rangle \}) = \emptyset\,,</math>
:<math>\pi_A(\{ \langle A=a, B=b \rangle \}) \setminus \pi_A(\{ \langle A=a, B=b' \rangle \}) = \emptyset\,,</math>
जहाँ 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]] एक अल्पकालिक उद्योग-शक्ति संबंधपरक डीबीएमएस था जो आईएसबीएल उदाहरण का पालन करता था।
कॉड के बीजगणित पर आधारित पहली क्वेरी भाषा अल्फा थी, जिसे स्वयं डॉ. कॉड ने विकसित किया था। इसके बाद, [[आईएसबीएल]] बनाया गया था, और इस अग्रणी कार्य को कई अधिकारियों द्वारा प्रशंसित भी गया है<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)|रेल]] ट्यूटोरियल डी का कार्यान्वयन है।


यहां तक ​​​​कि [[एसक्यूएल]] की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि एसक्यूएल ([[तालिका (डेटाबेस)]]) में संचालन वास्तव में [[संबंध]] (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय एसक्यूएल समकक्ष में नहीं हैं ( तर्कसंगत अनुकूलक और/या उपयोगकर्ताओं की हानि के लिए)। एसक्यूएल तालिका प्रारूप एक समुच्चय के बजाय एक बैग ( बहुसमुच्चय) है। उदाहरण के लिए, अभिव्यक्ति <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 816: Line 786:
* [[डी4 (प्रोग्रामिंग भाषा)]] (डी का कार्यान्वयन)
* [[डी4 (प्रोग्रामिंग भाषा)]] (डी का कार्यान्वयन)
* [[डेटाबेस]]
* [[डेटाबेस]]
* [[आपेक्षिक तर्क]]
* [[सापेक्ष का तर्क]]
* [[ऑब्जेक्ट-रोल मॉडलिंग]]
* [[ऑब्जेक्ट-रोल मॉडलिंग]]
* [[प्रक्षेप (गणित)]]
* [[प्रक्षेप (गणित)]]
Line 824: Line 794:
* संबंध (डेटाबेस)
* संबंध (डेटाबेस)
* [[संबंध बीजगणित]]
* [[संबंध बीजगणित]]
* [[संबंध रचना]]
* [[संबंध संयोजन]]
* [[संबंध निर्माण]]
* [[संबंध निर्माण]]
* [[संबंधपरक गणना]]
* [[संबंधपरक कैलकुलस]]
* संबंध का डेटाबेस
* संबधपरक डेटाबेस
* संबंधपरक मॉडल
* संबंधपरक प्रारूप
* [[संबंधों का सिद्धांत]]
* [[संबंधों का सिद्धांत]]
* [[त्रिक संबंध]]
* [[त्रिक संबंध]]
* [[त्रिक संबंध गणना]]
* [[त्रिक संबंधपरक कैलकुलस]]
* एसक्यूएल
* एसक्यूएल
* डेटा लॉग
* डेटा लॉग
Line 851: Line 821:


== बाहरी संबंध ==
== बाहरी संबंध ==
{{external links|date=January 2017}}
* [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 एसक्यूएल 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 Stएएनडीford 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, एएनडी includes numerous citations for more in-depth study.
* [http://www.cse.fau.edu/~marty#RADownload Relational Algebra System for Oracle and Microsoft एसक्यूएल Server]
* [http://www.cse.fau.edu/~marty#RADownload Relational Algebra System for Oracle एएनडी 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 एएनडी 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 एसक्यूएल to Relational Algebra]
* [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating एसक्यूएल to Relational Algebra]
{{Databases}}
[[Category: संबंधपरक बीजगणित | संबंधपरक बीजगणित ]] [[Category: संबंधपरक मॉडल]]


[[Category: Machine Translated Page]]
[[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 × S| = |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) को संतुष्ट करता हो

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

एंटीजोड़ को सेमीजोड़ के पूरक के रूप में भी परिभाषित किया जा सकता है,

RS = R − RS

 

 

 

 

(5)

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

विभाजन (÷)

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

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

R ÷ S = { t[a1,...,an] : tR ∧ ∀sS ( (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 के गुण नहीं हैं)। फिर, जैसा कि बाएँ बाहरी जोड़ के साथ होता है, दाएँ बाहरी जोड़ को प्राकृतिक जोड़ का उपयोग करके अनुकरण किया जा सकता है,

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

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

पूर्ण बाहरी जुड़ाव को RS के रूप में लिखा जाता है जहां 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]

यह भी देखें

टिप्पणियाँ

  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.


बाहरी संबंध