使用PHP,MySql,Bootstrap

时间:2015-06-10 06:44:30

标签: javascript php mysql ajax json

我打算为我的一位朋友制作测验网络应用程序。 截至目前我已经决定了下面的内容。我需要您对此提出建议以及可以更改的内容,以便有助于使应用程序更加优化。

数据库 - MySql

后端 - PHP

前端 - Bootstrap,HTML,JSS,CSS

因此应用程序就像可以进行与一个主题相关的测试。 测试可以包含10个问题。所有这些都是多项选择题。

我计划在一个页面上显示10个问题,并提交一个提交按钮,一旦所有问题都得到解答,我们将提交测验。

在下一页上,它将显示用户正确的选项以及他突出显示的选项。还可以添加选项以将正确答案发送到他们的emailid。

在数据库方面 我想到了以下表格

问题 - 包含诸如question_id,text,option1,option2,option3,option4,correct_option等列。

类别 - 类别列表。 columns - cat_id,cat_name

questions_category - 问题与类别之间的关系。列 - question_id,cat_id

我在这里感到困惑,比如应该存储correct_option的方式/位置。它应该是column_name(option1等)/还是完整的答案文本。还有其他想法吗?

另外,考虑使用 REST api访问数据库记录。我找到了用于在php中创建REST api的 Slim框架。我选择了这种方法,因为将来如果我想更改数据库或前端,它会更容易。

或者你认为不使用REST是好的吗?

在前端,我打算对相应的apis进行 AJAX 调用以访问问题等,并以JSON格式返回响应。

我不喜欢在这里创建来自JSON的HTML结构,以正确的格式显示数据。这不会是javascript文件中非常混乱的部分。

有什么办法可以避免吗?或其他一些方法来实现同样的目标。

请提供有关上述内容的建议,可以更改哪些内容以提高效率。

1 个答案:

答案 0 :(得分:2)

我会改变你桌子的架构。

第一个表是category,其中包含

cat_id  |  cat_name

第二个表格为question,其中包含

question_id  |  cat_id  |  question

第三个表格为options,其中包含

option_id  |  question_id  |  option  |  correct

question表与category表的关系是cat_id。然后问题表与选项表的关系是question_id

您将在选项表中存储多个选项。如果突然间你想要一个问题的更多选项怎么办?那么这个架构对你有用。然后,对于correct列,1会触发正确答案,0会触发错误答案。

例如:

类别表:

cat_id  |  cat_name
  1     |    fruits
问题表:

question_id  |  cat_id  |  question
    1        |     1    |  What is the color of apple?
    2        |     1    |  What fruit is good for potassium?

选项表:

option_id  |  question_id  |  option  |  correct
   1       |      1        |   red    |     1
   2       |      1        |   blue   |     0
   3       |      1        |  yellow  |     0
   4       |      1        |  magenta |     0
   5       |      2        |  apple   |     0
   6       |      2        |  banana  |     1
   7       |      2        |  mango   |     0
   8       |      2        |  melon   |     0

因此,当您提取问题时,您可以使用INNER JOIN获取选项/答案,或使用类别对其进行过滤。

SELECT a.question, b.cat_name, c.question_id, c.option, c.correct
  FROM question a
  INNER JOIN category b ON a.cat_id = b.cat_id
  INNER JOIN options c FROM a.question_id = c.question_id
  WHERE b.cat_id = ?