首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >体育联赛数据库设计

体育联赛数据库设计
EN

Stack Overflow用户
提问于 2011-03-01 07:05:39
回答 2查看 4K关注 0票数 0

我正在开发一个数据库来存储一个体育联盟的统计数据。我想展示几张桌子:

  • 联赛表,它表示球队在当前和以前的
  • 表中的位置,该表显示了一支球队在锦标赛

的每一场比赛中的位置。

我有一张火柴桌:

  • Matches (IdMatch,IdTeam1,IdTeam2,GoalsTeam1,GoalsTeam2)

有了这张表,我就可以根据每支球队所打的比赛来计算每支球队的总分。但是每次我想要显示联赛表时,我都要计算分数。

此外,我还有一个问题要计算,在过去的10次比赛中,球队在哪个位置进行分类,因为我必须进行10次查询。

在数据库表中存储每场比赛的联赛表是另一种方法,但是每次我改变一场已经打过的比赛,我必须重新计算每一场比赛。

是否有更好的方法来解决这个问题?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-03-07 10:43:17

问题是,(例如)队伍在过去10个固定装置中的位置或级别,是派生的数据。因此,将其存储在表中是一种复制,而且完全没有必要,它会在没有任何异常的情况下创建更新异常。当然,与往常一样,无论何时创建副本,您都会遇到相应的问题,即保持它们的最新和相互同步,而这些问题的解决方案是不合理的。因此,首先不要创建重复项,第二位不会有结果,第三位不会有编码的半解决方案。

只需为从实际源表派生的所有结果集(您认为是“表”)创建视图即可。这包括任何排名或位置的列表;在任何情况下(比赛、冠军、联盟、国家)。

在SQL中很容易获得排名或职位。但是,代码取决于您所具有的SQL (或非SQL)的哪种风格。有些味道不能处理子查询,而是提供了RANK()函数。如果您指定了所具有的SQL,则我可以提供详细信息。

票数 4
EN

Stack Overflow用户

发布于 2011-03-01 07:21:17

我想游戏每天或每周都会发生一次。

如果是,则可以在更新匹配后运行触发器或批处理操作,并将这些结果存储在汇总表中。

这样,每次比赛只进行一次计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5151449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档