Shimmy、私はこの問題に対処する4部構成の記事を書いています。Creating a Dynamic, Data-Drive User Interfaceを参照してください。この記事では、クライアントに保存するデータをユーザーが定義できるようにする方法を説明します。そのため、質問の正確な検査ではありませんが、かなり近いです。つまり、私の記事では、エンドユーザーが格納するデータの種類を定義する方法を示しています。これは、必要な行に沿っています。
次ER図はデータモデルの要点を与える:
ここ
、DynamicAttributesForClients
は、ユーザーが作成したが、ユーザーは自分のクライアントのために追跡したい属性の内容を示す表です。つまり、各属性の値はDataTypeId
で、ブール値属性、テキスト属性、数値属性などのいずれかを示します。あなたの場合、この表は調査の質問を保存します。
DynamicValuesForClients
テーブルには、特定の属性の特定のクライアントに格納されている値が格納されます。あなたの場合、この表は調査の質問に対する回答を保存します。実際の値はsql_variant
タイプのDynamicValue
カラムに格納され、数値、ビット、ストリングなどのあらゆるタイプのデータをそこに格納することができます。
私の記事では、オプションのプリセットリストから1つのオプションを選択できますが、これを可能にするためにデータモデルを強化するという多肢選択式の質問の処理方法は扱いません。 - 主キー
DynamicAttributeId
- これらの質問は
OptionText
に関連付けられている属性の内容を指定 - オプションのテキスト
DynamicListOptionId
:あなたは、次の列にDynamicListOptions
という名前の新しいテーブルを作成しますしたがって、複数選択肢のオプションの属性がある場合は、ユーザーインターフェイスのドロップダウンリストに、クエリから返されたオプションを設定します。
SELECT OptionText
FROM DynamicListOptions
WHERE DynamicAttributeId = ...
最後に、あなたは彼らが選択した(または、彼らは項目を選択しなかった場合NULL
を使用)listオプションを記録するためにDynamicValuesForClients.DynamicValue
列で選択DynamicListOptionId
値を格納します。
記事を読んでください。完全なデータベースとそのモデルを含む完全なデモをダウンロードできます。また、このシリーズを構成する4つの記事では、データモデルを詳細に調査し、ユーザーに動的属性を定義させるためのWebベースの(ASP.NET)ユーザーインターフェイスの構築方法、データ入力用の表示方法などを示します。 。
ハッピープログラミング!
また、私はリスト項目を含めるでしょうか(つまり、答えはプリセットリストから来なければならないという属性+ "その他" - 私の質問をお読みください) – Shimmy
@Shimmy:多肢選択式の質問。ありがとう –