オンライン試験システムを構築しています。テーブル、Question
およびGeneralExam
を設計しました。テーブルGeneralExam
には、名前、説明、期間などの試験に関する情報が含まれています...
次に、テーブルGeneralQuestion
を設計します。これには、一般的な試験に属する質問のIDが含まれます。
現在、私はGeneralQuestionテーブルを設計するために2つのアイデアを持っています:
どのデザインが優れているか、または各デザインの長所と短所を知りたいのですが。
Postgresqlデータベースを使用しています。
最初のデザインはより良いものです。
これは、質問への外部キーも作成できるためです。また、IDのリストを解析する処理はありません。また、この場合、一般的な試験クエリと一緒にすべての質問を取得することができます(データベースへの1回の往復のみ)。
2番目の設計の場合、一般的な試験のデータベースエントリを取得し、テキストを解析してから、データベースに再度クエリを実行して質問をする必要があります...
使い方次第です。しかし、ほとんどの場合、INTキーが優先されます。通常、主キーを示すIDなどが表示されます。
最終的には使用方法によって異なります。どのような要件が必要になるか。したがって決定します。ただし、INTが最も推奨されます。ここで私は両方を説明しました
int IDの場合(最初のオプション)#
IDフィールドは、文字列ベースではなく、数値でなければなりません。
文字列/テキストの場合(2番目のオプション)#
@ user1598390のコメントが好き
OPは、int IDとString IDのどちらを使用するかを尋ねていません。彼/彼女は、int ID(1対多)を使用するか、すべての質問IDを「123311; 121322; 123455; 123487」のようなテキスト列に連結するかどうかを尋ねています。
最初のオプションは整数IDとして、2番目のオプションはテキスト/文字列として受け取りました。
使い方次第です。どのような要件が必要になるか。したがって決定します。ほとんどの場合、最初のオプションが推奨されます。この場合、最初のオプションでは、IDのリストを解析するための追加の処理はありません。