sql – 在数据库中存储考试问题

前端之家收集整理的这篇文章主要介绍了sql – 在数据库中存储考试问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在考虑如何设计一个数据库,以便在一年多的时间内保持考试问题(开启和关闭,主要是关闭).

首先,简要介绍一下我所追求的内容.我想设计一个足够灵活的数据库来存储不同的问题类型(例如,简短回答或多项选择问题),并且能够选择任意数量的这些问题作为考试存储.

我的问题是:

如何存储考试题?

由于不同的问题类型需要存储不同的字段,如果我将它们全部放在相同的表格问题下,将会有许多从未使用过的额外字段.

如果我将问题类型分成不同的表,那么将question_id存储在某些exam_questions表中将会困难得多,因为它们将来自不同的表.

我也想不出一种灵活的方式来存储信息.

例如,

  1. questions
  2. - id
  3. - question
  4. - type (multiple choice,short response)
  5. - choice_1 ( used for multiple choice questions)
  6. - choice_2
  7. - choice_3
  8. - choice_4
  9. - choice_5
  10. - answer (short response answer here,or just a/b/c/d/e for multiple choice,t/f for true or false)

这样的设计会被推荐吗?如果没有,有没有人有任何建议?

我还有另一个问题:

如果我想将学生的答案存储到这些考试中,那么将它们存储起来效率是否低效?

  1. exam_responses
  2. - id
  3. - student_id
  4. - exam_id
  5. - question_id or question_number
  6. - response
  7. - mark

先感谢您.如果您想要任何其他信息,或者此问题有任何问题,请给我留言,我会尽快修复.

解决方法

我会有单独的问答表,并使用question2answer表加入它们
  1. question
  2. --------
  3. - id
  4. - question
  5. - type (multiple choice,short response)
  6.  
  7. answer
  8. ------
  9. - id
  10. - GUIorder (so you can change the sort order on the front end)
  11. - answer
  12.  
  13. question2answer
  14. ---------------
  15. - questionid
  16. - answerid

现在,在构建问题方面,一切都是动态的,而且没有空列.
快速联接可以让您回到主要问题的所有部分

您的exam_responses表现在可以具有以下内容

  1. - id
  2. - questionid
  3. - answerid
  4. - studentid
  5. - response
  6. - mark

猜你在找的MsSQL相关文章