-2

我使用 Wordpress、jQuery 和 PHP 创建了一个运行良好的测试系统。我没有太多经验的领域是mysql数据库。

我不确定如何以整洁的方式保存结果。

我要保存的内容如下:

  1. 用户名。
  2. 测试名称。
  3. 问题。
  4. 答案。
  5. 分数。
  6. 过关失败。

第 1、2、5 和 6 点相当直接地保存数据。困惑伴随着问题和答案而来。

如何以一种简洁的方式将这些保存到 mysql 数据库中?

假设有 10 个问题,每个问题都有多项选择答案,我如何将每个问题保存在数据库中,但又如何将其链接到填写它们的用户?我不确定如何保持数据库整洁,这可能会很快失控。

将来我可能想对这些问题和答案进行一些搜索。

4

3 回答 3

4

“整洁”应该让你想到“规范化”。

开始考虑关系,暂时不要担心表格。您已经阐明了其中的一些:

  • 问题有一个或多个答案
  • 给定问题的一个或多个答案可以被认为是“正确的”
  • 测试有一个或多个问题
  • 一个考试只有一个分数和一个名字
  • 用户可以进行零次或多次测试
  • 零个或多个用户可以参加测试
  • 一个问题可以出现在零个或多个测试中(?)

一旦你把这些整理出来,表格就相对容易描述了。

于 2013-03-26T09:53:13.390 回答
2

您需要规范化您的数据库结构。

**Table: users**
id - int
username - varchar
password - varchar
active - enum (y,n)

**Table: questions**
id - int
question - varchar/text

**Table: answers**
id - int
question_id - int (foreign key questions.id)
answer - varchar/text
is_correct_anser - enum (y, n)

**Table: test_master**
id - int
test_name - varchar/text
pass_score - int (minimum score required to pass the test)

**Table: test**
user_id - int (foreign key to users.id)
test_id - int (foreign key to test_master.id)
question_id - int (foreign key to questions.id)
answer_id - int (foreign key to answers.id)

根据以上表格,您可以以规范的方式存储所有需要的信息。请注意,规范化并不总是有帮助,它取决于您的应用程序的要求。一旦测试完成,将总分与 user_id 和 test_id 一起存储在单独的表中也是一个更好的理想选择,因为这将避免连接多个表。

于 2013-03-26T10:01:09.170 回答
0

在此创建一个表问题,您有 question_id、问题和选​​择。在 ohter 表中,您只需要保存 question_id、choice、username、score、testname 等。question_id 将是主键问题表。

于 2013-03-26T09:54:00.737 回答