0

私たちの Web サイトのセクションでは、ユーザーに自分自身 (「プロファイル」) に関する 20 の多肢選択式の質問をするよう求めています。Web サイトのこの部分は頻繁に表示され、ときどき更新されます。この Web サイトでは大量のトラフィックが発生することが予想されるため、パフォーマンスの問題に備えて準備することを検討しています。

これをDBに保存するために私が見ることができる3つの方法は次のとおりです。

  1. 質問ごとに 1 つのテーブルを作成します。各テーブルには QuestionID と Answer があり、次にプロファイル データを格納する CustomerInfo テーブルがあり、外部キーが質問にマップされています。

  2. Question、Question_Type、および Answers テーブル。これらの構造にすべてを詰め込みます。ここでの私の懸念は、特にプロファイルを更新するために必要な 20 ほどの挿入です。これは、トラフィック量が多い場合にパフォーマンスに影響を与えますか?

  3. 非正規化された単一のテーブル、質問ごとに 1 つのフィールド、HTML や C# オブジェクトに回答コードをハードコーディングします。

私は#2または#3に傾いています。最善の解決策は何だと思いますか?

4

1 に答える 1

5

次のテーブルを作成します。

Survey (PK:SurveyID)
Question (PK:QuestionID, FK:SurveyID)
QuestionAnswer (PK:QuestionAnswerID, FK:QuestionID)
QuestionResponse (PK:QuestionResponseID, FK:QuestionAnswerID, FK:UserID)

1 つのステートメントで挿入を行うことにより、負荷を最小限に抑えることができます。

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
于 2010-04-12T21:06:32.583 に答える