我有一个基本上有3个表的数据库:
accounts
< - operations
- > orders
我想允许从 n 帐户到 m 帐户的资金交易。
例如,让我们考虑从Alice和Sophia到Bob ans Joe的11美元交易:
| Sender | Receiver |
| ------ | -------- | ------ |
| 1 | | Alice |
| 10 | | Sophia |
| | 6 | Bob |
| | 5 | Joe |
我想确保的是,移动金额的总和始终等于零(在此示例中为(1 + 10) - (6 + 5) == 0
)。
在这个例子中,我在operations
表中有4行。
到目前为止,我使用PHP等编程语言进行了一些控制,以确保总和始终为零。但我真的更愿意用MySQL来确保它在物理层上。
另外,如果可能的话,我宁愿干掉发送方和接收方之间相等的金额。现在,我不认为我的数据库结构是规范化的。你觉得吗?
感谢您的反馈/建议!
修改
SQL表的外观如下:
____________
| accounts |
| -------- |
| id |
------------
______________
| operations |
| ---------- |
| id |
| account_id |
| order_id |
| amount | <- can be positive or negative
--------------
__________
| orders |
| ------ |
| id |
----------