私は私たちの場所の検査を生成するアプリケーションを書いています。基本的には、健康診断書と考えてください。各「検査」には、一連の質問と回答があります。答えは、数値(1,2,3,4,5-ポイント値を表す)、またはポイントにマップされる複数の選択肢('Yes'、'No')(1はyes、0は0)のいずれかです。いいえ)ポイントにマップされないが、平均化のためにアプリケーション層で使用できる可能性があるフラットテキストの回答。たとえば、ポイントを持たない「ソース温度」のフィールドを作成できますが、今後のレポートに使用できます。
質問は複数の検査フォームで再利用できますが、ポイント値が異なる場合があります。だから答えることができます。
このためのスキーマを理解するのに問題があります。私の本能では、EAVは良い方法だと言っていますが、考えれば考えるほど、データウェアハウスモデルの方が良いと思います。
特に、min_points、max_points、no_pointsを各質問/回答にマッピングするための最良の方法を見つけるのに問題があります。ここで、EAVを使用する必要があると考えています。私は実際にそれに固執しているようなものです。アンケートなどでポイントがない場合や、回答ごとにポイント値が同じ場合は、かなり簡単です。質問表、回答表、入力タイプの定型文表など。ただし、各質問にはポイント値がある場合があり、そのポイント値は、その質問を使用している場所によって変わる可能性があるため、どのように進めるかがわかりません。
したがって、質問の例は次のとおりです。
- 食べ物は暑かった[はい、いいえ]可能なポイント= 5(はいの場合は5、いいえの場合は0)
- 食べ物は美味しかった[1,2,3,4,5]可能なポイント=5(1は1、2は2など)
- マネージャーは当番でした[はい、いいえ]可能なポイント= 5(はいの場合は5、いいえの場合は0)
- 建物はきれいでしたか[1,2,3,4,5]可能なポイント=10(1の場合は2、2の場合は4、3の場合は6など)
- スタッフはプロでした[はい、いいえ]可能なポイント= 5(はいの場合は5、いいえの場合は0)
- 冷凍庫温度[数値テキスト入力]
- 勤務中のマネージャー[テキスト入力]
すべての回答は異なるデータ型とポイント値を持つ可能性があるため、それらのデータベースを構築する方法がわかりません。
私は考えています(簡潔にするために、他の表、名前、その他のインプの詳細は省略または変更されています)
CREATE TABLE IF NOT EXISTS inspection(
id mediumint(8) unsigned not null auto_increment PRIMARY KEY,
store_id mediumint(8) unsigned not null,
inspection_id mediumint(8) unsigned not null,
date_created datetime,
date_modified timestamp,
INDEX IDX_STORE(store_id),
INDEX IDX_inspection(inspection_id),
FOREIGN KEY (store_id) REFERENCES store (store_id)ON DELETE CASCADE,
FOREIGN KEY (inspection_id) REFERENCES inspection (inspection_id)ON DELETE CASCADE)
CREATE TABLE IF NOT EXISTS input_type(
input_type_id tinyint(4) unsigned not null auto_increment PRIMARY KEY,
input_type_name varchar(255),
date_created datetime,
date_modified timestamp)
CREATE TABLE IF NOT EXISTS inspection_question(
question_id mediumint(8) unsigned not null auto_increment PRIMARY KEY,
question text,
input_type_id mediumint(8),
date_created datetime,
date_modified timestamp)
CREATE TABLE IF NOT EXISTS inspection_option(
option_id,
value)
しかし、ここで私はちょっと立ち往生しています。ポイント、ポイントなし、さまざまなデータ型を考慮して質問回答テーブルを作成する方法がわかりません。
また、店舗から検査などへのマッピングテーブルが必要になることはわかっていますが、質問にとって重要ではないため、ここではすべてを省略しました。
したがって、すべての可能な回答(オプションテーブルから作成されるか、テキストとして入力される)がそのテーブルに格納されている回答のテーブルを作成し、次に「回答」を「質問」にマップするためのマッピングテーブルを作成する必要があります(特定の場合)検査)そしてそこにポイントを保存しますか?
私は正しく考えていません。私はいくつかの助けを使うことができました。