测验应用程序的数据库设计

时间:2013-03-09 16:09:39

标签: mysql sql database database-design database-table

我对测验应用程序的数据库设计感到困惑。请指导我 -

我的应用用户界面将会是这样的 -

Image

我的DB表格 -

用户 -

user_id
user_name
user_email
user_password
user_registration_date
user_active

问题 -

question_id
question_title
question_category_id
question_level_id
question_author_id
question_status
question_create_date

类别 -

cat_id
cat_name
cat_author
cat_create-date
cat_status

等级 -

level_id
level_name

回答 -

?????????

查询 -

我坚持使用答案表。意思是我不确定在答案表中使用data type设置哪些列。

我的答案只会在选项格式中表示1,2,3,4选项或选项中没有文字类型答案的真假。只需选择一个选项。

请指导我,因为我坚持这一点。

请在上述表格中表示是否有问题,如果您为Level级别OK创建了一个单独的表,或者它是一个坏的(Level级将只是 - 初级,中级,高级),请告诉我

2 个答案:

答案 0 :(得分:6)

过去当我这样做时,我已经用这种方式处理了答案:

表:QuestionAnswers
字段:ID,QuestionID,AnswerText(字符串),AnswerCorrect(bool)

表:QuestionAnswerResponses
字段:ID,QuestionAnswerID(链接到上面的ID表),Userid,AnswerSelected(bool),TimeAnswered(datetimr)。

答案 1 :(得分:1)

首先,在表中包含的每个字段中重复表的名称是多余的。所以我建议不这样做。唯一可能的例外是主键/自动增量字段,因为有些人发现当两个表都有ID字段时必须键入myTable.id会造成混乱或额外的工作。我不确定为什么myTable.id比myTable_id更有效,但你有它。

我过去使用过的是

分心者(这是电子教学类型调用问题的可用答案)
ID
question_id(FK到问题表)
文字(该答案在屏幕上显示的文字)
isCorrect
displayOrder

如果您希望重复使用答案的灵活性,那么您需要使用联结表,而不是在distractors表中使用问题ID。但是,由于您想要确定问题的创建日期,您可能希望将答案严格指向一个问题。