私はお金の有効期限の追跡に関する問題を現時点で扱っています(元々はお金ではありませんが、より便利な例として使用しています)。お金の有効期限追跡
ユーザーは、神秘的な理由でプラットフォームからお金を稼ぐことができ、商品(商品、ギフトなど)を購入するために費やすことができます。
私はユーザーバランスの現在のバランスを見つけるためのアルゴリズム(SQLクエリの最良のケース)を探しています。支出とお金を稼ぐの
イベントが異なるデータベース(MySQLの)テーブルに保存されている(のはuser_earned
とuser_spent
をしましょう)。だから通常のケースでは、私は単にユーザーの合計をuser_earned
から数え、使用された金額(合計でuser_spent
)を引いただけです。
BUT! 獲得したユーザーのお金が2年間で失効するという条件があります。使用されていない場合はです。 つまり、ユーザーがお金を使っていない、またはその一部を使用していない場合は、有効期限が切れます。ユーザーがお金を使用する場合は、のうち最も古いものであるから使用されるため、残高(ボーナス)はユーザーの好みで計算できます。どちらのテーブル(user_earned
とuser_spent
が)タイムスタンプの日付の追跡のためのを持って
:
これらは、場合により良い理解を持っている時間のイベントと5つのシナリオです。
これは、アプリケーションコードで最もよく行われる作業です。 –
現在、イベントのリスト(受信、使用、有効期限)を作成し、それを1つずつ実行するだけで、残高を計算するサービスを実装しました。それは動作しますが、SQLクエリでバランスを取ってユーザーに正のバランスを持たせる必要がある場合は、前にこの値をデータベースに非正規化する必要があります。 – Aistis