2010-11-22 5 views
4

私は柔軟な方法で 'テスト'を定義、表示、保存できるフォームビルダーの種類を構築しようとしています。私。新しいタイプのテスト/フォーム(「グループ化」)を作成し、フォームに表示される一連のフィールド(日付、テキスト、ラジオ、チェックボックスを含む任意のタイプのフィールド、など)。また、各フォーム/テストに保存された値を保存する結果テーブルが必要になります。DBデザインヘルプ - EAV +フォームビルダー

不十分な例として、私がこれまでに以下の3つのテーブルを持っている:

dd_TestGrouping 
- TestGroupingID [pk] 
- TestGroupingName "Algebra-1" 
- TestGroupingTypeID "Math" 

dd_TestFields 
- TestFieldID [pk] 
- TestGroupingID [fk] 
- TestFieldName "Circumference" 
- TestFieldType "TextBox" 
- Sequence 

TestResults 
- TestResultID [pk] 
- TestFieldID [fk] 
- value "50" 
- Unit "CM" 

上記の問題点 - 何もない場合 - 私は動的にドロップダウンリストを表示するかどうかはわかりませんし、リンクラジオ/チェックボックス。また、検証をどのように処理できますか?

ご協力いただきありがとうございます。

+0

あなたのEAVの旅の設定の前に私の答えをお読みください。 –

答えて

2

このようなサウンドは、EAV modelを使用する場合に適しています。新しいテーブルと

dd_TestFields 
- TestFieldID [pk] 
- TestGroupingID [fk] 
- TestFieldName "Gender" 
- TestFieldType "Combo Box" 
- Sequence 

:コンボボックスを含めるように

+0

OPの質問の表はすでにEAVモデルの例です。 –

+0

おかげさまで、何が呼び出されたのかを知ることは、私が今までに読んだことに基づいて、本当にEAVであり、正しい選択(健康記録用)に基づいています。 – Mikalee

+0

待ち、(健康記録)?あなたは代数テストをしませんでしたか? –

3

最初に、inner platform effectに注意してください。

第2に、ドロップダウンのサポートは、「マルチ」タイプのフィールドのすべての可能な値を含む第4のテーブルを持つことの問題です。

+0

+1インナープラットフォームの効果 –

4

は、あなたがこのような何かを経由して、あなたのモデルを拡張する必要がある値

dd_TestFieldSelection 
- TestFieldSelectioniD [pk] 
- TestFieldID [fk] 
- TestFieldValue "Female" 
- Sequence 

検証私は自然にあなたdd_TestFieldsテーブルに属していると思う:

dd_TestFields 
- TestFieldID [pk] 
- TestGroupingID [fk] 
- TestFieldName "Age" 
- TestFieldType "Number/Text Box" 
- Sequence 
- Required "True" 
- MinValue "0" 
- MaxValue "150" 

これは単なる概略ですが、アイデアをy ouはフィットを参照してください。

1

あなたの回答とコメントでは、2つの非常に異なるシナリオを説明しました。

代数テストのフォームビルダーで、サンプルに記載されている場合は、 hereをお読みください。 EAVは非常に魅力的ですが、通常のRDBMSを使用してそのモデルを構築すると、大量の料金を支払うことになります。

ただし、

あなたがコメントで言うように健康記録です。それは別のボールゲームだ。本質的に無制限の数の症状と重大な症状の欠如があるため、健康記録は奇妙です。あなたに手術傷があり、あなたが発熱したとします。それは感染を示す可能性があります。赤み、腫れ、圧痛、傷口からの排膿などがなければ、症状が顕著に現れません。

Facebookのような健康記録を考えてみましょう。あなたが友人のページにアクセスすると、データベースにはその人のPKがあり、それによってすべてが取得されます。あなたは通常、故郷によってユーザー数をカウントせず、例えば結婚しています。そのクエリはEAVに対する痛みです。健康記録と同じです。患者123が表示され、あなたは彼/彼女のチャートが必要です。 6つの症状を共有するすべての人に問い合わせる必要はありません。 (BTW、それは研究では起こるが、それらのEAVレコードはフィルタリングされ、ピボットされ、より多くの3nfフォーマットに変換されなければならない。)

健康記録を行っているなら、健康記録のために特別に設計された新しいEAV RDBMSを調べます。

+0

さまざまな例のお詫び。私は実際に健康記録に取り組んでおり、最初に数学の例を与えたのは説明が簡単だったようです。それは、私が健康記録に取り組んでいるにも関わらず、私が探しているデータのほんの少しだけ定義されていることです。私がEAVパターンに傾いている主な理由は、既知のテストセット(ラボ/診断/フィジックス/その他)がありますが、各病院/部門が次のものとは若干異なるように見えるからです。このように、EAVを使用して病院や部門に基づいたテストの表示とキャプチャを簡単にカスタマイズしたいと思っていました。 – Mikalee

+0

また、数ヶ月おきに新しいタイプのテスト(グループ化として)やテスト内のフィールドを追加するのは珍しいことではないことを付け加えておきます。 – Mikalee

+0

あなたが実際にやっていることを教えてください。わずかな偏差は答えを180度変える可能性があります。 –

関連する問題