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

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


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


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


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


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


अन्य अधिक उन्नत ऑपरेटरों को भी शामिल किया जा सकता है, जहां कुछ ऑपरेटरों का समावेश या बहिष्करण बीजगणित के एक परिवार को जन्म देता है।
अन्य अधिक उन्नत ऑपरेटरों को भी शामिल किया जा सकता है, जहां कुछ ऑपरेटरों का समावेश या बहिष्करण बीजगणित के एक परिवार को जन्म देता है।
Line 695: Line 695:
मान लेते हैं कि हमारे पास नाम की एक तालिका है {{mono|Account}} तीन स्तंभों के साथ, अर्थात् {{mono|Account_Number, Branch_Name}} और {{mono|Balance}}. हम प्रत्येक शाखा की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह द्वारा पूरा किया जाता है <sub>{{mono|Branch_Name}}</sub>G<sub>Max({{mono|Balance}})</sub>({{mono|Account}}). शाखा की परवाह किए बिना सभी खातों की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल जी लिख सकते हैं<sub>Max({{mono|Balance}})</sub>({{mono|Account}}).
मान लेते हैं कि हमारे पास नाम की एक तालिका है {{mono|Account}} तीन स्तंभों के साथ, अर्थात् {{mono|Account_Number, Branch_Name}} और {{mono|Balance}}. हम प्रत्येक शाखा की अधिकतम शेष राशि का पता लगाना चाहते हैं। यह द्वारा पूरा किया जाता है <sub>{{mono|Branch_Name}}</sub>G<sub>Max({{mono|Balance}})</sub>({{mono|Account}}). शाखा की परवाह किए बिना सभी खातों की उच्चतम शेष राशि का पता लगाने के लिए, हम केवल जी लिख सकते हैं<sub>Max({{mono|Balance}})</sub>({{mono|Account}}).


ग्रुपिंग को अक्सर लिखा जाता है <sub>{{mono|Branch_Name}}</sub>ɣ<sub>Max({{mono|Balance}})</sub>({{mono|Account}}) बजाय।<ref name="Garcia-MolinaUllman2009"></ref>
ग्रुपिंग को प्रायः लिखा जाता है <sub>{{mono|Branch_Name}}</sub>ɣ<sub>Max({{mono|Balance}})</sub>({{mono|Account}}) बजाय।<ref name="Garcia-MolinaUllman2009"></ref>




Line 737: Line 737:


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


यह प्रभावी ढंग से किया जा सकता है यदि चयन ऑपरेटर द्वारा क्रॉस उत्पाद का पालन किया जाता है, उदा। <math>\sigma_{A}(R \times P)</math>. ज्वाइन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित मामला है। यदि चयन ऑपरेटर द्वारा क्रॉस उत्पाद का पालन नहीं किया जाता है, तो हम अन्य चयन नियमों का उपयोग करके अभिव्यक्ति ट्री के उच्च स्तरों से चयन को नीचे धकेलने का प्रयास कर सकते हैं।
यह प्रभावी ढंग से किया जा सकता है यदि चयन ऑपरेटर द्वारा क्रॉस उत्पाद का पालन किया जाता है, उदा। <math>\sigma_{A}(R \times P)</math>. ज्वाइन की परिभाषा को ध्यान में रखते हुए, यह सबसे संभावित मामला है। यदि चयन ऑपरेटर द्वारा क्रॉस उत्पाद का पालन नहीं किया जाता है, तो हम अन्य चयन नियमों का उपयोग करके अभिव्यक्ति ट्री के उच्च स्तरों से चयन को नीचे धकेलने का प्रयास कर सकते हैं।

Revision as of 04:26, 12 March 2023

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

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

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

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

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

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

परिचय

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

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

सेट ऑपरेटरों

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

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

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

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

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

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

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

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

चयन (एस)

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

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

नाम बदलें (ρ)

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

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

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


जॉइन और जॉइन-लाइक ऑपरेटर्स

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

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

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

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

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

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

 

 

 

 

(1)

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

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

 

 

 

 

(2)

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

 

 

 

 

(3)

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

 

 

 

 

(4)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


एंटीजॉइन (▷)

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

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

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

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

या

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

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

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

RS = R − RS

 

 

 

 

(5)

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

डिवीजन (÷)

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

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

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

 

 

 

 

(6)

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

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

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

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

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

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

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

यू := टी - आर

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

एकत्रीकरण

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

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

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

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

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


सकर्मक बंद

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

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

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

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

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

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

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

चयन

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

मूल चयन गुण

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


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

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


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

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

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

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


चयन और सेट ऑपरेटर

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


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

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


प्रोजेक्शन

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

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


प्रोजेक्शन और सेट ऑपरेटर

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

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

और

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

नाम बदलें

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

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


नाम बदलें और ऑपरेटरों को सेट करें

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


उत्पाद और संघ

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


कार्यान्वयन

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

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

यहां तक ​​​​कि SQL की क्वेरी भाषा भी एक संबंधपरक बीजगणित पर आधारित है, हालांकि SQL (तालिका (डेटाबेस)) में संचालन वास्तव में संबंध (डेटाबेस) नहीं हैं और संबंधपरक बीजगणित के बारे में कई उपयोगी प्रमेय SQL समकक्ष में नहीं हैं ( यकीनन ऑप्टिमाइज़र और/या उपयोगकर्ताओं की हानि के लिए)। SQL टेबल मॉडल एक सेट के बजाय एक बैग (मल्टीसेट) है। उदाहरण के लिए, अभिव्यक्ति सेट पर संबंधपरक बीजगणित के लिए एक प्रमेय है, लेकिन बैग पर संबंधपरक बीजगणित के लिए नहीं; थैलों पर संबंधपरक बीजगणित के उपचार के लिए गार्सिया मोलिना , जेफरी उल्मैन और जेनिफर विडोम द्वारा कम्प्लीट टेक्स्टबुक का अध्याय 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.


बाहरी संबंध