使用 PHP 和 MySQL 开发“测验”Web 应用程序的数据库设计

2022-08-30 14:29:50

所以,我正在尝试学习PHP和MySQL(我对两者都有基本的了解;我已经阅读了Head First SQL和Head First PHP & MySQL的前半部分,我认为巩固我的知识的最好方法是构建一些东西而不是阅读。

考虑到这一点,我想创建一个连接到服务器上的MySQL数据库的基本网页。我将构建一个基本的HTML表单,并允许用户输入基本信息,例如:last_name,first_name,电子邮件,生日,性别。

我的问题是我不知道如何设计一个数据库来记录基本测验的结果 - 我只想要5个多项选择题。最终,我想显示用户的结果与以前用户的结果。

如果你能帮助我了解如何为5个问题的测验设计表格,我将不胜感激。谢谢!


答案 1

我从4个简单的表格开始:

用户

- user_id        auto integer
- regtime        datetime
- username       varchar
- useremail      varchar
- userpass       varchar

问题

- question_id    auto integer
- question       varchar
- is_active      enum(0,1)

Question_choices

- choice_id        auto integer
- question_id      Questions.question_id
- is_right_choice  enum(0,1)
- choice           varchar

User_question_answers

- user_id        Users.user_id
- question_id    Questions.question_id
- choice_id      Question_choices.choice.id
- is_right       enum(0,1)
- answer_time    datetime

我对这个表设计的想法是:

  • 表用于存储注册用户。Users
  • 表用于存储您的所有问题。Questions
    • 它具有以便您可以有选择地仅显示活动问题(使用is_activeWHERE is_active = '1')
  • 表用于存储所有可用选项。它定义了什么选择是特定问题的正确答案。question_choicesis_right_choice
  • 表用于存储用户的答案。User_question_answers
    • 它具有更快的查找速度,以查看该特定问题和答案选择是否正确(基于先前定义)。is_rightis_right_choice
    • 它还只需要注意该特定用户何时回答问题。answer_time

答案 2

我不确定你对编程有多陌生,但即使你刚刚开始,我也建议你使用一个框架。

使用框架将通过提供项目中所需工具的最佳实践实现来指导您。

我个人将Symfony用于php项目,我建议您查看他们的指南和教程。Symfony是一个成熟的框架,它基于广泛接受的设计。

不过,为了更直接地回答您的问题,我建议为您的应用程序使用如下内容:

 - user
  - id (PK)
  - last_name
  - first_name
  - email
  - gender


 - quiz
  - id (PK)
  - title


 - quiz_question
  - id (PK)
  - quiz_id (FK)
  - text

 - quiz_question_option
  - id (PK)
  - quiz_question_id (FK)
  - text
  - is_correct

 - quiz_user_answer
   - id (PK)
   - quiz_question_id (FK)
   - quiz_question_option_id  // this is the answer.

以上将允许您定义多个测验,每个测验具有多个问题,并创建答案集(用户对测验的答案集)并记录每个答案。

希望对:)有所帮助


推荐