सेट (अमूर्त डेटा प्रकार)

कंप्यूटर विज्ञान में, सेट एक सार डेटा प्रकार है जो बिना किसी विशेष क्रम के अद्वितीय मूल्यों को संग्रहीत कर सकता है। यह परिमित सेट की गणित अवधारणा का कंप्यूटर कार्यान्वयन है। अधिकांश अन्य संग्रह (सार डेटा प्रकार) प्रकारों के विपरीत, सेट से विशिष्ट तत्व को पुनः प्राप्त करने के अतिरिक्त, सामान्यतः सेट में सदस्यता के लिए मूल्य का परीक्षण किया जाता है।

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

बहुसेट विशेष प्रकार का सेट है, जिसमें तत्व सेट में कई बार दिखाई दे सकता है।

प्रकार सिद्धांत
प्रकार सिद्धांत में, सेट सामान्यतः उनके संकेतक फ़ंक्शन (विशेषता समारोह) के साथ पहचाने जाते हैं: तदनुसार, $$A$$ प्रकार के मूल्यों का सेट $$2^{A}$$ या $$\mathcal{P}(A)$$ द्वारा दर्शाया जा सकता है। (उपप्रकार एवं सेट को शोधन प्रकार द्वारा प्रतिरूपित किया जा सकता है, एवं भागफल सेट को परिवर्तनीय सेट द्वारा प्रतिस्थापित किया जा सकता है।) विशेषता कार्य $$F$$ सेट को $$S$$ के रूप में परिभाषित किया जाता है।
 * $$F(x) = \begin{cases}

1, & \mbox{if } x \in S \\ 0, & \mbox{if } x \not \in S \end{cases} $$ सिद्धांत रूप में, कई अन्य अमूर्त डेटा संरचनाओं को मानक संचालन पर लगाए गए अतिरिक्त संचालन एवं अतिरिक्त सिद्धांतों के साथ सेट संरचनाओं के रूप में देखा जा सकता है। उदाहरण के लिए, अमूर्त हीप डेटा संरचना को सेट संरचना के रूप में देखा जा सकता है  संचालन जो सबसे अल्प मूल्य का तत्व लौटाता है।

कोर सेट-सैद्धांतिक संचालन
कोई सेट के बीजगणित के संचालन को परिभाषित कर सकता है:
 * : सेट S एवं T का संघ (सेट सिद्धांत) लौटाता है।
 * : सेट S एवं T का प्रतिच्छेदन (सेट सिद्धांत) लौटाता है।
 * : सेट S एवं T का अंतर (सेट सिद्धांत) लौटाता है।
 * : विधेय जो परीक्षण करता है कि क्या सेट S, T का सेट है।

स्थैतिक सेट
स्थैतिक सेट स्थिर S द्वारा प्रदान किए जा सकने वाले विशिष्ट संचालन हैं:
 * : परिक्षण किया जाता है कि क्या मान x सेट S में है।
 * : परिक्षण किया जाता है कि सेट S रिक्त है या नहीं।
 * या : S में तत्वों की संख्या लौटाता है।
 * : ऐसा फ़ंक्शन लौटाता है जो प्रत्येक आह्वान पर S का क्रम में मान देता है।
 * : कुछ क्रम में S के तत्वों वाली सूची देता है।
 * : मान x के साथ x1,x2,...,xn सेट संरचना बनाता है।
 * : दिए गए संग्रह के सभी तत्वों (सार डेटा प्रकार) या दिए गए पुनरावर्तक द्वारा लौटाए गए सभी तत्वों वाली नई सेट संरचना बनाता है।

गतिशील सेट
गतिशील सेट संरचनाएं सामान्यतः जोड़ती हैं,
 * : प्रारंभ में रिक्त सेट संरचना बनाता है।
 * : नई सेट संरचना बनाता है, प्रारंभ में रिक्त किन्तु n तत्वों तक धारण करने में सक्षम होते है।
 * : तत्व x को S में जोड़ता है, यदि यह पहले से उपस्थित नहीं है।
 * : तत्व x को S से विस्थापित करता है, यदि यह उपस्थित है।
 * : S द्वारा धारण किए जा सकने वाले मानों की अधिकतम संख्या लौटाता है।

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

