mysql - 发票表设计

标签 mysql sql database database-design invoice

我正在为客户创建发票表。有时他们必须向我发送佣金,有时我向他们发送费用(账户余额)。这种情况下如何设计发票表?

我想出了这个解决方案,我不确定这是否正确或有什么替代方法?

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

如果您可以重新设计我的表格,那就太好了。

最佳答案

一些事情:

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

  2. 一定要保留发票金额。如果您需要考虑折扣,这可能必须与 tbl_order.total 中的价格值不同。无论如何,数字数据的存储成本很低,并且如果不需要进行任何连接,查询速度会更快。

  3. 为 Payments 表提供自己的 ID 列,并将其设为 PK。

  4. 剩下的看起来还不错。有一种情况需要有两个表,一个用于付款,另一个用于付款。如果你真的只需要保留金额和日期信息,那么我认为你不需要让它变得更复杂。

谢谢, 克里斯。

关于mysql - 发票表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330675/

相关文章:

sql - 很多外键 - Django Admin

sql - 我如何在 PSQL 中查询一个表,以便它返回相同的成对列表?

sql - 请解释为什么脚本以这种方式工作

mysql - 每月交易次数(自 2014 年至 2016 年)

mysql - 预设/自定义选择问题的数据库设计

mysql - 非常大的MySQL数据库,删除一列,数据库大小增加了50%

database - 外键字段可以与它在另一个表中引用的字段具有不同的名称吗?

php - XAMPP MYSQL PHPMYADMIN 数据库导入错误 #1064

php - MySQL查询以检索上次服务器关闭时的记录

php - Laravel 5 Session_driver 数据库 token 不匹配