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

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


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


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


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


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


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


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


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


इसके अलावा, कार्तीय गुणन को [[सेट (गणित)|समुच्चय (गणित)]] सिद्धांत में एक से अलग तरीके से परिभाषित किया गया है, इस अर्थ में कि प्रचालक के प्रयोजनों के लिए टुपल्स को "उथला" माना जाता है। अर्थात्, m-टुपल्स के समुच्चय के साथ n-टुपल्स के समुच्चय का कार्तीय गुणन "सपाट" {{math|(''n'' + ''m'')}}-टुपल्स का एक समुच्चय उत्पन्न करता है (जबकि बुनियादी समुच्चय सिद्धांत ने 2-टुपल्स का एक समुच्चय निर्धारित किया होगा, प्रत्येक में एक n-टुपल और एक m-टुपल होगा)। अधिक औपचारिक रूप से, 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>
Line 33: Line 32:
{{Main|प्रक्षेपण (संबंधपरक बीजगणित)}}
{{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> तक सीमित होते हैं।  
एक प्रक्षेपण एक[[ एकात्मक ऑपरेशन | एकल संक्रिया]] है जिसे <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> [[कीवर्ड]] को जोड़कर प्राप्त किया जाता है।
नोट, जब [[एसक्यूएल]] मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रक्षेपण एक समुच्चय के बजाय एक [[ multiset |मल्टीसेट]] लौटाता है, और डुप्लीकेट डेटा को खत्म करने के लिए {{math|&Pi;}} प्रक्षेपण <code>पृथक</code> [[कीवर्ड]] को जोड़कर प्राप्त किया जाता है।
Line 42: Line 41:
एक [[सामान्यीकृत चयन]] एक [[एकल संक्रिया]] है जिसे <math>\sigma_\varphi(R)</math> के रूप में लिखा जाता है जहाँ {{φ}} एक [[प्रस्तावनात्मक सूत्र]] है जिसमें चयन (संबंधपरक बीजगणित) में [[अनुमत परमाणुओं]] और तार्किक संकारक {{and}} ([[तार्किक संयोजन]]), {{or-}} (तार्किक संयोजन) [[और]] {{Not}} ([[निषेध]]) सम्मिलित हैं। यह चयन R में उन सभी [[ट्यूपल्स]] का चयन करता है जिनके लिए {{φ}} धारण करता है।
एक [[सामान्यीकृत चयन]] एक [[एकल संक्रिया]] है जिसे <math>\sigma_\varphi(R)</math> के रूप में लिखा जाता है जहाँ {{φ}} एक [[प्रस्तावनात्मक सूत्र]] है जिसमें चयन (संबंधपरक बीजगणित) में [[अनुमत परमाणुओं]] और तार्किक संकारक {{and}} ([[तार्किक संयोजन]]), {{or-}} (तार्किक संयोजन) [[और]] {{Not}} ([[निषेध]]) सम्मिलित हैं। यह चयन R में उन सभी [[ट्यूपल्स]] का चयन करता है जिनके लिए {{φ}} धारण करता है।


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


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


किसी संबंध में मित्र विशेषता का नाम बदलकर व्यवसाय संपर्क करने के लिए, <math>\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )</math> का उपयोग किया जा सकता है।
किसी संबंध में मित्र विशेषता का नाम बदलकर व्यवसाय संपर्क करने के लिए, <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>
<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>
Line 108: Line 107:
इसका उपयोग [[संबंधों की संरचना को परिभाषित]] करने के लिए भी किया जा सकता है। उदाहरण के लिए, कर्मचारी और विभाग की संरचना उनका जुड़ाव है जैसा कि ऊपर दिखाया गया है, सामान्य विशेषता विभाग के नाम को छोड़कर सभी पर अनुमानित है। [[श्रेणी सिद्धांत]] में, जुड़ना ठीक [[फाइबर उत्पाद]] है।
इसका उपयोग [[संबंधों की संरचना को परिभाषित]] करने के लिए भी किया जा सकता है। उदाहरण के लिए, कर्मचारी और विभाग की संरचना उनका जुड़ाव है जैसा कि ऊपर दिखाया गया है, सामान्य विशेषता विभाग के नाम को छोड़कर सभी पर अनुमानित है। [[श्रेणी सिद्धांत]] में, जुड़ना ठीक [[फाइबर उत्पाद]] है।


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


अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है,
अधिक औपचारिक रूप से प्राकृतिक जुड़ाव के शब्दों को निम्नानुसार परिभाषित किया गया है,
Line 114: Line 113:
{{NumBlk|:|<math>R \bowtie S = \left\{ r \cup s \ \vert \ r \in R \ \land \ s \in S \ \land \ \mathit{Fun}(r \cup s) \right\}</math>|{{EquationRef|1}}}}
{{NumBlk|:|<math>R \bowtie S = \left\{ r \cup s \ \vert \ r \in R \ \land \ s \in S \ \land \ \mathit{Fun}(r \cup s) \right\}</math>|{{EquationRef|1}}}}


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


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


{{NumBlk|:|<math>T = \rho_{x_1/c_1,\ldots,x_m/c_m}(S) = \rho_{x_1/c_1}(\rho_{x_2/c_2}(\ldots\rho_{x_m/c_m}(S)\ldots))</math>|{{EquationRef|2}}}}
{{NumBlk|:|<math>T = \rho_{x_1/c_1,\ldots,x_m/c_m}(S) = \rho_{x_1/c_1}(\rho_{x_2/c_2}(\ldots\rho_{x_m/c_m}(S)\ldots))</math>|{{EquationRef|2}}}}
Line 129: Line 128:


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
Line 172: Line 171:
{{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 और S संबंध हैं। इस संचालन के परिणाम में R और S में ट्यूपल्स के सभी संयोजन सम्मिलित हैं जो θ को संतुष्ट करते हैं। θ-जोड़ का परिणाम केवल तभी परिभाषित किया जाता है जब S और R के शीर्षलेख अलग होते हैं, यानी इसमें एक सामान्य विशेषता नहीं होती है।
टुपल्स को दो संबंधों से संयोजित करने के लिए जहां संयोजन की स्थिति केवल साझा विशेषताओं की समानता नहीं है, इसमें सम्मिलित होने वाले प्रचालक का अधिक सामान्य रूप होना सुविधाजनक है, जो θ-जोड़ (या थीटा-जोड़) है। θ-जोड़ एक द्विआधारी संकारक है जिसे <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 के शीर्षलेख अलग होते हैं, अर्थात इसमें एक सामान्य विशेषता नहीं होती है।


मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है
मौलिक संचालन में इस संचालन का अनुकरण इस प्रकार है
Line 230: Line 229:
जहां <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>
Line 295: Line 294:


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


{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
Line 339: Line 338:
{{col-end}}यदि डीबी प्रोजेक्ट में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है,{{NumBlk|:| {{math|''R'' ÷ ''S'' {{=}} { ''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] : ''t'' ∈ ''R'' ∧ ∀''s'' ∈ ''S'' ( (''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] ∪ ''s'') ∈ ''R'') } }} |{{EquationRef|6}}}}जहाँ {a<sub>1</sub>,...,a<sub>''n''</sub>} विशेषता नामों का समुच्चय है जो R लिए अद्वितीय है और t [a<sub>1</sub>,...,a<sub>''n''</sub>] इस समुच्चय के लिए t का प्रतिबंध है। आमतौर पर यह आवश्यक है कि S के शीर्षलेख में गुण नाम R के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा।
{{col-end}}यदि डीबी प्रोजेक्ट में डेटाबेस प्रोजेक्ट के सभी कार्य सम्मिलित हैं, तो उपरोक्त विभाजन के परिणाम में ठीक वही छात्र सम्मिलित हैं जिन्होंने डेटाबेस प्रोजेक्ट में दोनों कार्य पूरे कर लिए हैं। अधिक औपचारिक रूप से विभाजन के शब्दों को निम्नानुसार परिभाषित किया गया है,{{NumBlk|:| {{math|''R'' ÷ ''S'' {{=}} { ''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] : ''t'' ∈ ''R'' ∧ ∀''s'' ∈ ''S'' ( (''t''[''a''<sub>1</sub>,...,''a''<sub>''n''</sub>] ∪ ''s'') ∈ ''R'') } }} |{{EquationRef|6}}}}जहाँ {a<sub>1</sub>,...,a<sub>''n''</sub>} विशेषता नामों का समुच्चय है जो R लिए अद्वितीय है और t [a<sub>1</sub>,...,a<sub>''n''</sub>] इस समुच्चय के लिए t का प्रतिबंध है। आमतौर पर यह आवश्यक है कि S के शीर्षलेख में गुण नाम R के सबसमुच्चय हैं क्योंकि अन्यथा संचालन का परिणाम हमेशा खाली रहेगा।


मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि a<sub>1</sub>,...,a<sub>''n''</sub> गुण नाम R के लिए अद्वितीय हैं और b<sub>1</sub>,...,b<sub>''m''</sub> S के गुण नाम हैं। पहले चरण में हम R को इसके अद्वितीय गुण नामों पर प्रोजेक्ट करते हैं और S में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं,
मूल संचालन के साथ विभाजन का अनुकरण इस प्रकार है। हम मानते हैं कि a<sub>1</sub>,...,a<sub>''n''</sub> गुण नाम R के लिए अद्वितीय हैं और b<sub>1</sub>,...,b<sub>''m''</sub> S के गुण नाम हैं। पहले चरण में हम R को इसके अद्वितीय गुण नामों पर प्रोजेक्ट करते हैं और S में टुपल्स के साथ सभी संयोजनों का निर्माण करते हैं,
: ''T'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') × ''S''
: ''T'' := π<sub>''a''<sub>1</sub>,...,''a<sub>n</sub>''(''R'') × ''S''


