我为一家小型非营利组织工作,我们正在寻找一种快速计算得分的方法,并在我们的年度高尔夫锦标赛中为捐赠者提供一些统计数据。我认为这很容易,但我很难想出一个数据库模式来捕获分数。我无法弄清楚球员得分与球场上特定球洞的关系。
这是我到目前为止的图表。我是否会偏离此基础?
可以在此处找到架构:https://app.quickdatabasediagrams.com/#/schema/forneGJp40inm7rWlf2Sbg
答案 0 :(得分:1)
也许让得分表成为玩家和洞之间的m:n连接表,以捕捉每个球员在每个洞的得分。这在下图中描述。要获得一轮的分数,您需要针对特定事件将所有孔的所有分数与特定的CourseId相加。
我还对它进行了非规范化处理,在Rounds表中添加了总分。这意味着您不需要每次都(或)获得每个玩家轮次的个人得分()。这只是对性能优化的建议。
来源:https://app.quickdatabasediagrams.com/#/schema/x_amshIckkeGp8KAKEAmLQ
如果可以在同一场比赛中两次打同一场比赛(例如,第一场和最后一场比赛可能在同一场比赛中),那么你应该提供相应的赛道。
我还有另外两条建议: