我是一个刚毕业的毕业生,很少有数据库设计经验。
想象一下网上赌博数据库。我在用复式簿记做模特。用户可以放置赌注,支付的收益,损失,或可能被取消。押注基本上是待决交易。在确认了投注结果后,我们在事务表中添加行、类型为Credit和Debit的行。
但是,我也希望在transactions表中包括类型为“存款”和“取款”的行。
事务处理表中与Wager相关的行将需要Wager的外键。
交易表中与存款/提款相关的行将需要外键作为支付处理信息,也可能需要退款信息。
我认为保持帐户余额变化的单一交易表是好的,所以我不想分割存款/借方的存款/借方。
在这种情况下,是否可以在设计事务表时知道每一行中都有3-5的空列?或者你会做一个不同的解决方案?
谢谢你的建议。
发布于 2022-06-07 04:41:34
把所有东西都放在一张桌子上会变得很笨拙。取而代之的是两张主桌。
两者都不是“交易”。事务是第二个表中的第一行到第一个INSERTing和第一个UPDATEing行的组合。在谈到数据库时,请使用“事务”一词仅指它在这种情况下的特殊含义。
第二个表可以从第一个表中派生出来,但这比确保它们保持同步不太实际。BEGIN...COMMIT (围绕数据库事务中的SQL )在这方面提供了帮助。
FOREIGN KEYs主要是一种数据完整性检查.你的措辞让它们听起来更重要。忘掉FKs (目前),专注于需要执行哪些插入/更新/etc。
未完成的赌注可能需要放在第三张桌子上。而且,当投注结束时,可能会删除赌注行(或标记为已完成)。
同样,在进行上述其他更改时,对赌表的更改需要成为数据库事务的一部分。
https://dba.stackexchange.com/questions/313011
复制相似问题