![](/img/trans.png)
[英]SQL: table design for ship/invoice address and SELECT CONCAT issue
[英]Invoice table design
我正在为客户创建发票表。 有时他们必须向我发送佣金,或者有时我向他们发送费用(账户余额)。 这种情况下如何设计发票表?
我想出了这个解决方案,我不确定这是否正确或替代方法是什么?
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。
rest 看起来不错。 有两个表的情况,一个用于付款,另一个用于付款。 如果你真的只需要保留金额和日期信息,那么我认为你不需要让它变得更复杂。
谢谢,克里斯。
您应该跟踪:
这三个都很重要。 在付款中,还要跟踪 fee_paid。
最后,通常最好使用 T-ledger 会计(即借方/贷方)来处理这类事情。 如果您需要担心折扣、优惠券、退款、退单等问题,它会让事情变得更加整洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.