【发布时间】:2020-04-20 00:00:59
【问题描述】:
我正在开发一个可以进行金融交易的系统。在这个系统中,用户可以插入或取款、买卖产品、向其他用户汇款等。
我目前有一个用户表,除了注册数据之外,还包含用户在他的钱包中的总余额。
还有另一个交易表,它指示所有已进行的交易、进出账户的资金 (in_or_out)、交易的参考 (trans_ref)以及被转移的价值。
以下是当前结构:
| Table USERS |
----------------------------
|cod varchar (index)|
|full_name varchar |
|username varchar |
|password varchar |
|wallet decimal |
|created_at timestamp |
|activate int |
| Table TRANSACTIONS |
----------------------------
|cod varchar (index)|
|user_cod varchar |
|trans_ref varchar |
|in_or_out int |
|value decimal |
|created_at timestamp |
|status int |
我担心由于交易出错,金额不会添加到用户表中。或者用户进行了支付并且金额没有从表中扣除。因为我会一直考虑用户*钱包*的价值作为他帐户中的总金额。
因此,如果他购买了 1000 美元,而这笔金额没有从他的帐户中扣除,他仍然有相同的金额可以花费,这可能会给公司带来损失,因为有 100 万美元用户,很难知道是哪个用户提出了问题。
我认为,我不是在用户表中计算钱包的总数,而是进行查询以获取交易的总和。那么在这种情况下,如果我有 100 万用户和 10 亿笔交易,那么一直获取汇总的数据就太繁重了,这会给系统查询带来很多缓慢。
有一些计算或类似系统经验的人可以指导我用更好的逻辑来构建这些表格吗?
请记住,当前的结构仍然可以通过任何必要的方式进行修改。
【问题讨论】:
-
这种事情需要专业的支持
标签: mysql data-structures