2011-07-15 2 views
0

私は実際に取引や手数料を処理するのに最適なテーブルを設計することに心配しています。特に、どのような場合でもテーブルの同期が外れないようにする必要があります。eコマースアプリから収入表を作成するにはどうすればよいですか?

基本的には、これはeBayのようなものです。ここでは、販売者がバイヤーに販売し、それぞれの取引から手数料を得ています。

アプリはすでにCodeIgniterのを使用して構築され、それが持っている:

今何を必要に応じて他のテーブルが 当社収益と 売り手の収入をフェッチする私たちができるようにするために作るために、そして何
Merchants(id,name,balance) 
Transactions(id,merchant_id,buyer_id,amount,transaction_id) 

払い戻しを処理する最良のDBメカニズムですか?

また、各デポジットの別の表をbalance行ではなく、小売商の残高にする必要があります。

+0

Transactionsテーブルには「transaction_id」とは何ですか? – Sukumar

+0

これはauthorizenetのトランザクションIDです – Ryan

答えて

2

財務タスクを処理するときは、できるだけ多くの情報を常に保存してください。

テーブルをすべて同期させる方法は2通りあります。

  • データベースレベル - 使用して、このようなストアドプロシージャなどのオプションと

  • アプリケーションレベルをトリガ - 利用取引(InnoDBテーブル)とトランザクションがアトミックであることを確認してください。データベースの設計について

を(私はこれで行くことを示唆している) -

あなたのコミッションを追跡しTransactionsの列commissionを追加します。このためのデータは、商品の価格設定時に事前に計算するか、取引中に即時に計算することができます。

バイヤーがproduct cost + commissionを支払うと、売り手はproduct costとなり、commissionとなります。手数料が変動金利(変動金利でなく項目間で変動)である場合、それを保管するItemsテーブルに列を持つことができます。これからは物事は些細なものでなければならない。ユーザーに対してトランザクションのリストを保持するHistoryテーブルを維持するだけで済みます。入ってくるお金のために1と発信お金のために1 - それはあなたが二つにAccountHistoryを分割することができ

AccountHistory(id, transaction_type, transaction_id, amount) 

ようになります。

だから、毎回の取引はTransactionsテーブルへのへの

  1. エントリをたまたま以下に行われます。
  2. 売り手のバイヤー
  3. 更新バイヤーのバランスのためAccountHistoryへの参入AccountHistory
  4. エントリ
  5. 更新売り手のバランス

このすべてがアトミックでなければなりません。

ロールバックの場合、ロールバックを通常のトランザクションと区別するために列transaction_typeを追加するか、別のテーブルを保持することができます。

0

金融取引にさまざまなテーブルが散在しているデータベースで作業していたので、すべてのトランザクションを1つのテーブルにまとめるほうがはるかに優れていると言えます。トランザクションテーブル(およびトランザクションタイプのルックアップテーブル)にトランザクションタイプを追加する必要があります。

それぞれの取引では、手数料と売り手の製品コストのために別々の行を持つことができます。後で取り消された取引は、負の金額として入力されます。また、これらのタイプのもので親トランザクションフィールドを追加すると、変更されたトランザクションを簡単に識別できるようになります。

トランザクションの一部を構成するすべてのデータエントリは、ストアドプロシージャ内にあり、挿入が失敗した場合はすぐにロールバックされるようにトランザクションが存在する必要があります。これは非常に重要です。誰も(システムdbasを​​除く)誰も財務記録を格納するテーブルに直接アクセスできないように、ストアドプロシージャ内にある必要があります。

金融取引を処理することを考えるときは、ユーザーインターフェースだけを設計することが非常に最悪です。財務報告書を作成する必要があります。あなたは財務を監査する人々に相談して、社内外の詐欺行為を防ぐために必要な情報と内部統制を期待する必要があります。

関連する問題