0

顧客の請求書テーブルを作成しています。手数料を送ってもらうこともあれば、手数料(口座残高)を送ってもらうこともあります。この状況で請求書テーブルを設計するにはどうすればよいですか?

私はこの解決策を思いついた、これが正しいかどうかわからない、または代替方法は何ですか?

tbl_invoice
- invoice_id (PK)
- order_id (FK)
- invoice_date
- amount (copy the price from tbl_order.total table)
- status (Invoice Sent, Cancelled, Amount Received, Amount Sent)


tbl_Payments
 - invoice_id (FK)
 - amount_received (recieved commission fees from customer)
 - amount_sent (sent fees to customer)
 - date_received
 - date_sent

tbl_invoice.amountが-30.00の場合、顧客が料金を送ってくれることを意味します。

tbl_invoice.amountが30.00の場合、料金をお客様に送付します。

tbl_invoice.amountフィールドが必要ですか?

私のテーブルを再設計できれば、それは素晴らしいことです。

4

2 に答える 2

2

いくつかのこと:

  1. 請求書のステータスを独自のルックアップテーブルに正規化してから、「送信済み」、「キャンセル済み」などではなく、ステータスIDを請求書テーブルに配置します。

  2. 請求書の金額を確実に保管してください。割引を考慮する必要がある場合、これはtbl_order.totalの価格値とは異なる必要がある場合があります。いずれにせよ、数値データは保存するのに安価であり、結合を行う必要がない場合はクエリが高速になります。

  3. Paymentsテーブルに独自のID列を指定し、それをPKにします。

  4. 残りは大丈夫そうです。2つのテーブルがある場合があります。1つは支払いの送信用で、もう1つは支払いの受信用です。本当に金額と日付の情報だけを保持する必要がある場合は、これ以上複雑にする必要はないと思います。

ありがとう、クリス。

于 2011-06-13T13:07:19.710 に答える
0

追跡する必要があります:

  • 料金
  • amount_sent
  • いただいた分量

3つすべてが重要です。また、支払いでは、fee_paidも追跡します。

最後に、通常、この種のものにはT元帳会計(つまり、借方/貸方)を使用する方が適切です。割引、クーポン、払い戻し、チャージバックなどについて心配する必要がある場合は、物事がはるかにクリーンになります。

于 2011-06-13T11:05:23.440 に答える