4

我对我的测验应用程序的数据库设计不太了解。请指导我 -

我的应用程序 UI 会是这样的 -

图片

我的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 选项或选项中的真假没有文本类型答案..只是一个选项选择。

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

请指出上述表格中是否也有问题,并让我知道为级别创建单独的表格是否是OK坏的(级别只会是 - 初级、中级、高级)。

4

2 回答 2

7

过去,当我这样做时,我以这种方式处理答案:

表:QuestionAnswers
字段:ID、QuestionID、AnswerText(字符串)、AnswerCorrect(布尔)

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

于 2013-03-09T16:17:57.750 回答
1

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

我过去使用的是

table Distractor(电子学习类型称为问题的可用答案)
id
question_id(问题表的 FK)
text(要在屏幕上显示该答案的文本)
isCorrect
displayOrder

如果您想要重用答案的灵活性,您会想要使用连接表,而不是在干扰项表中使用问题 id。但是,由于您想确定问题的创建日期,您可能希望使答案严格指向一个问题。

于 2013-03-09T16:21:09.893 回答