ちょうどキチキーです。私はウェブサイトを開発しています。そこでは、クレジットを購入して後でウェブサイト上のものを使うことができます。 私の質問は、ユーザーIDと金額を別々のテーブルにする必要がある(または、それだけで良い)というユーザーのクレジット量(ユーザーテーブル、列クレジット、データベースにクレジットを保存する
おかげ
ちょうどキチキーです。私はウェブサイトを開発しています。そこでは、クレジットを購入して後でウェブサイト上のものを使うことができます。 私の質問は、ユーザーIDと金額を別々のテーブルにする必要がある(または、それだけで良い)というユーザーのクレジット量(ユーザーテーブル、列クレジット、データベースにクレジットを保存する
おかげ
実際にはです。
これらのクレジットを取得するために通貨取引を行うことを考慮すると、すべての取引のログを取得できるようにする必要があります(国の法律に応じて、これが必要です)。したがって、credits_transactions
テーブルが必要です。
user_id, transaction_id, transaction_details, transaction_delta
は、プログラム取引の多くのユーザーのためのコストがかかりすぎるだろう、あなたの現在のクレジット残高を計算しているので、あなたも素早くアクセスするため、ユーザーテーブルのcredit_balance
行が必要になります。トリガーを使用して、行が挿入されるたびにその列を自動的に更新します。credits_transactions
(技術的には、update
とdelete
はそのテーブルで許可しないでください)。挿入トリガーのコードは次のとおりです。
CREATE TRIGGER ct_insert
AFTER INSERT ON credits_transactions
BEGIN
UPDATE users SET credit_balance = credit_balance + NEW.transaction_delta WHERE user_id = NEW.user_id;
END
;;
私が購入を格納するテーブルを持っており、ユーザIDと、クレジットを買ったと思います。 次に、これに基づいて毎回計算します。インデックスに登録されている場合は速くする必要があります。この方法で簡単に購入履歴を取得できます。
別のテーブルに保存する場合は、クレジットの変更ログを保持できます。列に格納する場合は、現在のクレジット数のみが使用されます。
クレジットを含むサイトもあります。ユーザーがログインしているときにすべてのページにアクセスする必要があるため、クレジットを含むサイトがあり、ユーザーテーブルに保存するのが最も簡単です。それは単なる整数なので多大な損害を与えません。私は実際にこの値のための新しいテーブルを作成することは、それがインデックスaswelを必要とするため、パフォーマンスが悪化する可能性があると考えています。
すべてのページで必要な情報のユーザーテーブルを作成し、必要なデータをすべてのページで標準化します(例:アドレス情報、説明など)。
編集:他の反応を見て 、
あなたが取引を持っているしたい場合は、彼らがログインするために主にあるように私は別々に保管しますaswelを記録します(またはユーザーがそれらを表示したい場合)。小規模なサイトでは、ログからそれらを即座に計算しても問題ありませんが、パフォーマンスを圧迫する必要がある場合は、実際の値をuserテーブルに保存してください。
あなたが今日買ってどのように多くのクレジット
で何を買いました。このようにして、数学的操作を適用することで、このような結果を得ることができます。
うん、それは私が最も効率的な方法だろうと思ったまさにです。私はログからのバランスを計算する他のアイデアは非常に遅いだろうと思う、そのサイトの目標を考えて100,000人以上のユーザーを持っていると思う、彼らはトランザクションや日常的に行うだろうということです。 – Tom
しかし、私はまだ1つの質問があります、あなたはトリガーを使用して、あなたは私にこのことについてもう少し詳しく説明できますか? – Tom
あなたのトリガーはクレジットを追加するためだけに機能しますか?支出はどうですか? transaction_deltaのマイナスの値ですか? – Tom