Line 345: Line 344:


:: ईजी, सबसे पहले, आइए दिखाते हैं कि "पूर्ण" में "श्रेणी" नामक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रोजेक्ट करना चाहिए। वास्तव में इस चरण में हम "कार्य" को R से भी छोड़ सकते हैं, गुणा इसे वापस रखता है।
:: ईजी, सबसे पहले, आइए दिखाते हैं कि "पूर्ण" में "श्रेणी" नामक तीसरी विशेषता है। यह यहाँ अवांछित सामान है, इसलिए हमें इसे हमेशा प्रोजेक्ट करना चाहिए। वास्तव में इस चरण में हम "कार्य" को R से भी छोड़ सकते हैं, गुणा इसे वापस रखता है।
:: ''T'':= π<sub>छात्र</sub>(''R'') × ''S'' // दूसरों को छोड़कर ,यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में ''R'' में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है)
:: ''T'':= π<sub>छात्र</sub>(''R'') × ''S'' // दूसरों को छोड़कर,यह हमें हर संभव वांछित संयोजन देता है, जिसमें वे सम्मिलित हैं जो वास्तव में ''R'' में मौजूद नहीं हैं, (उदाहरण के लिए फ्रेड | कंपाइलर 1, जो एक वांछित संयोजन नहीं है)
{{col-begin|width=auto; margin:0.5em auto}}
{{col-begin|width=auto; margin:0.5em auto}}
{{col-break|gap=5em}}
{{col-break|gap=5em}}
Line 608: Line 607:
'''बाहरी जोड़''' या '''पूर्ण बाहरी जुड़ाव''' प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है।
'''बाहरी जोड़''' या '''पूर्ण बाहरी जुड़ाव''' प्रभाव में बाएँ और दाएँ बाहरी जोड़ के परिणामों को जोड़ता है।


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


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