अतिरिक्त संचालन
ऐसे कई अन्य संचालन हैं जिन्हें (सिद्धांत रूप में) उपरोक्त के संदर्भ में परिभाषित किया जा सकता है, जैसे: अन्य कार्यों को विशेष प्रकार के तत्वों वाले सेट के लिए परिभाषित किया जा सकता है:
 * : S का एक तत्व लौटाता है, इसे S से विस्थापित कर देता है।
 * : S का तत्व लौटाता है।  कार्यात्मक रूप से, उत्परिवर्ती   चयनकर्ताओं की जोड़ी के रूप में व्याख्या की जा सकती है   जहाँ   तत्व को त्यागकर सभी तत्वों से युक्त सेट लौटाता है।   के रूप में समझा जा सकता है।
 * : फ़ंक्शन F को S के प्रत्येक तत्व पर प्रारम्भ करने के परिणामस्वरूप भिन्न मानों का सेट लौटाता है।
 * : s के सभी तत्वों से युक्त सबसेट लौटाता है जो किसी दिए गए विधेय (गणितीय तर्क) p को संतुष्ट करता है।
 * : मान Aundefined लौटाता है, आवेदन करने के पश्चात  S के प्रत्येक तत्व e के लिए, कुछ बाइनरी संचालन F के लिए परिभाषित करने के लिए सहयोगी एवं कम्यूटेटिव होना चाहिए।
 * : s के सभी तत्वों को विस्थापित कर दें।
 * : परीक्षण करता है कि क्या दिए गए दो सेट समान हैं (अर्थात सभी एवं केवल समान तत्व सम्मिलित हैं)।
 * : स्थिर सेट S के लिए मिश्रण मान लौटाता है जैसे कि if  तब
 * : योग की कुछ परिभाषा के लिए S के सभी तत्वों का योग लौटाता है। उदाहरण के लिए, पूर्णांक या वास्तविक से अधिक, इसे  इस रूप में परिभाषित किया जा सकता है।
 * : सेट का सेट दिया गया है, संघ वापस करें, उदाहरण के लिए,   प्रकार का माना जा सकता है।
 * : सेट एवं परमाणु तत्वों (तत्व जो सेट नहीं हैं) से मिलकर सेट दिया गया है, सेट देता है जिसके तत्व मूल शीर्ष-स्तरीय सेट के परमाणु तत्व या सेट के तत्व होते हैं। दूसरे शब्दों में, नेस्टिंग के स्तर को विस्थापित कर दें- जैसे  किन्तु परमाणुओं की अनुमति दें। यह किया जा सकता है, या केवल परमाणु तत्वों का सेट प्राप्त करने के लिए पुनरावर्ती किया जा सकता है। उदाहरण के लिए,  होता है।
 * : S का तत्व लौटाता है जो x के मूल्य में निकटतम है (कुछ मीट्रिक (गणित) द्वारा)।
 * , : S का न्यूनतम/अधिकतम तत्व लौटाता है।

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

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

इसके अतिरिक्त, उन भाषाओं में जो मानचित्रका समर्थन करती हैं किन्तु सेट का नहीं, सेट को मानचित्र के संदर्भ में प्रारम्भ किया जा सकता है। उदाहरण के लिए, पर्ल में सामान्य प्रोग्रामिंग मुहावरा जो सरणी को मिश्रण में परिवर्तित करता है जिसका मूल्य प्रहरी मान 1 है। सेट के रूप में उपयोग के लिए: अन्य लोकप्रिय विधियों में सरणी डेटा संरचना सम्मिलित है। विशेष रूप से पूर्णांक 1..n का सेट n- बिट सरणी के रूप में कुशलतापूर्वक कार्यान्वित किया जा सकता है, जो अधिक ही कुशल संघ एवं अन्तःखण्ड के संचालन का भी समर्थन करता है। ब्लूम मैप अधिक ही ठोस प्रतिनिधित्व का उपयोग करते हुए संभावित रूप से सेट को प्रारम्भ करता है, किन्तु प्रश्नों पर सकारात्मकता की अल्प संभावना को संकट में डालता है।

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

