我正在为客户创建发票表。有时他们必须向我发送佣金,有时我向他们发送费用(账户余额)。这种情况下如何设计发票表?
我想出了这个解决方案,我不确定这是否正确或有什么替代方法?
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 字段吗?
如果您可以重新设计我的表格,那就太好了。
最佳答案
一些事情:
将发票状态标准化为其自己的查找表,然后将状态 ID 放入发票表中,而不是“已发送”、“已取消”等。
一定要保留发票金额。如果您需要考虑折扣,这可能必须与 tbl_order.total 中的价格值不同。无论如何,数字数据的存储成本很低,并且如果不需要进行任何连接,查询速度会更快。
为 Payments 表提供自己的 ID 列,并将其设为 PK。
剩下的看起来还不错。有一种情况需要有两个表,一个用于付款,另一个用于付款。如果你真的只需要保留金额和日期信息,那么我认为你不需要让它变得更复杂。
谢谢, 克里斯。
关于mysql - 发票表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330675/