मान लेते हैं कि हमारे पास {{mono|अकाउंट_नंबर, ब्रांच_नेम}} और शेष नाम से तीन कॉलम के साथ {{mono|अकाउंट }} नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह <sub>{{mono|ब्रांच_नेम}}</sub>G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) लिख सकते हैं।
मान लेते हैं कि हमारे पास {{mono|अकाउंट_नंबर, ब्रांच_नेम}} और शेष नाम से तीन कॉलम के साथ {{mono|अकाउंट }} नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह <sub>{{mono|ब्रांच_नेम}}</sub>G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल G<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) लिख सकते हैं।


ग्रुपिंग को प्रायः इसके बजाय <sub>{{mono|ब्रांच_नेम}}</sub>ɣ<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) के रूप में लिखा जाता है।<ref name="Garcia-MolinaUllman2009"></ref>
ग्रुपिंग को प्रायः इसके बजाय <sub>{{mono|ब्रांच_नेम}}</sub>ɣ<sub>मैक्स({{mono|बैलेंस }})</sub>({{mono|अकाउंट }}) के रूप में लिखा जाता है।<ref name="Garcia-MolinaUllman2009"></ref>
Line 688: Line 687:


== क्वेरी इष्टमीकरण के लिए बीजगणितीय गुणों का उपयोग ==
== क्वेरी इष्टमीकरण के लिए बीजगणितीय गुणों का उपयोग ==
{{unreferenced section|date=जून 2013}}
[[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] में अक्सर एक [[क्वेरी अनुकूलक]] सम्मिलित होता है जो किसी दिए गए क्वेरी को निष्पादित करने का सबसे कुशल तरीका निर्धारित करने का प्रयास करता है। क्वेरी अनुकूलक संभावित [[क्वेरी योजनाओं]] की गणना करते हैं, उनकी लागत का अनुमान लगाते हैं और सबसे कम अनुमानित लागत वाली योजना चुनते हैं। यदि प्रश्नों को संबंधपरक बीजगणित से प्रचालको द्वारा दर्शाया जाता है, तो क्वेरी अनुकूलक इन प्रचालको के बीजगणितीय गुणों का उपयोग करके प्रारंभिक क्वेरी को फिर से लिखकर संभावित क्वेरी योजनाओं की गणना कर सकता है।
[[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] में अक्सर एक [[क्वेरी अनुकूलक]] सम्मिलित होता है जो किसी दिए गए क्वेरी को निष्पादित करने का सबसे कुशल तरीका निर्धारित करने का प्रयास करता है। क्वेरी अनुकूलक संभावित [[क्वेरी योजनाओं]] की गणना करते हैं, उनकी लागत का अनुमान लगाते हैं और सबसे कम अनुमानित लागत वाली योजना चुनते हैं। यदि प्रश्नों को संबंधपरक बीजगणित से प्रचालको द्वारा दर्शाया जाता है, तो क्वेरी अनुकूलक इन प्रचालको के बीजगणितीय गुणों का उपयोग करके प्रारंभिक क्वेरी को फिर से लिखकर संभावित क्वेरी योजनाओं की गणना कर सकता है।


Line 782: Line 780:
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 823: 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
Line 835: Line 832:
* [https://users.cs.duke.edu/~junyang/ra2/ RA: A Relational Algebra Interpreter]
* [https://users.cs.duke.edu/~junyang/ra2/ RA: A Relational Algebra Interpreter]
* [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating एसक्यूएल to Relational Algebra]
* [http://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra Translating एसक्यूएल to Relational Algebra]
{{Databases}}
[[Category: संबंधपरक बीजगणित | संबंधपरक बीजगणित ]] [[Category: संबंधपरक मॉडल]]  
[[Category: संबंधपरक बीजगणित | संबंधपरक बीजगणित ]] [[Category: संबंधपरक मॉडल]]  



Revision as of 15:22, 23 March 2023

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

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

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

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

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

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

प्रस्तावना

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

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

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

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

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

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

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

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

प्रक्षेपण (Π)

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

नोट, जब एसक्यूएल मानक में कार्यान्वित किया जाता है तो डिफ़ॉल्ट प्रक्षेपण एक समुच्चय के बजाय एक मल्टीसेट लौटाता है, और डुप्लीकेट डेटा को खत्म करने के लिए Π प्रक्षेपण पृथक कीवर्ड को जोड़कर प्राप्त किया जाता है।

चयन (एस)

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

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

नाम बदलें (ρ)

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

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

अंकन भी है, जहाँ 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 के शीर्षलेख अलग होते हैं, अर्थात इसमें एक सामान्य विशेषता नहीं होती है।

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

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

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

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

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

सेमिजोड़ (⋉ और ⋊)

बायाँ सेमीजोड़ प्राकृतिक जोड़ के समान एक जोड़ है और इसे लिखा जाता है, जहाँ और संबंध (डेटाबेस) हैं।[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 के शीर्षलेख में, लेकिन 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 में।

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

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

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

U := T - R

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

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

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

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

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

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

W:= πa1,...,an(R) - V
ईजी: डब्ल्यू: = πStudent(आर) - वी।

सामान्य विस्तार

अभ्यास में ऊपर वर्णित शास्त्रीय संबंधपरक बीजगणित को विभिन्न संक्रियाओं जैसे बाहरी जोड़, योग संचालन और यहां तक ​​कि सकर्मक संवरण के साथ विस्तारित किया गया है।[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 ≤ मैं ≤ n।

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

मान लेते हैं कि हमारे पास अकाउंट_नंबर, ब्रांच_नेम और शेष नाम से तीन कॉलम के साथ अकाउंट नाम की एक तालिका है। हम प्रत्येक ब्रांच की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह ब्रांच_नेमGमैक्स(बैलेंस )(अकाउंट ) द्वारा पूरा किया जाता है।ब्रांच की परवाह किए बिना सभी अकाउंट की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल Gमैक्स(बैलेंस )(अकाउंट ) लिख सकते हैं।

ग्रुपिंग को प्रायः इसके बजाय ब्रांच_नेमɣमैक्स(बैलेंस )(अकाउंट ) के रूप में लिखा जाता है।[6]

सकर्मक संवरण

यद्यपि संबंधपरक बीजगणित अधिकांश व्यावहारिक उद्देश्यों के लिए पर्याप्त शक्तिशाली लगता है, संबंधों (डेटाबेस) पर कुछ सरल और प्राकृतिक संचालक हैं जिन्हें संबंधपरक बीजगणित द्वारा व्यक्त नहीं किया जा सकता है। उनमें से एक द्विआधारी संबंध का सकर्मक संवरण है। द्विचर संबंध आर को 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.


बाहरी संबंध