2013-03-09 50 views
2

我有点困惑于我的测验应用程序的数据库设计。请指导我这个 -针对测验应用程序的数据库设计

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

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 

回答 -

????????? 

查询 -

我坚持了答案table..means我不知道在回答表与data type该设置哪些列。

我的答案将只会在选项格式意味着1,2,3,4选项或真正的错误在选项没有文本类型的答案..只是一个选择选择。

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

请在上述表格中指出是否有问题,并告知我是否为等级为OK的单独表格或者它是坏的(级别仅为 - 初级,中级,高级)。

回答

4

在过去,当我这样做我已经用这种方法处理的答案:

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

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

+0

+1包括记录用户答案的​​结构。 – 2013-03-09 16:21:47

+0

@JackPettinger你对剩下的桌子有什么建议?可以吗? +1 – Trialcoder 2013-03-09 18:41:20

+0

@Trialcoder其他表看起来不错。但是,除非我错过了某些东西,否则看起来您的结构只能设置为一次测验。如果你想要多个测验,你需要一个测验表和一个QuizQuestions表。然后,您甚至可以拥有UserQuizzes表,将用户限制在某些测验中。 – 2013-03-09 19:03:37

1

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

我已经在过去使用的是什么

分心(这是电子学习类型要求一个问题可用的答案)
ID
question_id(FK的问题表)
文本(文本显示在屏幕这个问题的答案上)
isCorrect
displayOrder

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

相关问题