【发布时间】:2021-03-05 17:33:25
【问题描述】:
我有一个包含一组玩家的快速数据库架构,我的问题是如何最好地表示这一点。该数据库用于高尔夫预测网站。每场比赛都有一个三人组的高尔夫球手名单,这些三人组在一系列 3-4 轮中变化。然后,用户可以预测哪些高尔夫球手将赢得三连冠。
例如,我有一个锦标赛 A,其中有 3 个回合。
第一轮有一组:
Group 1: Round 1: Golfer A, Golfer B, and Golfer C
Group 2: Round 1: Golfer D, Golfer E, Golfer F
Group 3: Round 1: Golfer G, Golfer H, Golfer I
....
然后下一轮这些会改变:
Group 1: Round 2: Golfer A, Golfer Y, and Golfer D
Group 2: Round 2: Golfer H, Golfer E, Golfer I
Group 3: Round 2: Golfer C, Golfer Z, Golfer R
...
等等。我目前存储的方式是:
round_groups
------------
id:
competition_id:
round_number:
golfer_1_id:
golfer_2_id:
golfer 3_id:
但我是否应该将其规范化为:
round_groups
------------
id:
competition_id:
round_number:
round_group_golfers
-------------------
id:
round_group_id
golfer_id
为了完成背景简介,用户可以预测哪些选手将赢得该组,因此:
user_prediction
---------------
id:
user_id:
round_group_id:
golfer_id:
这显然适用于两种模式选择。我知道允许我扩展到 4 个(甚至 2 个)等组的优势,以及规范化方面,但它真的有必要/第一种方式真的很淘气吗?我真的看不到一个巨大的缺点(除了框架中的一些自动加入机制)这似乎更有意义 - 我的代码可以处理高尔夫球手的加入/合并等关系......
只是确保我没有遗漏一些明显的东西。
非常感谢
尼克
【问题讨论】: