请教会员卡的数据库设计、余额的处理

目前
cards 会员卡表
-id
-name 姓名
-banlance 余额

card_recharge 会员卡充值表
-id
-card_id 卡片id
-amount 充值金额
-after_amount 剩余金额

tickets 会员消费小票表
-id
-weight 重量
-amount 消费金额
-after_amount 剩余金额

cardlogs 会员卡变动记录表
-id
-card_id
-logable_type
-logable_id
-amount 消费金额
-after_amount 剩余金额

card_recharge 、 tickets 和 cardlogs 多态关联

现在充值card_recharge、消费tickets 完都会在cardlogs 表里写记录,然后更新cards表里面的余额,余额都是获取card表的余额增减计算。

现在消费tickets 有时候会录入错误,涉及到修改的话,更新余额会不准确,我是获取card 的余额减去tickets的消费金额等于最后的余额,然后在更新card的余额。如果编辑之前的tickets的消费金额就无法正确更新card的余额

大家对会员卡数据库这类都是怎么设计的呢 ,会员卡的余额都是怎么处理的呢,消费一次写一次,还是获取数据后sum一下

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

之前在社区看到一个钱包设计的,你可以参考一下 都是差不多的

3年前 评论

card_recharge 和 tickets 可以合二为一 通过类型去判断充值或是消费。剩下三张表就可以进行关联更新了。消费错误建议使用事务操作并记录相关错误日志。

3年前 评论

充值和消费应该放一张表里,另外会员卡余额不要用消费tickets来统计,应该在消费的时候根据消费金额来更新cards 表,用事务操作保证cards和充值消费表的一致性。

3年前 评论
Complicated

不是高并发的话,开事务就能解决吧

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!