mysql - 积分表怎么设计?
高洛峰
高洛峰 2017-04-17 11:13:03
0
1
1396

举例
用户通过做活动得到了100积分,这时候a表中新增一条获取积分的记录
然后用户在下单的时候消费了50积分,(假设这个用户一共只有100积分,a表中就一条数据),a表中如何标识使用了50积分。

问题
1.积分如何拆分 2.如何优先使用快过期的积分(积分有时效)

思路
将用户的积分按最小值1拆分,用户有N个积分,表中就有N行记录
缺点:数据量太大了
优点:积分拆分以后,后期处理比较灵活方便

还有什么好的设计方案嘛

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
黄舟
points_record  (积分表)  
  user_id      (用户ID)  
  point        (点数)  
  used         (已使用了多少)  
  expire       (截止日期) 

每獲得一次積分就在這個表裏添加一條記錄
消費積分時,就更新 used 的值


獲得積分(這個是偽代碼):
INSERT user_id=id, point=point, used=0, expire=now() 30 days

使用積分:
1. 先取得所有可用積分,並按截止日期排序:
SELECT user_id=id, expire > now(), point > used ORDER_BY expire
2. 計算 sum( point - used ) 看可用積分夠不夠
3. 如果可用積分是夠的,就依次更新各條記錄中的 used 的值,直到把要使用的積分扣夠

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板