मैं अपने वीएलई के लिए एक इनाम प्रणाली विकसित कर रहा हूं जो क्लाइंट-साइड/डिस्प्ले प्रोसेसिंग के लिए जावास्क्रिप्ट के लिए जावास्क्रिप्ट और डेटाबेस के लिए MySQL के साथ तीन अलग-अलग तकनीकों का उपयोग करता है।डेटाबेस संरचना को अनुकूलित करना
मैंने अपनी "लेनदेन" तालिका के तीन स्क्रीनशॉट संलग्न किए हैं। इसकी संरचना, कुछ उदाहरण रिकॉर्ड और इसके विवरण का एक सिंहावलोकन।
आधार यह है कि कर्मचारियों के पुरस्कार अच्छे छात्रों के लिए छात्रों को इंगित करते हैं। इसका मतलब यह हो सकता है कि 30 छात्रों के वर्गों को एक ही समय में अंक दिए जाते हैं। कर्मचारियों की 300 अंक/सप्ताह की सीमा है और वर्तमान में लगभग 85 कर्मचारी सिस्टम तक पहुंच रहे हैं (यह बढ़ सकता है)।
जिस तरह से मैं इसे इस समय कर रहा हूं, हर "लेनदेन" में "गिवर_आईडी" (स्टाफ पुरस्कार देने वाले सदस्यों का सदस्य), "प्राप्तकर्ता_आईडी" (अंक प्राप्त करने वाले छात्र), एक श्रेणी और एक कारण है । इस तरह, हर बार कर्मचारियों का सदस्य 30 अंक जारी करता है, मैं डेटाबेस में 30 पंक्तियां डाल रहा हूं।
यह जल्दी काम करना प्रतीत होता था, लेकिन तीन सप्ताह के भीतर मेरे पास पहले से ही डेटाबेस में 12,000 से अधिक लेनदेन हैं।
इस बिंदु पर यह थोड़ा और जटिल हो जाता है। असाइन पॉइंट्स पेज (एक और स्क्रीनशॉट संलग्न) पर, जब कोई शिक्षक अपनी कक्षाओं में से किसी एक व्यक्ति या किसी व्यक्तिगत छात्र की खोज करता है, तो मैं छात्रों के अंक प्रदर्शित करना चाहता हूं।
var Points = { "Recipient_ID" : "0", "Points" : "0" };
function getPoints (data) {
for (var i = 0; i < data.length; i++) {
if (Points[data[i].Recipient_ID]) {
Points[data[i].Recipient_ID] = parseInt(Points[data[i].Recipient_ID]) + parseInt(data[i].Points);
} else {
Points[data[i].Recipient_ID] = data[i].Points;
}
}
}
जब प्रणाली आंतरिक रूप में लॉग इन करने, इस काम करने के लिए प्रकट होता है: एक ही रास्ता मैं वर्तमान में अपने सिस्टम पर ऐसा कर सकते निम्नलिखित जे एस एक "SELECT * FROM 'transactions'
" करते हैं और का उपयोग कर एक सरणी में सभी जानकारी डाल करने के लिए है जल्दी से पर्याप्त हालांकि, बाहरी रूप से लॉग इन करते समय, इस प्रक्रिया में लगभग 20 सेकंड लगते हैं, और इस प्रकार छात्रों के अंक मान प्रदर्शित नहीं करते हैं जब तक आप कुछ बार क्लिक/खोज नहीं करते हैं।
मैं इन लेनदेन का उपयोग करने के लिए अपने PHP में निम्नलिखित कोड का उपयोग कर रहा:
function getTotalPoints() {
$sql = "SELECT *
FROM `transactions`";
$res = mysql_query($sql);
$rows = array();
while($r = mysql_fetch_assoc($res)) {
$rows[] = $r;
}
if ($rows) {
return $rows;
} else {
$err = Array("err_id" => 1);
return $err;
}
}
तो, मेरे सवाल है, मैं कैसे वास्तव में इस के करीब पहुंच जाना चाहिए? पूर्ण पाठ सूचकांक; शायद एक छात्र तालिका उनके कुल अंक मूल्यों के साथ जो लेनदेन दर्ज होने पर हर बार अपडेट हो जाती है; जन-लेनदेन (यानी एक ही श्रेणी के लिए एक ही अंक प्राप्त करने वाले एक से अधिक छात्र) एक डेटाबेस पंक्ति में समूहित हैं? ये सभी चीजें हैं जिन पर मैंने विचार किया है लेकिन मुझे ज्ञान प्रदान करने के लिए खुद से अधिक डीबी ज्ञान वाले किसी से प्यार होगा।
उदाहरण रिकॉर्ड
तालिका संरचना
टेबल सिंहावलोकन
असाइन अंक इंटरफ़ेस
अग्रिम में बहुत धन्यवाद।
अच्छी तरह से पूछा ... – slandau