2016-10-21 4 views
1

私は以下の問題について意見/解決方法が必要です。PHPアンケート計算デザイン

67の質問があり、PHPでコード化され、データベース(MySQL)を使用するこのアンケートがあります。設計上、データテーブルはIDと質問番号を含む次のようなものです。

したがって、

これらの回答を含むレポートを生成します。つまり、各質問の平均値、中央値を取得し、ユーザーレポート画面に表示します。現在、493行があり、時間の経過とともに処理時間が長くならないものを考えたいと思っています。

プロセスを容易にする(意見がある)意見やアプローチはありますか?計算のためのクラスを作成し、各質問に対して実行し、その値をビューに保存する必要がありますか?同様の問題についてはhereという回答が見つかりましたが、確認できませんでした。本当にどんなアイデアを聞いても大丈夫です。

Sample Database table

+0

あなたのレビューのために正規化 – Strawberry

答えて

2

個人的に、私は67列幅の広いテーブルを使用して回避し、代わりに2列の主キーと3列のテーブルにしてください。

ID | Q | Result 
1 | 1 | 1 
1 | 2 | 3 
1 | 3 | 2 
... 
4 | 5 | 4 

それから統計を実行します。それは67倍長くなりますが、あなたの統計はすべてプライマリキー検索になります。とにかく数百万行未満のものはどんなに速く卑劣になるでしょう。

ああ、統計情報は、mysqlを使用して、それは良いことです。例:

SELECT AVG(Result) WHERE Q = 1; 

中央値にはthis solutionを使用します。

+0

をご覧ください。私はそれを使用しませんが、コードや構造を変更することはできません。 – cevizmx

+0

まあ;あなたがクイック統計を表示するために*代替*方法を探しているなら、確かに、統計テーブルを作成し、上記の統計クエリを実行し、新しいレコードが挿入されるたびにそれらを格納し、ちょうどそれを参照してください。あなたは確かに平均の増分更新を行うことができますが、私はあなたが増分的に中央値を計算することはできないと思います。 – jhaagsma