小编典典

发票表设计

sql

我正在为客户创建发票表。有时他们将不得不向我发送佣金,或者有时我将它们发送给我(账户余额)。在这种情况下如何设计发票表?

我想出了这个解决方案,我不确定这是正确的还是替代方法?

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字段吗?

如果您可以重新设计我的桌子,那应该很棒。


阅读 225

收藏
2021-04-22

共1个答案

小编典典

一些东西:

  1. 将发票状态标准化为自己的查找表,然后在发票表中放置一个状态ID,而不是“已发送”,“已取消”等。

  2. 绝对保留发票金额。如果您需要考虑折扣,则此价格可能必须与tbl_order.total中的价格值不同。在任何情况下,数字数据存储起来都很便宜,如果您不必执行任何联接,则查询起来会更快。

  3. 给Payments表自己的ID列,并使其成为PK。

  4. 其余的看起来还可以。有一种情况,有两个表,一个用于付款,另一个用于付款。如果您真的只需要保留金额和日期信息,那么我认为您无需使其变得更加复杂。

谢谢,克里斯。

2021-04-22