मेरे पास एक एएसपी.नेट एमवीसी वेबसाइट है। मेरी बैकएंड में मैं एक मेज निम्नलिखित कॉलम के साथ People
कहा जाता है:डेटाबेस तालिका में उपयोगकर्ता फ़िल्टर किए गए क्वेरी पैरा को स्टोर करने का सबसे अच्छा तरीका क्या है?
- आईडी
- नाम
- उम्र
- स्थान
- ... (अन्य कॉलम के एक नंबर)
मेरे पास एक सामान्य वेब पेज है जो इस डेटा को क्वेरी करने के लिए मॉडल बाध्यकारी का उपयोग करता है।
public ActionResult GetData(FilterParams filterParams)
{
return View(_dataAccess.Retrieve(filterParams.Name, filterParams.Age, filterParams.location, . . .)
}
जो कुछ इस तरह पर नक्शे:
http://www.mysite.com/MyController/GetData?Name=Bill .. .
dataAccess परत बस प्रत्येक पैरामीटर की जाँच करता है अगर इसकी आबादी वाले डाटाबेस जहां खंड में जोड़ने के लिए देखने के लिए यहाँ मेरी नियंत्रक कार्रवाई है। यह बहुत अच्छा काम करता है।
अब मैं उपयोगकर्ता के फ़िल्टर किए गए प्रश्नों को स्टोर करने में सक्षम होना चाहता हूं और मैं एक विशिष्ट फ़िल्टर को स्टोर करने का सबसे अच्छा तरीका जानने का प्रयास कर रहा हूं। चूंकि कुछ फ़िल्टरों में क्वेरीस्ट्रिंग में केवल एक पैरा है जबकि अन्य में फ़िल्टर में 10+ फ़ील्ड हैं, मैं अपने डेटाबेस में "फ़िल्टर जानकारी" इस क्वेरी को संग्रहीत करने का सबसे शानदार तरीका नहीं समझ सकता।
विकल्प मैं के बारे में सोच सकते हैं:
(कुछ अतिरिक्त कॉलम के साथ) तालिका की एक पूरी दोहराने है लेकिन यह PeopleFilterQueries फोन और प्रत्येक रिकॉर्ड एक फ़िल्टर में देखने और में फिल्टर का मूल्य डाल प्रत्येक क्षेत्र (नाम, आदि)
केवल फ़िल्टर नाम के साथ एक तालिका स्टोर करें और एक स्ट्रिंग जहां मैं वास्तविक क्वेरीस्ट्रिंग नाम = बिल & स्थान = न्यू यॉर्क। फिल्टर बदलने या बढ़ने पर इस तरह मुझे नए कॉलम जोड़ने की आवश्यकता नहीं होगी।
इस स्थिति के लिए सबसे अच्छा अभ्यास क्या है?
फिल्टर * डेटा * का उद्देश्य क्या है? मैं * वास्तविक क्वेरी स्ट्रिंग को संग्रहीत करने की अनुशंसा नहीं करता हूं, लेकिन ** ** अगर और केवल अगर यह एक अपारदर्शी डेटा-प्रकार ** (मॉडल को wrt) है, तो मैं एक एन्कोडेड मान संग्रहीत करता हूं जो अच्छी तरह से किसी डोमेन ऑब्जेक्ट पर मैप करता है (और तुच्छ क्रमिकरण का समर्थन करता है)। यदि यह एक अपारदर्शी प्रकार है - या नहीं - आपकी आवश्यकताओं पर निर्भर करता है। –
क्या आपको कभी भी इस डेटा से पूछने की आवश्यकता है? इसका उत्तर आपको क्रमबद्धता का उपयोग करने या फ़िल्टर क्वेरी तालिका + कुंजी/मान तालिका बनाने के लिए मार्गदर्शन करेगा। – dotjoe
डेटाबेस में इसे संग्रहीत करने का कारण कौन सा है? रिपोर्टिंग के लिए है? रुझान? अंतिम फिल्टर याद रखना? यह फ़िल्टर जानकारी कितनी बार उपयोग की जाएगी? – ivowiblo