付款交易设计的重复金额列

问题描述 投票:1回答:1

付款方式很少:信用卡/借记卡,现金,比特币

这是我的付款交易表:

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              |

你认为在卡,现金和比特币子表中有多少钱是个好主意吗?

如何解决子表中的重复数量?

database database-design
1个回答
1
投票

我认为您的数据库设计需要一些改进。

首先:会计系统中的交易实体(表)持有所有货币交易。如果您的销售逆转,您也应该创建一个新的交易行。此外,如果您的付款退款,您也应该创建一个新的交易行。

其次:所有交易的详细信息应保存在二级实体(表格)中。 (正确设计)。交易类型(例如卡,现金,比特币等)具有许多不同的属性。因此,将所有类型放在一个实体中,制作一些糟糕的设计陷阱,如Nullification。

第三:如果您想拥有一个完整的会计系统来支持所有会计部分(如生成资产负债表),您应该添加许多其他实体。

但在这种情况下,您应该在交易中持有金额。当您想要根据总交易金额执行某些查询时,其他表中的罚款金额非常困难。

© www.soinside.com 2019 - 2024. All rights reserved.