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

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

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

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

还有什么好的设计方案嘛

高洛峰
高洛峰

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

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

Every time a point is earned, a record is added to this table
When points are consumed, the value of used is updated


Get points (this is pseudo code):
INSERT user_id=id, point=point, used=0, expire=now() 30 days

Use points:
1. Get all available points first and sort them by deadline:
SELECT user_id=id, expire > now(), point > used ORDER_BY expire
2. Calculate sum( point - used ) to see if the available points are enough
3. If the available points are enough, update the used value in each record in turn until the points to be used are deducted

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template