确保金额总和为零

时间:2015-11-24 16:25:37

标签: mysql database-normalization

我有一个基本上有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     |
----------

0 个答案:

没有答案