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