2

私の要件は次のとおりです。

  • さまざまなフィールド/フィールド タイプを持つフォームを動的に追加できるようにする必要がある
  • フォームには、別の値で埋められるドロップダウンを含めることができます

提出されたフォーム 例: スタッフフォーム:

  1. 名(テキストボックス)
  2. 姓(テキストボックス)
  3. 部門 (ドロップダウン) -> 部門フォームにバインドする必要があります

部門フォーム :

  1. 部署名(ドロップダウン)

その他の情報:

  • 私のデータベースはSQLサーバーです
  • パフォーマンスを求めている
  • 各テーブルには 100 万を超えるレコードを含めることができます
  • 私たちのシステムには1000人以上のユーザーがいます
  • ユーザーごとに送信されたレコードに関するさまざまなレポートを取得する必要があります
  • レポートには、すべての列にフィルター機能が必要です

オプション:

  1. フォームごとに 1 つのテーブルを作成する
  2. form-structure と field-structure 用に 2 つのテーブルを追加し、submited-form-value と submit-field-value 用にさらに 2 つのテーブルを追加します。

他のオプションやアイデアはありますか?

4

1 に答える 1

5

おそらく、次のようなデータベース構造を作成します。

-- This table will hold the forms
CREATE TABLE tblForm
(
      Form_Id int IDENTITY(1,1) PRIMARY KEY
    , Form_Name varchar(100)
    -- Any other form related data such as create date, owner etc`
)

-- This table will hold the input types (i.e text box, combo box, radio buttons etc`)
CREATE TABLE tblInputType
(
      InputType_Id int IDENTITY(1,1) PRIMARY KEY
    , InputType_Name varchar(100)
)

-- This table will hold the inputs used in the form
CREATE TABLE tblFormInput
(
      FormInput_Id int IDENTITY(1,1) PRIMARY KEY
    , FormInput_Form int FOREIGN KEY REFERENCES tblForm(Form_Id)
    , FormInput_InputType int FOREIGN KEY REFERENCES tblInputType(InputType_Id)
    , FormInput_Name varchar(100)
    , FormInput_DisplayOrder numeric(18,18)
    , FormInput_DefaultText varchar(100)
)

-- This table will hold the texts and values used for combo boxes, radio buttons, check boxes etc`
CREATE TABLE tblFormInputExtraData
(
      FormInputExtraData_FormInput int FOREIGN KEY REFERENCES tblFormInput(FormInput_Id)
    , FormInputExtraData_Text varchar(100)
    , FormInputExtraData_Value varchar(100)
)

興味がある点:

  1. この例では、任意の数値として、すべてのテキスト データに varchar(100) を使用しました。アプリケーションに適したコンテンツの長さを選択する必要があります。

  2. 簡単なので、コンボ ボックスやラジオ ボタンなどの入力の値を格納するためにも varchar を使用しました。テキスト以外の値 (.Net オブジェクトや画像など) を使用する場合は、このデータ型をニーズに合ったものに変更する必要があります。xml と varbinary が思い浮かびます。

于 2016-01-27T07:07:23.377 に答える