付款方式很少:信用卡/借记卡,现金,比特币
这是我的付款交易表:
Transaction:
| ID | AMOUNT | METHOD |
| 1 | 80 | credit |
| 2 | 100 | cash |
Transaction_credit:
| ID | AMOUNT | TYPE | TRANSACTION_ID |
| 1 | 80 | sale | 1 |
| 2 | -80 | reversal | 1 |
Transaction_cash:
| ID | AMOUNT | TYPE | TRANSACTION_ID |
| 2 | 100 | payment | 2 |
| 2 | -100 | refund | 2 |
你认为在卡,现金和比特币子表中有多少钱是个好主意吗?
如何解决子表中的重复数量?
我认为您的数据库设计需要一些改进。
首先:会计系统中的交易实体(表)持有所有货币交易。如果您的销售逆转,您也应该创建一个新的交易行。此外,如果您的付款退款,您也应该创建一个新的交易行。
其次:所有交易的详细信息应保存在二级实体(表格)中。 (正确设计)。交易类型(例如卡,现金,比特币等)具有许多不同的属性。因此,将所有类型放在一个实体中,制作一些糟糕的设计陷阱,如Nullification。
第三:如果您想拥有一个完整的会计系统来支持所有会计部分(如生成资产负债表),您应该添加许多其他实体。
但在这种情况下,您应该在交易中持有金额。当您想要根据总交易金额执行某些查询时,其他表中的罚款金额非常困难。