2012-02-02 14 views
7

के लिए ढांचे को डिजाइन करने के लिए सर्वश्रेष्ठ दृष्टिकोण मैं वर्तमान में एक शिक्षा साइट तैयार कर रहा हूं।बैज असाइनिंग सिस्टम

इसके लिए हमें अपनी गतिविधि (जैसे स्टैक ओवरफ्लो) के आधार पर उपयोगकर्ता को कुछ बैज असाइन करने की आवश्यकता है।

मैं इसके लिए एक ढांचा ढूंढ रहा था। किसी को भी कोई विचार है, यह कैसे किया जा सकता है? टेबल डिजाइन आदि

मुद्दे जो मैं इस के साथ के बारे में सोच सकता है:

  1. हम, बैज की एक बड़ी संख्या में हो सकता है तो उपयोगकर्ता के प्रत्येक कार्य पर हम सभी बैज जांच नहीं कर सकता है और यदि कोई बिल्ला कर सकते हैं की जाँच
  2. इसके लिए एक नया बैज और मानदंड जोड़ने पर, मैं इसे संभालने के लिए मौजूदा कोड को बदलना नहीं चाहता (क्या हमारे पास कुछ सामान्य समाधान हो सकता है?)
  3. मुझे कौन सा डीबी चुनना चाहिए (मान लें कि क्या मेरा ढांचा जैसे, यह तब होता है जब एक बैज के मानदंडों को पूरा किया जाता है और ये नियम डीबी (एसक्यूएल) में बनाए जाते हैं। या मैं नोस्कल डीबी (जैसे एम के लिए जा सकता हूं) ongodb रूप में इस परियोजना के अपने बाकी MongoDB में है)

मेरे प्रारंभिक खोज मुझे निम्नलिखित बातें

दिया
  1. नियम इंजन -> बहुत थकाऊ काम का परिणाम देगा Database Architecture for "Badge" System & Arbitrary Criteria (MySQL/PHP)
  2. एक परियोजना ->http://drupal.org/project/user_badges (इसे ठीक से समझने के लिए)
  3. लोग कह रहे हैं अपनी मेज संरचना इस तरह होना चाहिए में सक्षम नहीं है और यह सब ..और .. Best way to store Badge criteria? Creating "Badges" for my site, best way to store user badges? Using PHP
+0

इससे पहले इस विषय पर सारांशित किया गया था http://stackoverflow.com/questions/9835321/designing-a-pluggable-points-and-badges-system के उत्तर में संक्षेप में –

उत्तर

1

मैं निश्चित रूप से इस दृष्टिकोण के लिए एक nosql डेटाबेस पर एक संबंधपरक डेटाबेस चुनना होगा।

पहली चीज़ जो आपको चाहिए वह बैज की अंतर्निहित संरचना है।

ID (int) 
Title (Varchar 255) 
Image (Varchar 255) - would hold location to image 
Points (int) 

आपको तब उपयोगकर्ता द्वारा अर्जित सभी बैज को स्टोर करने की आवश्यकता होगी। अपने उपयोगकर्ताओं को खंड में तो:

Badges (Varchar) - holds a serialized array of badge IDs 
Badge_count (int) - So you can get the total without parsing through Badges. 
Point_count (int) 

अब आप कहते हैं कि तुम, प्रत्येक कार्य प्रदर्शन के लिए सभी बैज के खिलाफ क्वेरी नहीं कर सकता है ताकि आप भी प्रत्येक कार्य के लिए एक प्रवेश की दुकान चाहिए। उदाहरण के लिए आपकी "पोस्ट" तालिका में कहते हैं:

Possible_badges (Varchar 255) - serialized array of Badge ID's 

फिर आप सामान्य और केवल अपने नियम इंजन के लिए किसी भी विशेष कार्य से संबंधित बैज दे सकते हैं।

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

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