我目前正在研究一个测验系统,并试图首先进行数据库设计。我已经阅读了一些关于不同测验的主题,但它们在某些部分都是独一无二的。
系统将使用带有 PHP 的 MySQL 数据库。
这个测验系统的目标:
- 能够在里面有不同的“测验”
- 完整测验和每个问题的时间轨迹(提前考虑人与人之间的挑战部分)
- 能够在测验中处理很多参与者
- 拥有良好的基础,因此可以使用新的、更复杂的功能进一步开发,而无需重建整个系统(即数据库设计)。
到目前为止的数据库设计图像。我已经在每个“关系”上写了这个字段。
我很确定其中的大部分内容都是不言自明的,但我已经对不太明显的内容添加了注释。
至少在一开始它不会是任何“现场”比赛。更有可能的是,您进行测验,获得时间,然后您可以将链接发送给朋友并参加比赛。但我还在考虑那部分。
我意识到,与将所有内容放在一两个表格中的基本测验设计相比,使用此设计获得完整结果等需要更多的工作。但是我尝试将它分成不同的表,以便能够更好地扩展它并使其更复杂以备后用。
我正在考虑添加某种支持,以便一个问题也可以用于不同的测验。只是在想我应该如何做到最好。
这其中的一个关键功能还在于能够快速加载所有内容。
欢迎任何提示!

wp_quiz(这里我们存储所有不同的测验)
- 测验编号
- 测验名称
- 测验文本
- quiz_site(内部事物,对测验本身并不重要)
- quiz_difficulty
wp_quiz_questions
- quiz_question_id
- 测验编号
- quiz_question
- quiz_question_difficulty
- quiz_question_multianswer(如果这是一个有多个正确答案的特殊问题,那么我们使用例如选择而不是单选按钮)。
wp_quiz_question_answers
- quiz_question_answer_id
- quiz_question_id
- quiz_question_answer
- quiz_question_answer_correct
wp_quiz_participants
- quiz_participant_id
- 测验编号
- quiz_participant_name
- quiz_participant_email
- quiz_participant_userid
- quiz_participant_time_start
- quiz_participant_time_end
wp_quiz_participant_answers
- quiz_participant_answers_id
- 测验编号
- quiz_question_id
- quiz_participants_id
- quiz_question_answer_id
- quiz_question_time_start
- quiz_question_time_end