【问题标题】:how to record the score in a database如何在数据库中记录分数
【发布时间】:2014-09-21 21:54:34
【问题描述】:
我正在设计一个数据库来记录和分析有关体育比赛的数据
我的一个表将是“比赛”,它记录了比赛的详细信息(球队 ID、地点、日期等)并包括最终得分。我还有另一个表格,它记录了比赛中的特定得分(即谁得分和得分),称为“得分”。我的问题是我是否应该在“比赛”中记录分数,或者,如果我想知道分数,只需将“分数”中的所有分数相加?有没有办法,如果“分数”行被更新,那么它将重新计算“匹配”中的分数?
谢谢
【问题讨论】:
标签:
mysql
database-design
【解决方案1】:
有一种方法,它被称为“触发器”。您可以在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