भाषा समर्थन
पास्कल प्रोग्रामिंग भाषा सेट का समर्थन करने वाली प्रारंभिक भाषाओं में से थी; कई भाषाओं में अब यह सम्मिलित है, मूल भाषा में हो या किसी मानक पुस्तकालय में होता है। जैसा कि पूर्व खंड में उल्लेख किया गया है, उन भाषाओं में जो साधारण सेट का समर्थन नहीं करते हैं, किन्तु साहचर्य सरणियों का समर्थन करते हैं, तत्वों को कुंजियों के रूप में उपयोग करके, एवं मूल्यों के रूप में डमी मान का उपयोग करके सेट को साहचर्य सरणियों का उपयोग करके अनुकरण किया जा सकता है, जिन्हें अप्रत्यक्ष किया जाता है।
 * C++ में, मानक टेम्पलेट पुस्तकालय (STL) प्रदान करती है  टेम्प्लेट कक्ष, जिसे सामान्यतः बाइनरी सर्च ट्री (जैसे लाल-काले पेड़) का उपयोग करके प्रारम्भ किया जाता है; सिलिकॉन ग्राफिक्स इंटरनेशनल का एसटीएल भी प्रदान करता है   टेम्प्लेट कक्ष, जो मिश्रण सारणी का उपयोग करके एक सेट को प्रारम्भ करता है। C++11 के लिए समर्थन है   टेम्प्लेट कक्ष, जिसे मिश्रण सारणी का उपयोग करके कार्यान्वित किया जाता है। सेट में, तत्व स्वयं कुंजी हैं, अनुक्रमित कंटेनरों के विपरीत, जहां तत्वों को उनकी (सापेक्ष या पूर्ण) स्थिति का उपयोग करके अभिगम किया जाता है। सेट तत्वों में शक्तिहीन क्रम होना चाहिए।
 * रस्ट (प्रोग्रामिंग भाषा) मानक पुस्तकालय सामान्य प्रदान   एवं   प्रकार करता है।
 * जावा (प्रोग्रामिंग भाषा) प्रदान करता है अंतरापृष्ठ (कंप्यूटर विज्ञान) सेट का समर्थन करने के लिए (  वर्ग इसे मिश्रण सारणी का उपयोग करके कार्यान्वित करता है), एवं  सॉर्ट किए गए सेटों का समर्थन करने के लिए उप-अंतराफलक(  वर्ग इसे बाइनरी सर्च ट्री का उपयोग करके कार्यान्वित करता है)।
 * ऐप्पल इंक की फाउंडेशन किट (कोको (एपीआई) का भाग) उद्देश्य C कक्ष प्रदान करती है,  ,  ,  , एवं  कोर फाउंडेशन एपीआई इनके लिए CFSet एवं CFMutableSet प्रकार प्रदान करता है। C (प्रोग्रामिंग भाषा) में उपयोग करते है।
 * पायथन (प्रोग्रामिंग भाषा) में अंतर्निहित है एवं  प्रकार 2.4 के पश्चात से, एवं पायथन 3.0 एवं 2.7 के पश्चात से, कर्ली-ब्रैकेट सिंटैक्स का उपयोग करके गैर-रिक्त सेट शाब्दिक का समर्थन करता है, जैसे:  ; रिक्त सेट का उपयोग करके बनाया जाना चाहिए , क्योंकि पायथन उपयोग   रिक्त शब्दकोश का प्रतिनिधित्व करने के लिए करता है।
 * .NET फ्रेमवर्क जेनेरिक प्रदान करता है  एवं   कक्षाएं जो सामान्य  को प्रारम्भ करती हैं।
 * स्मॉलटॉक की कक्ष पुस्तकालय में सम्मिलित हैं  एवं  समावेशन परीक्षण के लिए क्रमशः समानता एवं पहचान का उपयोग करना, कई बोलियाँ संपीडित भंडारण के लिए भिन्नताएँ प्रदान करती हैं, ऑर्डर करने के लिए ( ,  , आदि) या शक्तिहीन संदर्भ  के लिए होता है ।
 * रूबी (प्रोग्रामिंग भाषा) के मानक पुस्तकालय में a  सम्मिलित है,   एवं  मॉड्यूल जिसमें सम्मिलित है कक्षाएं जो मिश्रण सारणी का उपयोग करके सेट को प्रारम्भ करती हैं, पश्चात वाले क्रमबद्ध क्रम में पुनरावृत्ति की अनुमति देते हैं।
 * ओ कैमल की मानक पुस्तकालय में a सम्मिलित होता है,  मॉड्यूल, जो बाइनरी सर्च ट्री का उपयोग करके कार्यात्मक सेट डेटा संरचना को प्रारम्भ करता है।
 * हास्केल (प्रोग्रामिंग भाषा) का ग्लासगो हास्केल कंपाइलर कार्यान्वयन प्रदान करता है  मॉड्यूल, जो बाइनरी सर्च ट्री का उपयोग करके अपरिवर्तनीय सेट को प्रारम्भ करता है।
 * टीसीएल टीसीएललिब पैकेज सेट मॉड्यूल प्रदान करता है जो टीसीएल सूचियों के आधार पर सेट डेटा संरचना को प्रारम्भ करता है।
 * स्विफ्ट (प्रोग्रामिंग भाषा) a  प्रकार, स्विफ्ट 1.2 के पश्चात से स्टैंडर्ड पुस्तकालय में होता है।
 * जावास्क्रिप्ट  ईसीएमएस्क्रिप्ट 2015 के साथ मानक अंतर्निर्मित वस्तु के रूप में प्रस्तुत किया है।
 * Erlang (प्रोग्रामिंग भाषा) की मानक पुस्तकालय में a  मापांक होता है।
 * क्लोजर में मिश्रण सेट के लिए शाब्दिक सिंटैक्स है, एवं सॉर्ट किए गए सेट को भी प्रारम्भ करता है।
 * लैबव्यू के निकट संस्करण 2019 से सेट के लिए मूल समर्थन है।
 * एडीए (प्रोग्रामिंग भाषा)  एवं   संकुल प्रदान करता है।

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

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

