用于创建具有多个可能答案的测验的Mysql数据库设计和用于解释的文本字段

时间:2017-07-31 03:40:43

标签: mysql database database-design

我们正在为在线测验创建数据库架构。向每个用户提出的问题类型很少,例如:

输入1个问题。答案为是/否的问题。

第2类问题。答案为是/否的问题。如果用户选择是,那么用户必须写几个单词,说明为什么他说是。

第3类问题。答案为是/否的问题。如果用户选择“是”,则给予用户很少的选择。你的车是否意外?如果用户选择是,那么我们会显示复选框,如引擎故障,车身重新涂漆,洪水损坏,轮胎损坏等。用户可以选择其中一个或多个选项。

我们想为此设计数据库,请记住在线测验中添加/删除/更新特定类型的问题应该是灵活的,应该快速检索数据以检查任何给定用户的答案。

我们正在考虑遵循数据库设计:

表用户:Id |名称|电子邮件|移动。

表问题:Id |输入|标题。 (此表包含所有问题的列表)

表格QuestionChoice:Id | QuestionId |值。 (此表包含类型3问题的选择值,即引擎失败,正文重新绘制等。)

表UserResponse:Id | UserId | QuestionId |是的| TextForYes

我对表格“QuestionChoice”中的问题很少,我们应该将每个值保存在单独的行中,还是只能将它们保存为单行的逗号分隔值?

它是最好的数据库设计还是其他备用设备?

1 个答案:

答案 0 :(得分:1)

用户:

  

id |名字|电子邮件|移动

问题:

  

id |标题|型

选项

  

id | questionId |值

一个[questionId]到很多[value]。

根据您拥有的数据量,以及选项[值]是否可以用于多个问题,您可以创建表格

  

id |名称

并将选项设为

  

id | questionId | VALUEID

userAnswers

  

id | userId | questionId |选择| optionId |输入

将所有三个保留在一个表中,或者为每种问题制作一个表。 [甚至一个表用于输入,另一个表用于选择/选项]

您是否也想要一张表来“链接”您的问题? [或那部分用代码处理(?)]

linkQuestions :[来自和来自于问题,选择是/否]

  

来自|到| optionId |选择

对于您的担忧: 请尽量避免将数据保存为单行中的逗号分隔值。 出于“好”的原因,这是不好的做法。 [即:管理您的数据将是一个痛苦,sql是关系,并且更容易使用这种方式]