アプリケーションを開発していて、現在のデータのスナップショットを取りたい状況に遭遇しました。
たとえば、このアプリケーションでは、ユーザーはさまざまな統計を持ち、一致を入力できます。試合での順位は、統計によって異なります。試合が決定されると、アプリケーションはユーザーの現在の統計をすべて取得し、ポイントを決定して誰が勝つかを確認します。
試合が終わった後、ユーザーが過去の試合を表示できるようにしたいのですが、試合時の参加者のポイントを表示したいときに問題が発生します。次のような構造の配列を格納しても問題ないと思います。
array(
array(username, points),
array(username, points),
etc.
)
通常はデータを正規化するのがベスト プラクティスですが、この状況では次のようになります。
- 試合には2~25人の参加者がいる可能性があります。
- データは更新されることはなく、読み取られるだけです。
- データベースの配列構造に含めると、バックエンド コードで配列を作成する時間を節約できると思います。
- 編集: データは永続的ではありません。試合記録は、試合終了から7日後に削除されます。
このソリューションで問題が発生するかどうか、誰か教えてもらえますか?
編集
配列をシリアル化した後にデータを保存するので、データベースには「一致」というテーブルがあり、「結果」という列があります。
この列の行には、シリアル化された配列が含まれます。したがって、配列が次のように見える場合:
$array["a"] = "Foo";
$array["b"] = "Bar";
$array["c"] = "Baz";
$array["d"] = "Wom";
次に、データベースの行は次のようになります。
a:4:{s:1:"a";s:3:"Foo";s:1:"b";s:3:"Bar";s:1:"c";s:3:"Baz";s:1:"d";s:3:"Wom";}