これで、ユーザーがタスクを完了するたびにユーザーを追跡する小さなWebアプリケーションを作成しています。そして私は自分のデータベースをレイアウトする最良の方法を特定するのに苦労しています。MYSQLデータベースのユーザーのためのタスクの進捗状況を追跡するベストプラクティス
最初に物事を説明するいくつかのルールとロジック。色で識別される多くのタスクがあります。欲求、赤、青、黄色などです。各作業には1〜40の多数の演習があります。緑1、緑2、緑3など。すべての演習は難易度があります。私はすべてのタスク/練習のために各ユーザーの進行状況を完了としてマークすることによって追跡したいと思います。つまり、完成したものすべてを数えることができ、完了したパーセンテージをタスクに与えることができます。
現在、私のDBのテーブルは次のようになります。各タスク(色が)taskinfo例えば 'greentaskinfo'(色)と呼ばれるテーブルがあり
:
+----------------------------+
| colorid difficulty active |
| 1 H Y |
| 2 H y |
| 3 L Y |
| 4 L y |
+----------------------------+
そして、これまでカラー/タスクのためにそこにありますプログレステーブルeg greenprogressinfoこれにより、各ユーザーの進行状況が保存されます。
+-------------------------------------+
| progressid userid colorid complete |
| 1 1 1 Y |
| 2 1 2 Y |
| 3 1 3 N |
| 4 1 4 N |
| 5 2 1 N |
| 6 2 2 Y |
| 7 2 3 N |
| 8 2 4 Y |
+-------------------------------------+
それから私は完了しているどのように多く数えるどこユーザーID = xと完全= Yと総数から割合としてそれをうまくすることができます。
しかし、これは、ユーザー登録時に9個のタスクテーブルに対して40個のエントリを自動的に作成する必要があることを意味します。非常に効率的ではないようです。おそらく私が見るよりも多くの問題があります。どんな専門家からのアドバイスでも、それをよりうまく設定する方法は分かります。
進捗表をあらかじめ入力する必要があるのはなぜですか?タスクが開始されたときにcomplete = Nの行を挿入し、完了時にcomplete = Yを設定することができます。行が存在しないということは、決して始まったことはない –
プラスなぜ9つのタスクテーブルが必要ですか?ただひとつ持っていて、その色の欄があります。 – Shadow