7

ユーザーがゲーム クレジットを購入できるゲーム Web サイトを作成し、その資金がユーザーの仮想アカウントに入金/入金されて、ゲームなどをプレイできるようにします。

1

会計士に取引を記録してもらう場合は、次のように記録されます (もう少し複雑かもしれませんが、要点はわかります)。

TRANSACTION
PK_ID1 Cash      - $10 (System)
PK_ID2 Deposit        $10 (System)

TRANSACTION
PK_ID3 Bank Account      - $10 (John)
PK_ID4 Deposit        $10 (John)

2

開発者として、本当に 2 つの余分なレコードを無駄にする必要がありますか? このように記録してみませんか... (資金の出所、ステータスなどの情報を同じ預金レコードの下の他の列に保存することができます)

TRANSACTION
PK_ID1 Cash      - $10 (system)
PK_ID2 Deposit        $10 (John)

オプション #2 および副ビザよりもオプション #1 に実際の利点はありますか?

編集: 質問を修正し、CR、DR を削除し、記号に置き換えました。

4

2 に答える 2

11

(あなたの質問に答えますが、paxdiabloの答えで提起されたいくつかの点にも答えます。)

会計士があなたのデータベースを調べていることとは何の関係もありません。ダブル エントリを使用すると、エラーを簡単に追跡できます。これは会計IRS の要件であるため、選択の余地はありません。公的資金を扱うシステムでは二重入力が必要です。

  • (「複式簿記」とは何かを私に教えようとしないでください。私は銀行の複式簿記システムを作成し、監査要件を満たしています。) 複式簿記は、一連の口座に基づく会計方法です。すべての金融取引は仕訳です。すべてのトランザクションが最初から再適用された場合、すべてのアカウントは現在とまったく同じ残高になります。

  • 複式簿記とは、すべての取引に「To」アカウントと「From」アカウントがあることを意味します。お金がシステムを離れたりシステムに入ったりすることはありません。すべてのクレジットには、デビットが関連付けられています。

  • したがって、(1) は (2) の「複式」バージョンではなく、簡単に比較することはできません。ジョンの取引の複式簿記バージョンは、(1 つの金融取引)、論理的な会計用語で次のとおりです。

    • From: JohnAccountTo:SystemAccount金額: 10.00(ドル)

    • これは、テーブル内の 2 つの行で、1 つは貸方、もう 1 つは借方であり、2 つの挿入が SQL トランザクションにラップされている可能性があります。

  • これで、内部でお金を扱う経理システムについて説明しました。完了です。

  • ただし、会計システムを購入/販売システムに (明示的に宣言せずに) 結合しています。もちろん、ジョンから受け取った 10 ドルに対しては、彼が購入したものを何でも彼に渡して、それを記録する必要があります。ジョンは 10 ドル相当のゲーム クレジットを購入しました。それを追跡している場合は、次のものが必要です。

    • From: SystemGamingAccountTo:JohnGamingAccount金額: 100(クレジット)
      またはドルで表示:
    • From: SystemGamingAccountTo:JohnGamingAccount金額: 10.00(ドル)

    • これも、テーブル内の 2 つの行で、1 つは貸方、もう 1 つは借方であり、4 つの挿入が SQL トランザクションにラップされている可能性があります。

  • 明確にするために、ゲーム クレジットの代わりにウィジェットを販売している場合、2 番目の (ウィジェット追跡) トランザクションは次のようになります。

    • 送信元:送信先Warehouse:PublicSale金額: 1(ウィジェット)

    • また、倉庫内の Units を追跡していますが、John Q Public がポケットに持っているウィジェットの数は追跡していないため、2 つの挿入と 1 つの更新 ( UPDATE Part SET QtInStock = QtyInStock - 1 WHERE PartCode = "Widget") がすべて SQL トランザクションにラップされています。

そして、ユーザーごとにアカウントがあります。仮想、難解、または物理的なものであり、取引が行われる法人です。ですから、仮想だから存在しないふりをしないでください。ゲームの場合、1 ドル アカウントと 1 つのゲーム (クレジット) アカウント。

クレジット/デビット

CR/DB を元に戻します。CHAR (2) ではなく、ブール値です。後でテーブルが大きいときに役立ちますが、

    WHERE IsCredit = 1  

よりもはるかに高速です

    WHERE Amount >= 0.

">=" では、場合によっては ">" ではなく、すべてのコード セグメントが同じ方法でコーディングされていることを確認する必要があることに注意してください。Boolean や char にはその問題はありません。

于 2010-11-03T10:07:43.950 に答える
2

データ(これはあなたが求めているものです)に関しては、いいえ。符号付きの値として保存する必要があります。複式簿記は暴徒が行うものではないため、IRS から実際の利益を隠すことができます :-)

これは、トランザクションのバランスを取る必要があることを意味します (価値は作成または破壊されることはなく、変換されるだけです)。また、トランザクション (および帳簿) を 1 つの列に記号を付けて格納するだけで、トランザクション (およびブック) のバランスを取るのがはるかに簡単になります。

視覚的な表現に関しては、一部の会計士はそれらを別々の列に配置することを好むかもしれませんが、大多数は単に「ネガティブ」を別の方法で示すレポートを生成します (括弧で囲むなど)。

(他の多くの会計処理と同様に) 二重の列は何ヶ月も前から引き継がれている可能性があります。2 つの列を合計してから、正の合計から負の合計を引いて現在の位置を取得する方が簡単です (加算と減算を混在させるのではなく)。しかし、それは私の側の仮定です。

こちらもご覧ください

于 2010-11-02T03:35:08.677 に答える