2012-06-29 16 views
7

मौलिक अवधारणाओं और एक संबंधपरक डेटाबेस भाषा sql और prolog और क्लोजर के core.logic जैसे तर्क प्रोग्रामिंग भाषा के बीच कार्यान्वयन के संदर्भ में समानताएं और अंतर क्या हैं? क्या दो विनिमयशील हैं?रिलेशनल डाटाबेस भाषाएं और तर्क प्रोग्रामिंग कितने समान हैं?

उत्तर

3

समानताएं Datalog क्वेरी भाषा द्वारा कैद की जाती हैं। Here तर्क और डेटाबेस के बीच संबंध की प्रेरणा और बेहतर स्पष्टीकरण है। इस अंश को आपके प्रश्न का समाधान करना चाहिए:

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

4

एक महत्वपूर्ण अंतर यह है कि SQL is only Turing complete कुछ सुंदर पागल चाल के साथ जो एएनएसआई एसक्यूएल 99 तक 0 संभव नहीं थे। Prolog is Turing complete और इसलिए एक सामान्य उद्देश्य प्रोग्रामिंग भाषा है।

2

हालांकि SQL और Prolog दोनों पहले क्रम तर्क तर्क अवधारणाओं का प्रदर्शन करते हैं, न तो predicate calculus का पूर्ण कार्यान्वयन है।

प्रोलॉग और अन्य तर्क प्रोग्रामिंग भाषा डेटा संरचनाओं के साथ-साथ भविष्यवाणियों की परिभाषा दोनों के लिए रिकर्सन पर भारी निर्भर हैं।

एसक्यूएल प्रति से रिकर्सन की अनुमति नहीं देता है, और संग्रहित प्रक्रियाओं का परिचय ऐसी कॉलों के घोंसले की गहराई पर सीमाओं के साथ किया गया है। उदाहरण के लिए। 2012 के माध्यम से SQL Server 2000 at most 32 nested calls को अनुमति दें।

संबंधपरक डेटाबेस में "संबंध" को टेबल (या अधिक लचीला रूप से, दृश्यों के रूप में) के रूप में संशोधित किया जाता है। प्रोलॉग का सबसे समान पहलू dynamic factbases है, जो कुछ कार्यान्वयन (एसडब्ल्यूआई, अमी) में प्रदर्शन के लिए अनुक्रमण की इजाजत देता है, एसक्यूएल में प्रदर्शन के लिए संबंधपरक तालिकाओं के अनुक्रमण के समान ही है।

हालांकि एसक्यूएल आरडीबीएमएस को प्रोलॉग कार्यान्वयन की तुलना में डेटा के बहुत बड़े सेट के साथ कुशलतापूर्वक काम करने के लिए डिज़ाइन किया गया है, आमतौर पर प्रोलॉग को डेटाबेस डिज़ाइन के दोनों डेटाबेस और प्रक्रिया पहलुओं को प्रोटोटाइप करने के लिए उपयोग किया जा सकता है।

here for a 2005 thesis देखें जो प्रोलॉग अनुमान के साथ संबंधपरक डेटाबेस को विस्तारित करता है।

संबंधित मुद्दे