2014-05-15 10 views
5

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

सबसे पहले, मेरे बाद के बारे में एक संक्षिप्त विवरण। मैं अलग-अलग प्रश्न प्रकारों (उदाहरण के लिए, छोटी प्रतिक्रिया या एकाधिक विकल्प प्रश्न) को स्टोर करने के लिए पर्याप्त डेटाबेस को डिज़ाइन करना चाहता हूं, और परीक्षा के रूप में संग्रहीत किए जाने वाले किसी भी प्रश्न का चयन करने में सक्षम हूं।

मेरा प्रश्न है:

कैसे परीक्षा प्रश्न संग्रहित किया जाना चाहिए?

के बाद से विभिन्न प्रकार के प्रश्न स्टोर करने के लिए विभिन्न क्षेत्रों की आवश्यकता होती है, अगर मैं उन सब को एक ही मेज questions के घेरे में रखा गया था, वहाँ अतिरिक्त क्षेत्रों है कि इस्तेमाल कभी नहीं कर रहे हैं का एक बहुत हो जाएगा।

यदि मैं अलग-अलग तालिकाओं में प्रश्न प्रकार अलग करता हूं, तो कुछ exam_questions तालिका में प्रश्नावली को स्टोर करना बहुत कठिन होगा, क्योंकि वे अलग-अलग तालिकाओं से आएंगे।

मैं जानकारी संग्रहीत करने के लिए एक लचीला तरीका भी नहीं सोच सकता।

उदाहरण के लिए

,

questions 
- id 
- question 
- type (multiple choice, short response) 
- choice_1 (used for multiple choice questions) 
- choice_2 
- choice_3 
- choice_4 
- choice_5 
- answer (short response answer here, or just a/b/c/d/e for multiple choice, t/f for true or false) 

इस तरह एक डिजाइन की सिफारिश की जा सकते हैं? यदि नहीं, तो क्या किसी के पास कोई सलाह है?

मैं इन परीक्षाओं में से एक के लिए छात्र के जवाबों को संग्रहीत करना चाहते हैं, तो उन्हें इस तरह स्टोर करने के लिए अक्षम होगा:

मैं भी एक और सवाल है?

exam_responses 
    - id 
    - student_id 
    - exam_id 
    - question_id or question_number 
    - response 
    - mark 

अग्रिम धन्यवाद। यदि आप कोई अन्य जानकारी चाहते हैं, या यदि इस प्रश्न के साथ कुछ भी गलत है, तो कृपया मुझे एक टिप्पणी छोड़ दो और मैं कोशिश करूँगा और जितनी जल्दी हो सके इसे ठीक कर दूंगा।

+0

शायद बेहतर निम्नलिखित प्रश्न और उत्तर भागों – twoleggedhorse

+0

हाय @Mick, मैंने अलग करने के लिए एक ही सवाल और नीचे जवाब पढ़ने, यह बहुत मदद नहीं की थी। यदि आप अभी भी सक्रिय हैं तो कृपया उत्तर दें। मैं अपने संदेह पूछूंगा –

उत्तर

9

मैं अलग प्रश्न होता है और तालिकाओं का जवाब और सवाल के निर्माण के मामले में एक question2answer तालिका

question 
-------- 
- id 
- question 
- type (multiple choice, short response) 

answer 
------ 
- id 
- GUIorder (so you can change the sort order on the front end) 
- answer 

question2answer 
--------------- 
- questionid 
- answerid 

अब सब कुछ गतिशील है का उपयोग कर उन्हें शामिल होने और आप खाली कॉलम नहीं है। एक त्वरित में शामिल होने के तुम वापस लाता है मुख्य प्रश्न के सभी भागों

आपका exam_responses तालिका अब हो सकता है

- id 
- questionid 
- answerid 
- studentid 
- response 
- mark 
+0

जवाब देने के लिए समय लेने के लिए धन्यवाद! मेरे पास एक तेज़ सवाल है। क्या 'उत्तर' तालिका में प्रश्नपत्र को संग्रहीत करने के बजाय 'question2answer' तालिका रखने के कोई कारण हैं? क्या आप एक उदाहरण प्रदान कर सकते हैं? नमस्ते, मिक। – Mick

+2

@ मिक इस तरह से आप जवाबों का पुन: उपयोग कर सकते हैं - यानी। सच है, कई प्रश्नों के लिए झूठा - यह पूरी तरह से आपके प्रश्नों की संरचना पर निर्भर करता है। – twoleggedhorse

+0

आह! समझा। एक बार फिर धन्यवाद! – Mick

2

मुझे लगता है कि प्रश्न तालिका में प्रत्येक प्रतिक्रिया के लिए पांच कॉलम संग्रह करना एक अच्छा डिज़ाइन नहीं है। यदि प्रश्न के लिए विकल्पों की संख्या 6 हो जाती है तो आपको एक और कॉलम जोड़ना होगा। इसके अलावा, अगर केवल दो विकल्प हैं, तो शेष कॉलम खाली रहेंगे। तो यह बेहतर दो अलग-अलग तालिकाओं में हो:

questions 
- id 
- question 
- type (multiple choice, short response) 
- answer (short response answer here, or just a/b/c/d/e for multiple choice, t/f for true or false) 

question_choices 
- id 
- question_id 
- choice 

तो फिर तुम उन पर questions.id = question_chocies.question_id हालत आधारित शामिल हो कर एक विशेष प्रश्न के लिए विकल्पों की सूची प्राप्त कर सकते हैं।

परीक्षा प्रतिक्रियाओं के मामले में, आपको परीक्षा के प्रत्येक प्रश्न के लिए student_id, परीक्षा और चिह्न के बारे में जानकारी दोहराने के क्रम में दो तालिकाओं में भी विभाजित होना चाहिए।

student_exam 
    - id 
    - student_id 
    - exam_id 
    - mark 

student_exam_responses 
    - exam_id 
    - question_id or question_number 
    - response 

इन दो तालिकाओं student_exam.id = student_exam_responses.exam_id स्थिति के आधार पर जोड़ा जा सकता है: तो यह की तरह कुछ किया जाना चाहिए।

+0

धन्यवाद। आपने मुझे इसके बारे में सोचने के लिए बहुत कुछ दिया है (जो हमेशा अच्छी बात है!)। – Mick

+0

आपका स्वागत है! – Guneli

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