2011-04-04 14 views
6

मैं कोर डेटा के लिए नया हूँ, और धारणा इसके बारे में कुछ (, कहते हैं, एसक्यूएल, जो मैं समझता हूँ के सापेक्ष) के साथ संघर्ष कर रहा हूँ।कोर डेटा में स्थानीयकृत स्ट्रिंग प्रकार का प्रतिनिधित्व कैसे करें?

"Category" entity, which has a name, and a relationship to-many Products 
"Product" entity, which has a name 

मैं स्थानीय वेरिएंट स्टोर करने के लिए दोनों संस्थाओं में उन लोगों के name रों (स्ट्रिंग) हैं:

मैं एक मॉडल है जो सरलता के लिए लगता है कि निर्माण करने के लिए कोशिश कर रहा हूँ। इसका मतलब है कि एक और शामिल हो। संभावित स्थानीयकरण की एक छोटी संख्या है। मुझे पता है कि मैं प्रत्येक स्थानीयकरण को एक व्यक्तिगत विशेषता ("name_en", "name_de", आदि) के रूप में रख सकता हूं, लेकिन यह स्केल नहीं करता है, और मैं इसे पूरा करने के "सही" तरीके को समझना चाहता हूं।

मेरा आंत मुझे बताता है कि मुझे यहां दो और इकाइयां चाहिए, एक स्थानीयकरण एक (जिसमें केवल संभावित स्थानीयकरण का सेट शामिल है) और कुछ प्रकार के लोकलाइज्डस्ट्रिंग एक, जो स्थानीयकरण से संबंधित है। लेकिन एक्सकोड ने मुझे विपरीत रिश्तों की स्थापना के बारे में चेतावनी दी है, आदि

क्या कोई व्यक्ति जो कोर डेटा मॉडल डिज़ाइन को गहराई से ग्रोक करता है, कृपया इस समस्या के माध्यम से सोचने के लिए एक नौसिखिया को समझने में सहायता करें?

(मेरा अगला समस्या अजीब तरह से बहु pivoted यूआई आप प्रत्येक स्थानीयकरण कि उपलब्ध है के लिए नाम तय करने देती है कि निर्माण किया जाएगा, लेकिन है कि जांच का एक और सेट हो जाएगा। :))

+0

क्या ये तार उपयोगकर्ताओं द्वारा दर्ज किए जा रहे हैं या वे केवल एप्लिकेशन द्वारा उपयोग किए जाते हैं? यदि आप अपने ऐप को स्थानीयकृत करने के लिए बैकएंड के रूप में कोर डेटा का उपयोग कर रहे हैं तो आप प्रदान किए गए स्थानीयकरण टूल का उपयोग करना बेहतर होगा। अन्यथा मैं fluchtpunkt के जवाब से सहमत होना होगा। – sosborn

+0

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

उत्तर

14

मैं नहीं जानता अगर मैं किसी को जो कोर डेटा groks के रूप में योग्य है, लेकिन मैं अतीत में कुछ इस तरह उपयोग किया है: enter image description here

nameSomething अंग्रेजी में नाम है। तो मुझे अंग्रेजी भाषा उपकरणों में रिश्ते को खोजने की ज़रूरत नहीं है (जिसमें मेरे ऐप के लिए 70% डिवाइस शामिल हैं)।
और वहाँ एक गेटर Something उपवर्ग में localizedName कहा जाता है कि या तो रिटर्न नाम या वर्तमान में उपयोग की गई भाषा कोड के लिए स्ट्रिंग।

मैं जब मैं ऐसा किया सोचा था कि मैं नाम संपत्ति में स्थानीयकृत स्ट्रिंग को बचा सकता है कि क्योंकि भाषाओं आमतौर पर उपकरणों कि डेवलपर्स का उपयोग नहीं करतीं पर अक्सर नहीं बदलते हैं। लेकिन अंततः मैंने इसके खिलाफ फैसला किया क्योंकि यह एक प्रदर्शन समस्या नहीं थी।

एक और प्रकार मैंने सोचा कि मैं गैर मौजूदा प्रदर्शन की समस्याओं के खिलाफ लड़ने के लिए इस्तेमाल कर सकते हैं: enter image description here

currentLanguageString मूल रूप से वर्तमान भाषा के स्थानीय स्ट्रिंग को इंगित करता है। जब भी भाषा बदलती है तो यह बदल जाता है (99.9% सभी मामलों में यह एक बार होता है, जब ऐप पहली बार लॉन्च होता है)।


अगर आप Something इकाई में एक से अधिक स्ट्रिंग है मैं LocalizedString उपवर्गों विशेष रूप से स्ट्रिंग आप स्थानीय बनाना चाहते हैं के लिए बनाया का एक अमूर्त माता पिता वर्ग होगा।
आप इस तरह के अजीब निर्माणों का उपयोग करने के क्योंकि आप एक से अधिक संस्था के लिए एक रिश्ता नहीं बना सकते है।


या यदि आप जानते हैं कि आप क्या कर रहे हैं, "कोई व्युत्क्रम संबंध" चेतावनी

enter image description here

लेकिन आप उस सुनिश्चित करने के लिए है, तो आप इस तरह से जाना उपेक्षा आप अभी भी LocalizedString ऑब्जेक्ट को कभी भी उपयोग में नहीं हटाते हैं। आप एक असंगत भंडारण के साथ खत्म नहीं करना चाहते हैं।

+0

विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। अच्छी चीज़। यह आपका आखिरी बिंदु है जो मुझे सबसे ज्यादा रूचि देता है। एसक्यूएल में कि LocalizedString तालिका एक tuple (स्ट्रिंग, भाषा कोड, टेक्स्ट) की तरह हो सकती है, लेकिन जैसा कि आप कहते हैं, इस प्रकार का कोई भी विपरीत जेनेरिक स्टोरेज यहां प्राकृतिक नहीं है। जैसा कि आप वर्णन करते हैं, मैं इसके बारे में सोचूंगा। धन्यवाद। –

+2

यदि आपके पास कई स्ट्रिंग हैं तो यह आपके डेटाबेस को बहुत बड़ा बना सकता है। खोज भी काफी कठिन/धीमी है लेकिन अन्यथा यह –

+0

ग्रेट स्पष्टीकरण काम करता है। धन्यवाद! –

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