高尔夫锦标赛分数的模式

时间:2017-04-10 13:32:05

标签: postgresql database-design

我为一家小型非营利组织工作,我们正在寻找一种快速计算得分的方法,并在我们的年度高尔夫锦标赛中为捐赠者提供一些统计数据。我认为这很容易,但我很难想出一个数据库模式来捕获分数。我无法弄清楚球员得分与球场上特定球洞的关系。

这是我到目前为止的图表。我是否会偏离此基础?

ERD

可以在此处找到架构:https://app.quickdatabasediagrams.com/#/schema/forneGJp40inm7rWlf2Sbg

1 个答案:

答案 0 :(得分:1)

也许让得分表成为玩家和洞之间的m:n连接表,以捕捉每个球员在每个洞的得分。这在下图中描述。要获得一轮的分数,您需要针对特定​​事件将所有孔的所有分数与特定的CourseId相加。

我还对它进行了非规范化处理,在Rounds表中添加了总分。这意味着您不需要每次都(或)获得每个玩家轮次的个人得分()。这只是对性能优化的建议。

enter image description here

来源:https://app.quickdatabasediagrams.com/#/schema/x_amshIckkeGp8KAKEAmLQ

如果可以在同一场比赛中两次打同一场比赛(例如,第一场和最后一场比赛可能在同一场比赛中),那么你应该提供相应的赛道。

我还有另外两条建议:

  1. 我认为事件和场地之间的关系是错误的。
  2. 我建议将玩家分成两个表。一个代表人类,另一个代表人类参与这一轮。也许"人"和#34;参赛者"会是个好名字。