0
  • 各ユーザーは、毎月いくつかのパラメーターを入力する必要があります。
  • それを補足する必要のあるパラメーターの数はユーザーごとに異なり、各ユーザーは新しいパラメーターを追加できます(ただし、既に値が入力されている場合は、既存のパラメーターを削除することはできません)。 EXuser_1には:param_1、param_2; user_2には、param_1、param_3、param_4などがあります。

  • これらのパラメーターをユーザーレベルで合計する必要があります。

私には2つの問題があります:

テーブル構造に最適なオプションはどれですか? 考慮事項:ユーザーcahが持つパラメーターの最大数は12です。アクティブユーザーの数は約5000に達するでしょう(私は願っています)

  • 個別の列

| user_id | 月| param_1 | param_2 | ... | param_12 |

  • 個別の行:

    | user_id | 月| param_id | param_value |

    | 001 | 2012年11月| param_1 | 100 |

    | 001 | 2012年11月| param_2 | 125 |

    | 002 | 2012年11月| param_1 | 110 |

    | 002 | 2012年11月| param_3 | 150 |

    | 002 | 2012年11月| param_4 | 175 |

また、テーブル構造の最適なオプションを考慮して、各ユーザーのパラメーターの合計を計算するにはどうすればよいですか?

4

1 に答える 1

3

2番目のアプローチがあなたのケースに最も適していると思います。その場合、メモリを無駄にすることはなく、将来、データベースを拡張する必要がある場合でも、データベースに大きな変更を加える必要がないからです。

ここで、パラメーターを合計する2番目の問題は、user_idによって特定のユーザーのすべてのレコードをフェッチし、それらすべての値を追加することができます。

次のようにクエリを書くことができます

$query = "SELECT SUM(param_value) FROM table_name WHERE param_id = $id"; 
mysql_query($query);
于 2012-11-24T08:42:19.870 に答える