我只是想要一些建议,在数据库中创建“问题”表时,我是否需要在每个问题的问题编号中存储,或者这是不需要的,因为每个问题都有自己的唯一ID,这要归功于自动增量和当学生参加考试时,每个学生的问题将以随机顺序出现,因此他们无法复制答案。
换句话说,问题表应该是这样的(例1):
QuestionId (int 11) auto increment PK //unique identifier for each question
QuestionNo (int 3) //the question number
QuestionContent (varchar 800) //the question itself
AnswerId (int 11) //Foreign key to AnswerId in Answer Table
或者它应该是这样的(例2):
QuestionId (int 11) auto increment PK //unique identifier for each question
QuestionContent (varchar 800) //the question itself
AnswerId (int 11) //Foreign key to AnswerId in Answer Table
答案 0 :(得分:2)
我想你回答了自己的问题。自动增量PK字段表示每个问题都有唯一的ID号。您需要提供另一个问题编号字段的唯一原因是,您是否需要能够根据已经确定的其他编号系统查找问题,或者问题编号是否具有其他一些意义。
答案 1 :(得分:1)
我会将QuestionNo
作为加入测试和问题的表格字段。例如,我会有一个Question_on_Test
包含该字段,因为它只与特定的测试修订相关,而与问题本身无关。
答案 2 :(得分:0)
在您的第二个设计中,如果您从数据库中删除问题(无论出于何种原因),您将丢失该问题的ID号。这可能对您的设计至关重要。
答案 3 :(得分:0)
我不认为在问题表中有一个AnswerID是有意义的。这假设一个问题(一对多关系)可能有几个答案。通常有一个正确的答案和几个错误的答案。
如果每个问题只有一个答案,则不需要在单独的表中。
编辑:而且,由于问题可以随机排序,因此问题编号毫无意义。
我认为答案表应该是:
int AnswerID (unique ID)
char AnswerChar (A, B, C, D, E)
int QuestionID (parent Question ID)
bool IsCorrect
text AnswerText