我有一个包含购买和退款的交易表。我想在同一张表中创建购买和退款之间的链接(我决定不使用单独的表)。我不确定链接应该朝哪个方向发展。(一次购买只能获得一次退款 - 这是有保证的)
- 选项 1 - 退款与购买相关联
交易ID | 上午 | 退款TrxID |
---|---|---|
1 | 10 | |
2 | -10 | 1 |
- 选项 2 - 购买与退款相关联。(很容易看出一个 trx 是否有退款以及是哪一个)
交易ID | 上午 | 退款TrxID |
---|---|---|
1 | 10 | 2 |
2 | -10 |
有没有标准的建模方法?还是没关系,因为它基本上是相同的连接?
SQL Server,但适用于 RDBM
我会去工作选项 1。您将始终有购买,但并不总是匹配的退款。
这样,您可以将外键退款到 purchase_id 上的现有购买;以确保存在有效的退款购买。
而使用选项 2,您无法购买外键来退款,因为它还不存在。如果您尝试走这条路,则必须在发生这种情况时在退款中插入一行,然后转身并使用该信息更新购买。
至于查看退款与否的难易程度,您始终可以为此创建视图。