为问题和答案脚本创建数据库的最佳方法是什么
用户可以提交一个问题,其中包含一组正确答案存在的选择
数据库必须保存问题,所有选择和正确的答案。
我想到的最好方法就是制作两张桌子:
问题表:
选择表:
我正在使用PHP和MYSQL,所以如果我使用这种方式将信息插入我的数据库会有点困难,因为我必须插入问题并插入所有选项并采取正确的选择ID修改Right_Answer_ID字段到该ID,这是一个漫长的过程,我确信有更好的方法来实现这一点,请帮助。
由于
答案 0 :(得分:4)
这个怎么样?
<强>问题强>
<强>选择强>
答案 1 :(得分:1)
让我想起Joseph Heller的Catch-22 ......
与书不同,存在一个真正的漏洞:
简单的方法是生成自己的ID,而不是依赖于自动递增的和其他SQL提供的ID。
这就是说,除了提醒应用程序生成的密钥和标识符有时优于系统提供的对应项,它也是 a反思数据库设计的好机会 例如Jeff的答案,建议将“正确响应”信息从Questions表中的“Right_Answer_ID”列移动到Responses表中的“IsCorrect”列,不仅解决了INSERT循环引用问题,还引入了更多样化的数据model:我们可能对给定问题有多个正确答案(或者可能通过将“IsCorrect”改为排序的数值,其中一个响应可能在滑动标度上“正确”)
答案 2 :(得分:0)
如果选择的数量是可变的,这看起来是最好的方法 - 它被正确地规范化并且易于查询。插入选项的额外for循环不会让你失望。您甚至可以为所有选项构建单个查询并执行一次。
答案 3 :(得分:0)
你的设计是一个很好的启动,但是如果问题有多个正确答案,即使现在情况不是这样,但应用程序往往会发展。这将导致杰夫的回答,以及mjv为保存价值所带来的问题。
因此,当只在问题表中保存“ID”和“问题”时,您可以使用该question_id保存选项,并且在保存选项和更新时无需获取正确答案的ID问题表。
答案 4 :(得分:0)
如果选择的数量是变量或将来可能会改变,那么您提出的设计是正确的方法。如果选择的数量不会改变,那么我会说只有一个表id, question, choice1, choice2, ...., choicen, correct_choice
作为其中的字段就足够了。
答案 5 :(得分:0)
如果您有两个表,则必须有两个插入查询。您可以按照以下设计避免上次更新查询:
问题表:
* ID
* Question
* Right_Answer_Index
选择表:
* Index
* Question_ID
* Choice
如果您需要在选择表上拥有主键,则可以将Index与Question_ID结合使用。这样,在用于创建新问题和答案的html表单中,您可以有一个额外的输入来指示正确选择的索引号,因此当您插入问题时,您将获得所需的所有信息(在正确之前)选择记录已添加)。