2017-06-21 70 views
0

我想知道我的數據庫設置是否足以進行多項選擇測驗。如果有更好的方法來解決這個問題,請告訴我。創建一個選擇題測驗數據庫

  • 它有三種類型的測試(文字,數字,口頭)。
  • 用戶必須回答所有三個測試和評分爲每個 存儲
  • 我存儲在tbl_answer的選擇和正確的答案,從而 ,我可以在應用程序中檢索和輸出

tbl_user(ID,姓名,clerical_score,numerical_score,verbal_score)

tbl_quiz(ID,文書,數值,口頭)

tbl_question(ID,FK:quiz_ID,問題)

tbl_answer(ID,FK:question_ID,choice_1,choice_2,choice_3,choice_4,correct_answer)

+1

我會盡量避免混淆名稱表像'身份證'。考慮使用'User_ID,Quiz_ID等 –

+0

這似乎是一個體面的模式。 – 97amarnathk

+0

@RichBenner:有趣的,因爲我會辯論完全相反。像'User.User_ID'這樣的術語對我來說是非常多餘的。 (雖然我也會反駁用'tbl_'爲每個表加上前綴,因爲類似的原因。) – David

回答

0

根據您的模式,tbl_question-tbl_answer之間的releation將一對一。因此,它是在兩個表中一個更好的組: tbl_question(ID,FK:quiz_ID,questionn,choice_1,choice_2,choice_3,choice_4,correct_answer)

0

根據你的情況,我建議這個: -

user_table(user_id(primary_key),user_name,clerical_score, numerical_score,verbal_score,total_score);

clerical_table(c_question_id,(primary_key),c_questions,c_option1, c_option2,c_option3,c_option4,marks);

numeric_table(n_question_id,(primary_key),n_questions,n_option1, n_option2,n_option3,n_option4,marks);

verbal_table(v_question_id,(primary_key),v_questions,v_option1, v_option2,v_option3,v_option4,marks);

- >現在請記住,在所有三個表中,保持option1總是正確的一個。 - >所以當你在顯示選項期間從表格中獲取選項時,使用「RANDOM」函數來增加選項,甚至在爲每個候選人開始新切割時重新編寫問題 。 - >爲了匹配正確的選項,只需在候選人選擇的網頁中輸入關鍵字,並將其與表 的選項1相匹配以獲得正確性。

0

爲什麼測驗類型的三個字段在tbl_quiz?它預計像tbl_quiz(ID, quiztype_id)代替。

  • tbl_user(ID,姓名)
  • tbl_quiztype(ID,說明)
  • tbl_quiz(ID,FK:quiztype_id)
  • tbl_question(ID,FK:quiz_id ,question,choice_1,choice_2,choice_3,choice_4,correct_answer_no)
  • tbl_user_result(ID,FK:USER_ID,FK:quiztype_id,點)

,而不是後者,你可能還存儲所有的答案而不是聚合結果:

  • tbl_user_answer(ID,FK: USER_ID,FK:question_id,answer_no)

如果你想允許在未來不同數量的答案選項,你可以通過

更換tbl_question
  • tbl_question(ID,FK:quiz_id,問題,correct_answer_no)
  • tbl_answer(ID,FK:question_id,answer_no,answertext)