0

私のデータベースには、テンプレートフォームと値を持つ実際のフォームが含まれています。ユーザーは、さまざまな種類のフィールドを含むカスタム テンプレート フォームを作成できます。値は別のテーブルに保持します。

フォーム テーブル:

Id | Name | TemplateId

FormField テーブル:

Id | FormId | Name | ValueType (nvchar)

値テーブル

FieldId | Value

ユーザーがフォームをデザインすると、 TemplateId を持つフォーム テーブルに保存されますNULL。また、FormFields テーブルには、このフォームに使用されるフィールドが格納されます。後でユーザーがそのテンプレートを使用して実際のフォームを作成すると、このフォームの実際の値 (FormFields から取得) が Values テーブルに格納されます。現在、値テーブルの値列はsql_variantタイプのようです。使用しない場合sql_variant、どうすればこの問題を解決できますか?

Ps: 値の種類ごとに異なるテーブルを作成するのはどうですか? TableIntValues、TableBoolValues など?

http://www.jotform.com/は、私のプロジェクトの良いサンプルです。

4

1 に答える 1

0

次の行に沿って、個別のデータ型に個別の列を使用することをお勧めします。

FieldId | StringValue | IntegerValue  |  DateTimeValue

そうすれば、データに対して適切にクエリを実行し、型を安全に保つことができます。データが正しく入力されるようにするためのロジックと、すべてが NULL ではなく 1 つの列のみが入力されるようにするための制約が明らかに必要です。

于 2013-04-10T12:11:24.123 に答える