EAVモデルへの道を迷っているという話をすでに聞いているようです。EAVモデルを事実上すべてのコストで回避する必要がある理由については、こちらの画像をご覧ください。
上の画像の責任者であるビルカーウィンは、「SQLアンチパターン:データベースプログラミングの落とし穴を回避する」という本を書き、最初の章をEAVアンチパターンに当てています。彼はまた、大きなこのグループの打者とだ巨大な StackOverflowの上(データベースの問題のため)。
私のアドバイスは、結果のタイプごとにテーブルを用意VIEW
し、必要に応じてsを使用してそれらを組み合わせることです。
例として、
CREATE TABLE char_result
(
question_id INT,
user_id INT,
cresult CHAR,
result_correct BOOLEAN (or equivalent in your RDBMS)
..
<other stuff>
..
);
num_resultについても同じことを行いますが、cresultをnresult INT(FLOAT ...何でも)に置き換えます-VARCHAR&cについても同じ考えです。
次にVIEW
、result_correct
(および他のフィールドnumber_of_attempts
-...&c。-他のフィールドが何であれ)の異なる結果テーブルにsを作成します。この場合、上記の陽気な画像のように人口を標高に追加することと同等の計算を実行していないのと同じように比較しています!