सेट के साथ, बहुसेट स्वाभाविक रूप से मिश्रण सारणी या पेड़ों का उपयोग करके कार्यान्वित किया जा सकता है, जो विभिन्न प्रदर्शन विशेषताओं को उत्पन्न करता है।

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


 * C++ की मानक टेम्पलेट पुस्तकालय चयन किए गए एवं अवर्गीकृत बहुसेट दोनों को प्रारम्भ करती है। यह  क्रमबद्ध बहुसेट के लिए कक्ष प्रदान करता है, अस्सोसिएटिवे कंटेनर (C ++) के रूप में, जो स्व-संतुलन बाइनरी सर्च ट्री का उपयोग करके इस बहुसेट को प्रारम्भ करता है। यह   अनऑर्डरेड एसोसिएटिव कंटेनर (C ++)के  रूप में अवर्गीकृत बहुसेट के लिए कक्ष प्रदान करता है, जो मिश्रण सारणी का उपयोग करके इस बहुसेट को प्रारम्भ करता है। अवर्गीकृत बहुसेट C++11 के अनुसार मानक है; प्रथम एसजीआई का एसटीएल प्रदान करता है   कक्ष, जिसे कॉपी किया गया एवं अंततः मानकीकृत किया गया।
 * जावा (प्रोग्रामिंग भाषा) के लिए, तृतीय-पक्ष पुस्तकालय बहुसेट कार्यक्षमता प्रदान करते हैं।
 * अपाचे कॉमन्स संग्रह  एवं   अंतरापृष्ठ, जैसे कक्षाओं को प्रारम्भ करने के साथ   एवं  प्रदान करता है।
 * गूगल  अंतरापृष्ठ, जैसे कक्षाओं को प्रारम्भ करने के साथ गुआवा   एवं   प्रदान करता है।
 * एप्प्ल प्रदान करता है  कोको (एपीआई) के रूप में कक्ष, प्रकार   एवं   कोर फाउंडेशन के रूप में  प्रदान करता है।
 * पायथन (प्रोग्रामिंग भाषा) के मानक पुस्तकालय में सम्मिलित हैं, जो बहुसेट के समान है।
 * स्मॉलटाक में सम्मिलित हैं, वर्ग जिसे समावेशन परीक्षण के लिए विधेय के रूप में या तो पहचान या समानता का उपयोग करने के लिए तत्काल किया जा सकता है।

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

बैग पर विशिष्ट संचालन:
 * : शोधन करता है कि बैग B में तत्व X उपस्थित है।
 * : शोधन करता है कि बैग B1 में प्रत्येक तत्व है या B1 में नहीं होता है, बैग B2 में होने की तुलना में अधिक बार नहीं; कभी-कभी B1 ⊑ B2 के रूप में दर्शाया जाता है।
 * : तत्व x के बैग B में होने की संख्या लौटाता है; कभी-कभी B, x के रूप में दर्शाया जाता है।
 * : प्राकृतिक संख्या n दिया गया है, जिसमें बैग B के समान तत्व होते हैं, प्रत्येक तत्व जो B में M बार होता है परिणामी बैग में n * m बार होता है; कभी-कभी n ⊗ B के रूप में निरूपित किया जाता है।
 * : बैग B1 या B2 देता है, जिसमें केवल वे मान होते हैं, जो उन मानों वाले बैग को लौटाता है, इसके कि परिणामी बैग में मान x की संख्या समान होती है (B1 # x) + (B2 # x), कभी-कभी B1 ⊎ B2 के रूप में निरूपित किया जाता है

एसक्यूएल बहुसेट संबंधपरक डेटाबेस प्रबंधन प्रणाली में, सारणी (गणितीय) सेट या बहुसेट हो सकती है, जो कुछ स्तंभों पर एकता की कमी की उपस्थिति पर निर्भर करता है।

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

एसक्यूएल मानकीकरण इतिहास में  उप-क्वेरी को संग्रह अभिव्यक्ति में परिवर्तित करने के लिए कीवर्ड का उपयोग किया जा सकता है।

सामान्य चयन है, जिसका उपयोग किसी अन्य सामान्य क्वेरी की सबक्वेरी अभिव्यक्ति के रूप में किया जा सकता है, जबकि

सबक्वायरी को संग्रह अभिव्यक्ति में परिवर्तित कर देता है जिसका उपयोग किसी अन्य क्वेरी में या उचित संग्रह प्रकार के कॉलम में कार्यभार में किया जा सकता है।

यह भी देखें

 * ब्लूम फिल्टर
 * विसंधित सेट (डेटा संरचना)
 * सेट (गणित)