1

我只是想要一些建议,在数据库中创建“问题”表时,我需要存储每个问题的问题编号还是不需要,因为每个问题都有自己唯一的 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
4

4 回答 4

2

我想你回答了你自己的问题。自增 PK 字段意味着每个问题都会有一个唯一的 ID 号。您需要提供另一个问题编号字段的唯一原因是您是否需要能够根据已确定的其他编号系统查找问题,或者问题编号是否具有其他意义。

于 2012-10-02T00:10:07.120 回答
1

我会制作QuestionNo一个表格的字段来连接一个测试和一个问题。例如,我将有一个Question_on_Testwhich 将包含该字段,因为它仅与特定的测试修订相关,而与问题本身无关。

于 2012-10-02T00:10:20.897 回答
0

在您的第二个设计中,如果您从数据库中删除一个问题(无论出于何种原因),您将丢失该问题的 ID 号。这可能对您的设计至关重要,也可能不重要。

于 2012-10-02T00:12:33.093 回答
0

我认为在问题表中有一个 AnswerID 是没有意义的。这是假设一个问题可能有多个答案(一对多关系)。通常有一个正确答案和几个错误答案。

如果每个问题只有一个答案,则不需要在单独的表格中。

编辑:而且,由于问题可以随机排序,问题编号是没有意义的。

我认为答案表应该是:

int AnswerID  (unique ID)
char AnswerChar (A, B, C, D, E)
int QuestionID (parent Question ID)
bool IsCorrect
text AnswerText
于 2012-10-02T00:13:25.750 回答