我打算为我的一位朋友制作测验网络应用程序。 截至目前我已经决定了下面的内容。我需要您对此提出建议以及可以更改的内容,以便有助于使应用程序更加优化。
数据库 - 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文件中非常混乱的部分。
有什么办法可以避免吗?或其他一些方法来实现同样的目标。
请提供有关上述内容的建议,可以更改哪些内容以提高效率。
答案 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 = ?