2010-06-19 8 views
11

शुभ दिन!ओआरएम के साथ बहुभाषी डेटाबेस स्कीमा का उपयोग कैसे करें?

मैं बहुभाषी डेटाबेस स्कीमा को लागू करने का सबसे अच्छा तरीका खोज रहा हूं, जिस दृष्टिकोण का मैं उपयोग करता हूं वह यहां जैसा है: What are best practices for multi-language database design? (भाषा तटस्थ डेटा वाली एक तालिका और सभी अनुवादों के लिए एक)। ऐसा लगता है कि यह अच्छा और साफ है और संभावित भाषाओं की संख्या सीमित नहीं करता है।

लेकिन मैं एक साधारण ओआरएम (जैसे LINQ में सी #, आउटलेट के लिए आउटलेट) का उपयोग करना चाहता हूं, जहां प्रत्येक तालिका को इकाई वर्ग में मैप किया जाता है। यह काम कर सकता है, लेकिन सवाल अधिक जटिल हो गया।

क्या ओआरएम के साथ ऐसी डीबी शमा का उपयोग करने के लिए कुछ विशेष तकनीकें हो सकती हैं? या मैं अधिक जटिल ओआरएम से लाभ उठा सकता हूं जो अधिक जटिल मैपिंग का समर्थन करता है?

अग्रिम धन्यवाद!

उत्तर

18

सभी अनुवादों के लिए केवल एक तालिका का उपयोग करने से किसी भी ऑपरेशन (चयन/सम्मिलित/अद्यतन/हटाएं) के लिए गंभीर प्रदर्शन और जटिलता के मुद्दों का कारण बन सकता है; बस यह समझने की कोशिश करें कि मेरा क्या मतलब है।

मैं फिर निम्न विधि ("अनुवाद योग्य" ऑब्जेक्ट प्रति दो टेबल) के लिए जाऊंगा, जो प्रदर्शन, जटिलता और रखरखाव के मुद्दों के बीच एक अच्छा संतुलन प्रतीत होता है।

product 
    - id (PK) 
    - number1 
    - number2 
    - date1 
    - date2 
    ... 

product_i18n 
    - id (PK) 
    - product_id (FK) 
    - language_id (FK) 
    - string1 
    - string2 
    ... 

language 
    - id (PK) 
    - name 

चेक यह कैसे प्रोपेल ORM (PHP) के साथ किया जाता है: http://propelorm.org/blog/2011/01/11/propel-gets-i18n-behavior-and-why-it-matters.html

HTH

+0

धन्यवाद, कि एक ही डीबी योजना मैं उपयोग करें, लेकिन Unfortunatelly ORMs है कि मैं का उपयोग करें (LINQ2SQL नेट और आउटलेट पर PHP के लिए) सीधे ऐसे परिदृश्यों का समर्थन नहीं करता है। मैं निश्चित रूप से Propel में देखेंगे। – artvolk

+0

इस मामले में आप कैसे फॉलबैक करेंगे? – GorillaApe

+0

आपको फ़ॉलबैक की आवश्यकता क्यों होगी? –