2

私はプログラミングを始めて 1 年になりますが、それ以来、どこにも質問をしたことがありません。アーキテクチャの問題があります。私は 78 の質問と回答を持っています。質問は html コードで静的であり、質問 40 と 41 を除いて、すべて「はい」、「いいえ」、「該当なし」と答えることができます。それぞれの列を使用して、テーブルに回答を保存しています。質問。たとえば、表の回答は次のとおりです。

userid (unique)
companyid (unique)
q1
q2
q3
...
q100

回答テーブルには、会社ごとに一意の行しかありません。ユーザーがアンケートを編集すると、行が履歴テーブルに転送され、新しい行が再び挿入されます。質問または回答にテーブルを使用する場合、各企業について、回答を含む 78 行または 100 行のデータがあります (この場合、回答はドロップダウン リストから選択され、[はい]、[いいえ]、および [n/a] のみが選択肢として表示されます) .

3つの異なるSQLステートメント(アンケートが不完全、完全、または少なくとも1つの回答が「いいえ」に設定されているアンケート)を実装する必要があるため、またはステートメントを使用してそれぞれを識別する代わりに、これを実装するより良い方法があるかどうかを知りたいステータスを含む新しい列を追加して、コードビハインドを操作する必要がありますか?

私はできるだけ明確にしようとしましたが、アドバイスがあれば感謝します。

4

2 に答える 2

1

私は、ユーザー ID、質問 ID、および回答 ID (または回答自体) を格納するテーブルを作成することを好みます。このようにして、テーブル構造を変更することなく、システムに新しい質問を簡単に導入できます。また、誰かが少なくとも 1 つの質問に回答したかどうかを簡単に判断できるようにする必要があります。

いくつかの潜在的な欠点がありますが、状況によって異なります。

于 2013-01-09T02:41:35.873 に答える
1

データを正規化する必要があります。正規化にはいくつかのレベルがありますが、通常、最初は第 3 正規形を目指すことをお勧めします。これは、最初の 3 つの正規形に関するチュートリアルです。

あなたの場合、質問には「質問テキスト」や「質問タイプ」などの属性がある可能性があり、後で質問を追加および編集する可能性が高いため、質問を列にしたくないでしょう。

各質問がそのテーブルのレコードである質問テーブルを作成することを検討してください。

Answers は、たとえば、回答されている質問を指す外部キーと、実際の回答の列を持つ別のテーブルである可能性があります。ユーザーと会社にも外部キーが返される可能性があります。

于 2013-01-09T03:37:33.287 に答える