Heim  >  Fragen und Antworten  >  Hauptteil

mysql - 积分表怎么设计?

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

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

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

还有什么好的设计方案嘛

高洛峰高洛峰2742 Tage vor1344

Antworte allen(1)Ich werde antworten

  • 黄舟

    黄舟2017-04-17 11:15:03

    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 的值,直到把要使用的积分扣够

    Antwort
    0
  • StornierenAntwort