如何在数据库中记录分数

时间:2014-09-21 13:50:29

标签: mysql database-design

我正在设计一个数据库来记录和分析有关体育游戏的数据

我的一张桌子将是'匹配'它记录有关比赛的详细信息(球队ID,位置,日期等)并包括最终得分。我还有另一张桌子,记录比赛中的特定分数(即得分和分数),称为“分数”。我的问题是我是否应该在“比赛”中记录得分。或者,如果我想知道分数,只需将所有分数加起来即可得分。有没有一种方法,如果一个'得分'行已更新,然后将重新计算“匹配”中的分数?

由于

1 个答案:

答案 0 :(得分: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