公交充值APP的数据库问题

如果我的三张表:卡(卡ID,卡余额)
充值记录(卡ID,充值金额,充值时间)
刷卡记录(卡ID,刷卡金额,刷卡时间)
我的“卡余额”怎么和“充值金额”以及“刷卡金额”扯上关系呢?

要写两个事务
第一个事务是关于充值的
每次执行充值事务
比如说对123卡充100
那么同时要对123卡的余额加100
刷卡记录同理

以卡(卡ID,卡余额)为主表,充值记录和刷卡记录通过卡ID关联。充值一次,卡余额增加相应金额,刷卡一次,卡余额减少相应金额。

充值的时候同时插入充值记录和更改余额表。
刷卡也类似。
不要关联,否则不太经济。

事实上,一般有两个余额。一个余额是在写入充值记录/消费记录时,计算而得.另一个,是每天清算而得.理论上这两个应该相等.
这种问题,余额千万不能和明细扯上关系.充值/消费明细是一张很庞大的表,一旦扯上关系.你的查询速度就完了