我正在开发一个数据库来存储一个体育联盟的统计数据。我想展示几张桌子:
的每一场比赛中的位置。
我有一张火柴桌:
有了这张表,我就可以根据每支球队所打的比赛来计算每支球队的总分。但是每次我想要显示联赛表时,我都要计算分数。
此外,我还有一个问题要计算,在过去的10次比赛中,球队在哪个位置进行分类,因为我必须进行10次查询。
在数据库表中存储每场比赛的联赛表是另一种方法,但是每次我改变一场已经打过的比赛,我必须重新计算每一场比赛。
是否有更好的方法来解决这个问题?
谢谢
发布于 2011-03-07 10:43:17
问题是,(例如)队伍在过去10个固定装置中的位置或级别,是派生的数据。因此,将其存储在表中是一种复制,而且完全没有必要,它会在没有任何异常的情况下创建更新异常。当然,与往常一样,无论何时创建副本,您都会遇到相应的问题,即保持它们的最新和相互同步,而这些问题的解决方案是不合理的。因此,首先不要创建重复项,第二位不会有结果,第三位不会有编码的半解决方案。
只需为从实际源表派生的所有结果集(您认为是“表”)创建视图即可。这包括任何排名或位置的列表;在任何情况下(比赛、冠军、联盟、国家)。
在SQL中很容易获得排名或职位。但是,代码取决于您所具有的SQL (或非SQL)的哪种风格。有些味道不能处理子查询,而是提供了RANK()函数。如果您指定了所具有的SQL,则我可以提供详细信息。
发布于 2011-03-01 07:21:17
我想游戏每天或每周都会发生一次。
如果是,则可以在更新匹配后运行触发器或批处理操作,并将这些结果存储在汇总表中。
这样,每次比赛只进行一次计算。
https://stackoverflow.com/questions/5151449
复制相似问题