0

私は、ユーザーがカスタムクイズを定義し、別のユーザーが質問に回答できるようにするこのアプリケーションを作成しています。クイズの各質問には、対応するデータ型があります。すべての質問に対するすべての回答は、[回答]テーブルに垂直に保存されます。現在、応答を保存するために2つのフィールドを使用しています。

//Response schema
ResponseID int
QuizPersonID int
QuestionID int
ChoiceID int //maps to Choice table, used for drop down lists
ChoiceValue varbinary(MAX) //used to store a user entered value

.net 3.5 C#SQLServer2008を使用しています。

同じフィールドに異なるデータ型を格納してから、SQLレポートプロシージャで適切なデータ型に変換したいと考えています。1つのフィールドをチェックするだけなので、これは理想的だと思います。また、それが価値があるよりも厄介かもしれないと思っています。

私の他の選択肢はそうだと思います。データを文字列としてdb(yuck)に格納するか、使用する可能性のある各データ型の列を作成します。

では、SQLで適切に変換できるように、データ型をC#でフォーマットするにはどうすればよいでしょうか。SQLで変換することによるパフォーマンスへの影響は何ですか?データ型ごとに列全体を作成する必要がありますか?

4

1 に答える 1

1

それでも完全な解決策ではありませんが、ほとんどのSQLServerタイプを同じ列に格納できるsql_variantデータ型を確認することをお勧めします。ただし、「長い」データはサポートされていないことに注意してください。

過去に同様の状況で私が使用した別の方法は、「親」応答テーブルとともに、応答のタイプごとに個別のテーブルを用意することです。この阿蘇はあなたがあなたの選択テーブルに適切に関係することを可能にします。たとえば、次のテーブルがあります。

  • 応答
  • StringResponse
  • DateTimeResponse
  • BitResponse
  • ChoiceResponse
  • XyzResponseなど

型指定されたすべての応答テーブルは、オプションでResponseと1-1の関係にあり、他のすべての関連テーブルは、親のResponseテーブルのみに関連します。

于 2010-05-25T20:12:14.990 に答える