我有一个复杂的网站,用真钱处理在线游戏。我为我的交易使用了复式数据库设计,一个简单的例子如下:
John 存入 5 美元 John 收到 5000 个积分 John 使用这 5000 个积分玩游戏。
数据库中的事务如下所示:
trans_id | account_id | trans_type | date | amount |
-----------------------------------------------------
1 | John(PayPal)| Debit | date | -5.00 |
2 | System | Credit | date | 5.00 |
3 | SystemGame | Debit | date | -5000 |
4 | JohnGame | Credit | date | 5000 |
我编写了一个包含事务的存储过程,其中插入了事务 1 和 2、来自 John 的 PayPal 帐户的借记以及对我们系统帐户的贷记。
我的问题是,我是否还应该包括约翰从我们的 SystemGame 账户转移资金到他的游戏账户的其他交易?或者我应该为每组事务都有一个存储过程?所有 4 笔交易同时发生,John 在存入 5 美元后立即记入贷方。
另外,我应该将游戏积分的交易表与真实货币交易表分开吗?