Mysql 设计处理奖励到期的奖励系统(类似于航空里程奖励)

Mysql 设计处理奖励到期的奖励系统(类似于航空里程奖励),mysql,reward-system,Mysql,Reward System,我正在尝试设计一个推荐奖励系统,根据推荐提供的业务量奖励推荐同事和朋友的用户 比如说。约翰指的是萨莉。Sally做了100笔生意,John获得了5%的奖励,用于他将来使用该服务 我差不多已经把那个部分搞定了。我正在努力解决的问题是,如果这些奖励在一段时间后未被使用,而不必每天手动更新数据库,如何使这些奖励过期 假设John在过去几年中获得了5个奖项: 1) 2013-01-01 $10 2) 2013-05-28 $10 3) 2014-01-03 $10 4) 2014-02-03 $

我正在尝试设计一个推荐奖励系统,根据推荐提供的业务量奖励推荐同事和朋友的用户

比如说。约翰指的是萨莉。Sally做了100笔生意,John获得了5%的奖励,用于他将来使用该服务

我差不多已经把那个部分搞定了。我正在努力解决的问题是,如果这些奖励在一段时间后未被使用,而不必每天手动更新数据库,如何使这些奖励过期

假设John在过去几年中获得了5个奖项:

1) 2013-01-01  $10
2) 2013-05-28  $10
3) 2014-01-03  $10
4) 2014-02-03  $10
5) 2014-05-28  $10
截至2015年5月28日,他未使用任何奖励。但奖励在1年后到期。2014年5月28日,他开具了一张50美元的发票。由于第一笔奖励应已到期,因此发票上只应支付剩余奖励的40美元

虽然我可以生成一个脚本,每天手动“终止”旧奖励,但我似乎记得有人解释了一种聪明的方法,可以选择借项并将其插入现有的奖励SQL表中,这样您所需要做的就是知道当前日期和旧里程会自动排除,并且所有内容都会保持平衡。不幸的是,经过一段时间的搜索,我找不到它

任何关于如何构建此结构的想法,以轻松适应奖励的使用,并考虑到未使用的奖励在一定时间后到期

编辑:以下是我想要的:

到目前为止,我是如何定义主要奖励表的:

+------------------+------------------+------+-----+---------+----------------+
| Field            | Type             | Null | Key | Default | Extra          |
+------------------+------------------+------+-----+---------+----------------+
| ref_id           | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| transaction_date | date             | NO   |     | NULL    |                |
| referrer_cust_id | int(10) unsigned | NO   |     | NULL    |                |
| referral_cust_id | int(10) unsigned | YES  |     | NULL    |                |
| inv_num          | int(10) unsigned | YES  |     | NULL    |                |
| pay_id           | int(10) unsigned | NO   |     | NULL    |                |
| ref_rate         | float            | NO   |     | NULL    |                |
| credit_amt       | float            | YES  |     | NULL    |                |
| used_amt         | float            | YES  |     | 0       |                |
+------------------+------------------+------+-----+---------+----------------+
referer\u cust\u id是赢得奖励的客户的id,referer\u cust\u id是他们推荐的客户的id


我基本上遵循了之前到期的航空里程链接的指导,该链接建议,当“索取”奖励时,只需将“未使用”和“未到期”的可用积分相加即可

考虑提供适当的DDL(和/或SQLFIDLE)和所需的结果集来添加@草莓所说的内容,如果您在您的问题中提供给我们一个表结构,这将为我们提供一些可以使用的内容。我还想补充一点,尝试一些东西也是一个好主意——在我看来,这是一个表上的
SUM()
,按用户和日期范围过滤?(对问题的尝试往往会吸引更多的选票,因为我们喜欢看到人们尝试,即使他们不能完全解决问题)