小游戏比赛数据库的设计
一些flash小游戏,可以提交成绩的,网友进行游戏提交积分,定时对名称前列的玩家进行奖励网站虚拟货币(例如每天中午12点,对0-12点的提交成绩结算一次;晚上12点对12-24点的成绩结算一次)
记录提交成绩的表结构
CREATE TABLE [dbo].[Score] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[UserId] [int] ,
[GameId] [int] ,
[Score] [numeric](20, 8) ,
[Date] [smalldatetime] ) ON [PRIMARY]
GO
结算是通过定时作业来执行的,每到12点,对Score表查询出这轮比赛的成绩列表,然后分配奖励
问题是分配奖励,会消耗比较长的时间,例如12:25分才执行完毕,
用户上午有提交一个成绩,然后在12:15分又提交了成绩,此成绩会覆盖上午提交的(上午这轮的奖励还在执行中,没有分配给这个用户)
怎样修改比较好,避免这种覆盖成绩的情况出现呢
------解决方案--------------------建一个标记列,对奖励的置一个标记,没奖励的置为另外一个标记
------解决方案--------------------好象还没说清楚
------解决方案--------------------用户的游戏成绩应该是个流水表啊,有历史记录的,为什么要覆盖原来数据?
应该是用户表,成绩表 1对N关系建表啊
那么作业就可以统计,而且只是个TOP排序查询,应该会很快的