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_Test、特定のテスト リビジョンにのみ関連し、質問自体には関連しないため、そのフィールドを含む which があります。

于 2012-10-02T00:10:20.897 に答える
0

2 番目の設計では、(何らかの理由で) データベースから質問を削除すると、その質問の ID 番号が失われます。これは、設計にとって重要な場合とそうでない場合があります。

于 2012-10-02T00:12:33.093 に答える
0

質問テーブルに AnswerID を入れるのは意味がないと思います。これは、1 つの質問に対して複数の回答が存在する可能性があることを前提としています (1 対多の関係)。通常、1 つの正解と複数の不正解があります。

質問ごとに回答が 1 つしかない場合は、別の表にする必要はありません。

編集:そして、質問はランダムに並べ替えることができるので、質問番号は無意味です.

回答表は次のようにする必要があると思います。

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 に答える