2014-09-21 93 views
0

我设计一个数据库,记录和分析数据有关体育比赛如何记录分数在数据库

我的表之一将是“匹配”,这记录了一场比赛(团队IDS细节,位置,日期等)并包括最终得分。我还有另一张表格,记录了一场比赛中的特定比分(即得分和得分数),称为'比分'。我的问题是我是否应该在'比赛'中记录得分,或者如果我想知道得分,只需将“得分”中的所有得分加起来?有没有办法使得如果更新了“分数”行,它会重新计算“匹配”中的分数?

感谢

回答

0

有一种方式,它被称为“扳机”。您可以在scores表上设置触发器,因此无论何时插入新记录,scores表中的相应值都会更新。

开始的地方是关于触发器的文档,它是here

如果您的数据不是很大,那么您可以创建一个具有相同信息的视图。例如:

create view v_matchscores as 
    select m.*, sum(case s.team = m.teama then score else 0 end) as ascore, 
      sum(case when s.team = m.teamb then score else 0 end) as bscore 
    from matches m join 
     scores s 
     on m.matchid = s.matchid 
    group by m.matchid