我正在为客户创建发票表。有时候,他们必须向我发送佣金,或者有时我会向他们发送费用(账户余额)。在这种情况下如何设计发票表?
我想出了这个解决方案,我不确定这是否正确或者替代方式是什么?
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字段吗?
如果你可以重新设计我的表格应该是多么好。
答案 0 :(得分:2)
一些事情:
将发票状态标准化为自己的查找表,然后将状态ID放入发票表中,而不是“已发送”,“已取消”等。
绝对保留发票金额。如果您需要考虑折扣,这可能必须与tbl_order.total中的价格值不同。在任何情况下,数字数据都很便宜,如果你不需要进行任何连接,查询速度会更快。
为Payments表提供自己的ID列,并将其设为PK。
其余的看起来还不错。有一种情况是有两个表,一个用于支付传出,另一个用于支付传入。如果你真的只需要保留金额和日期信息,那么我认为你不需要让它变得更复杂。
谢谢, 克里斯。
答案 1 :(得分:0)
你应该跟踪:
这三个都很重要。在付款中,还会跟踪fee_paid。
最后,通常最好使用T-ledger会计(即借记/贷记)来处理这种事情。如果您需要担心折扣,优惠券,退款,退款等,它会使事情变得更加清洁。