2010-11-11 16 views
5

मैं एक ट्यूटोरियल ढूंढने की कोशिश कर रहा हूं जो मुझे मार्गदर्शन करेगा कि उपयोगकर्ता आधारित कस्टम फ़ील्ड कैसे काम करता है। सर्वेक्षण साइटों की तरह, जहां वे उपयोगकर्ताओं को कस्टम फ़ील्ड बनाने और उन्हें स्टोर करने देते हैं और उन क्षेत्रों के माध्यम से दर्ज डेटा को अधिक महत्वपूर्ण रूप से संग्रहीत करते हैं।डेटाबेस में कस्टम उपयोगकर्ता फ़ील्ड को स्टोर करने के लिए कैसे करें

मैं कुछ ऐसा ढूंढ रहा हूं जो वर्णन करता है कि यह डेटाबेस पर कैसे किया जाता है। मुझे एक ऐसा तरीका खोजने में थोड़ा परेशानी हो रही है जो उपयोगकर्ताओं को एक्सेल/सीवीएस फाइलों में निकालने के लिए एक बार फिर से डेटा को पुनर्प्राप्त नहीं करेगा।

उत्तर

3

Entity-Attribute-Value model आमतौर पर एक परिदृश्य डेटाबेस में इस परिदृश्य को संभालने के लिए उपयोग किया जाता है। "ईएवी मॉडल" के लिए एक त्वरित खोज से अधिक जानकारी मिलेगी, आपको पता चलेगा कि क्या करना है।

+0

'ईएवी मॉडल "के लिए एक त्वरित खोज" उम्मीद है कि यह कोई सिफारिश नहीं है जब तक कि कोई वैकल्पिक न हो - यह बहुत लचीला है, लेकिन अच्छी तरह से स्केल नहीं करता है और पूछताछ करना मुश्किल हो सकता है। यहां केस स्टडी का एक लिंक दिया गया है: http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ –

3

छठी सामान्य फॉर्म इसे लागू करने का औपचारिक तरीका है। सभी तालिकाओं के लिए 3 एनएफ के साथ जाएं, और एक या दो टेबलों के लिए 6 एनएफ जिन्हें आपको डीडीएल परिवर्तनों के बिना कॉलम जोड़ने की आवश्यकता है। किफायत से इस्तेमाल करो।

ईएवी 6 एनएफ का बेस्टर्ड बेटा है। इसका मतलब यह है कि, जो लोग इसे करते हैं, और इसके बारे में लिखते हैं, उनके पास 6 एनएफ की औपचारिक समझ नहीं होती है, इसलिए अक्सर मोनस्ट्रोसिटी बनाते हैं।

बेशक, आपको अच्छे मानकों को बनाए रखना होगा: डेटाटाइप का उपयोग करें; घोषणात्मक संदर्भित ईमानदारी (विदेशी कुंजी); आदि उन्हें कुछ भी प्राप्त न करें। किसी को भी नरक की तरह भागो जो आपको बता रहा है कि आपको उन्हें देना है।

6 एनएफ/ईएवी बहुत तेज है, सर्वर की सेट-प्रोसेसिंग क्षमता का उपयोग करने में कोई बाधा नहीं है। दोबारा, किसी से भी नरक की तरह भागो जो आपको बताता है कि आपको पंक्ति-दर-पंक्ति प्रसंस्करण या कर्सर का उपयोग करना है या आप आसानी से पंक्तियों से कॉलम नहीं बना सकते हैं। यदि आपके पास विशिष्ट समस्याएं हैं तो दोबारा पोस्ट करें।

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

आस-पास बहुत सारी गलतफहमी है, और "प्रतिनिधि" वाले कुछ लोग अनजान हैं। तकनीकी रूप से सफल होने के लिए, हमें सटीक जानकारी की आवश्यकता है, मिथक और डर बढ़ने की आवश्यकता नहीं है। आपको हालिया पोस्ट में दिलचस्पी हो सकती है जिसमें मैंने set the recond straight की कोशिश की।

0

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

SURVEY_ATTRIBUTE 
- SurveyAttributeId 
- SurveyAttributeName 
- SurveyAttributeType 

SURVEY_ATTRIBUTE_CHOICE 
- SurveyAttributeChoiceId 
- SurveyAttributeChoice 
- SurveyAttributeId 

SURVEY_ATTRIBUTE_VALUE 
- SurveyAttributeValueId 
- SurveyId 
- SurveyAttributeValue 

SURVEY_ATTRIBUTE तालिका भंडार कस्टम विशेषता प्रति एक रिकॉर्ड है। SURVEY_ATTRIBUTE_VALUE तालिका उन गुणों को संग्रहीत करती है जो वास्तव में सर्वेक्षणों को सौंपी जाती हैं। इसलिए यदि कोई विशेषता किसी सेवा पर लागू नहीं होती है, तो कुछ भी संग्रहीत नहीं होता है। SURVEY_ATTRIBUTE_CHOICE तालिका 'LIST' प्रकार के गुणों के लिए सभी स्वीकार्य विकल्पों को संग्रहीत करती है।

SurveY_ATTRIBUTE तालिका में SurveyAttributeType फ़ील्ड विशेषता के प्रकार का वर्णन करने के लिए उपयोग किया जाता है। हम केवल छोटे, स्वीकार्य प्रकार जैसे CHAR, DATE, NUMBER, LIST का उपयोग करते हैं। उस मान के आधार पर, हमारे एप्लिकेशन को पता है कि SurveyAttributeValue फ़ील्ड में संग्रहीत मूल्य के साथ क्या करना है। आप निश्चित रूप से एक विस्तृत सीमा की अनुमति देने के लिए इसे औपचारिक रूप से कार्यान्वित कर सकते हैं, अधिकतम फ़ील्ड लम्बाई इत्यादि निर्दिष्ट कर सकते हैं ..., यह सब स्वतंत्रता के स्तर पर निर्भर करता है जिसे आप अपना अंतिम उपयोगकर्ता देना चाहते हैं। हम अपने लक्षित दर्शकों के लिए यथासंभव सरल रखने की कोशिश करते हैं, डेटाबेस प्रशासक नहीं बल्कि अंतिम उपयोगकर्ता हैं, वे आमतौर पर फील्ड लम्बाई और इस तरह की परवाह नहीं करते हैं।

आप SURVEY_ATTRIBUTE_CHOICE तालिका को छोड़ना भी चुन सकते हैं और SURVEY_ATTRIBUTE फ़ील्ड में अपने स्वीकार्य मानों को XML स्ट्रिंग में संग्रहीत कर सकते हैं। यह आपके आवेदन में लागू होने के तरीके पर निर्भर करेगा।

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

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