6

ऑब्जेक्ट-रिलेशनल मैपिंग, ओआरएम एक ऐसी समस्या है जिसे किसी ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषा में लागू किए गए सभी अनुप्रयोगों में हल किया जाना चाहिए और एक रिलेशनल डेटाबेस का उपयोग करना है।ओआरएम ऑब्जेक्ट उन्मुख प्रोग्रामिंग के लिए विशिष्ट समस्या है?

लेकिन समस्या एक ही है अगर आप structs का उपयोग कर रहे सी में रिलेशनल डेटाबेस मैप करने के लिए नहीं है? और एक कार्यात्मक प्रोग्रामिंग भाषा में tuples/रिकॉर्ड? या क्या मुझे कुछ याद आ रहा है क्योंकि मैंने सी में या एक कार्यात्मक भाषा में डेटाबेस अनुप्रयोग नहीं लिखा है।

उत्तर

6

खैर हल किया जा सकता है, अर्थात हां और ना

क्या आप के लिए Object-Relational impedance mismatch रूप में जाना जाता बात कर रहे हैं, कि समस्या एक वस्तु उन्मुख मॉडल और एक इकाई-संबंध मॉडल के बीच डेटा स्थानांतरित करने के लिए है।कठिनाई दो मॉडलों में सूचनाओं को ढूढ़ने और स्टोर करने के आंतरिक तरीकों के कारण है, जहां ओओ पदानुक्रमित है जबकि ईआर टैब्यूलर है।

Object-Relational Mapping एक ऐसी तकनीक है जो ऑब्जेक्ट-रिलेशनल प्रतिबाधा विसंगति समस्या को हल करने का प्रयास करती है।

ऑब्जेक्ट-रिलेशनल प्रतिबाधा विसंगति शब्द Object-Oriented और Entity-Relationship मॉडल के लिए विशिष्ट है। हालांकि शब्द "प्रतिबाधा" का मतलब प्रतिरोध या कठिनाई है, इसलिए शब्द "प्रतिबाधा मिलान" संभावित रूप से दो असंगत डेटा मॉडल/प्रकार सिस्टम के बीच मैपिंग की सामान्य समस्या को व्यक्त करने के लिए उपयोग किया जा सकता है।

3

ORM में मुख्य समस्याओं struct क्षेत्र "x" से मैप स्तंभ "x" की तरह सीधा सुविधाओं को संभालने के लिए नहीं, कर रहे हैं। यह कई चाल (मैक्रोज़, कोड जेन, प्रतिबिंब, और इसी तरह से) द्वारा किया जा सकता है।

समस्या यह है कि विरासत, संरचना, संदर्भ, वस्तु विशिष्टता, इंटरफेस इत्यादि जैसी ओओपी सुविधाओं को कैसे संभालना है। विरासत इस अर्थ में एक कुतिया है, क्योंकि इसके निष्पक्ष कार्यान्वयन के रूप में कई तालिकाओं इष्टतम नहीं हैं।

5

Anecdotally, कम से कम, इस "प्रतिबाधा बेमेल 'स्थितियों एक एक वस्तु मुहावरा में संबंधों पुश करने के लिए जहां इच्छाओं को अजीब प्रतीत होता है।

सी सबसे डेटाबेस एपीआई में बहुआयामी सरणियों के रूप में परिणाम सेट का पर्दाफाश करने के बजाय, structs के रूप में की तुलना में करते हैं। नतीजतन, कोई भी डेटाबेस में तालिका (तालिकाओं) में मौजूद एक ही प्रारूप में डेटा तक पहुंच रहा है - यह अपरिहार्य है कि यह अब "डेटाबेस में" की बजाय डेटा की स्थानीय प्रति के रूप में मौजूद है।

अधिकांश कार्यात्मक आरडीबीएमएस पुस्तकालय डेटाबेस पंक्तियों को रिकॉर्ड प्रकार के रूप में बेनकाब करते हैं, जो लगभग पूरी तरह से डेटाबेस पंक्तियों के लिए एक उचित गहरे स्तर से मेल खाते हैं। इस स्थिति में कोई "प्रतिबाधा विसंगति" नहीं है।

इस विषय पर Wikipedia article इस बात पर अटकलें प्रतीत होता है कि ऑब्जेक्ट प्रतिमान इस विसंगति के लिए विशेष रूप से अतिसंवेदनशील क्यों है।

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

3

आप 2 प्रतिबाधा बेमेल है।

    वस्तुओं को
  1. रिकॉर्ड्स।
  2. आपकी क्वेरी एसक्यूएल क्वेरीज के लिए।

जबकि पहले प्रतिबाधा बेमेल सभी गैर OOP भाषाओं के लिए काम नहीं कर सकते दूसरी सभी भाषाओं में appearant है और का उपयोग कर डीएसएल के as seen here

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