【发布时间】:2013-09-10 02:20:45
【问题描述】:
我正在使用 PHP 和 MySQL 编写一个基于 Web 的测验应用程序。我不想让你特别厌烦它的细节,所以这就是(我认为)你需要知道的。
问题都是多项选择,可以存储在一个有几列的简单表中:
- ID:题号(主索引)
- 类别:此问题所属的类别(例如动物、 蔬菜、矿物质)
- 文本:问题词干(例如,什么是 1+1?)
- 答案 1:可能的答案(例如 2)
- 答案 2:可能的答案(例如 3)
- 答案 3:可能的答案(例如 4)
- CorrectAnswer:问题的正确答案(1、2 或 3(在本例中为 1))
用户可以通过创建用户名和密码进行注册,然后尝试从类别中提问。
问题是我写的问题被设计为不止一次尝试。但是,需要向用户提供有关其进度的详细反馈。问题的第一次尝试很重要,并有助于用户的整体“问题第一次回答”得分。因此,我需要记录一个问题被尝试了多少次。
由于该应用程序的设计非常灵活,因此我希望能够为数百名用户尝试数千个问题提供支持。因此,试图将这些信息整合到用户表或问题表中似乎是不可能的。我想解决这个问题的方法是在每个用户注册后为他们创建一个新表,其中包含不同的列。
- 表名:用户的个人表(例如 TableForUser51204)
- QuestionID:用户尝试的问题的 ID。
- CorrectFirstTime:一个布尔值,说明是否 问题第一次回答正确。
- 正确:问题被回答的次数 正确。
- 不正确:问题被回答的次数 错误。
所以我想我想问的是,以这种方式组织数据库是否是明智之举。有没有更好的方法而不是为每个用户创建一个新表?如果有 500 个用户和 2000 个问题,这会对性能造成多大影响?
谢谢。
【问题讨论】:
-
为每个用户创建一个新表 -> 你在开玩笑我吗?
-
如果你的问题有 10 个答案怎么办?