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

时间:2017-12-28 06:40:38

标签: database database-design

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

这是我的付款交易表:

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              |

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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