我们正在为在线测验创建数据库架构。向每个用户提出的问题类型很少,例如:
输入1个问题。答案为是/否的问题。
第2类问题。答案为是/否的问题。如果用户选择是,那么用户必须写几个单词,说明为什么他说是。
第3类问题。答案为是/否的问题。如果用户选择“是”,则给予用户很少的选择。你的车是否意外?如果用户选择是,那么我们会显示复选框,如引擎故障,车身重新涂漆,洪水损坏,轮胎损坏等。用户可以选择其中一个或多个选项。
我们想为此设计数据库,请记住在线测验中添加/删除/更新特定类型的问题应该是灵活的,应该快速检索数据以检查任何给定用户的答案。
我们正在考虑遵循数据库设计:
表用户:Id |名称|电子邮件|移动。
表问题:Id |输入|标题。 (此表包含所有问题的列表)
表格QuestionChoice:Id | QuestionId |值。 (此表包含类型3问题的选择值,即引擎失败,正文重新绘制等。)
表UserResponse:Id | UserId | QuestionId |是的| TextForYes
我对表格“QuestionChoice”中的问题很少,我们应该将每个值保存在单独的行中,还是只能将它们保存为单行的逗号分隔值?
它是最好的数据库设计还是其他备用设备?
答案 0 :(得分:1)
用户:
id |名字|电子邮件|移动
问题:
id |标题|型
选项:
id | questionId |值
一个[questionId]到很多[value]。
根据您拥有的数据量,以及选项[值]是否可以用于多个问题,您可以创建表格
值
id |名称
并将选项设为
id | questionId | VALUEID
userAnswers :
id | userId | questionId |选择| optionId |输入
将所有三个保留在一个表中,或者为每种问题制作一个表。 [甚至一个表用于输入,另一个表用于选择/选项]
您是否也想要一张表来“链接”您的问题? [或那部分用代码处理(?)]
linkQuestions :[来自和来自于问题,选择是/否]
来自|到| optionId |选择
对于您的担忧: 请尽量避免将数据保存为单行中的逗号分隔值。 出于“好”的原因,这是不好的做法。 [即:管理您的数据将是一个痛苦,sql是关系,并且更容易使用这种方式]