【问题标题】:Database schema - normalization or grouped数据库模式 - 规范化或分组
【发布时间】: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 个)等组的优势,以及规范化方面,但它真的有必要/第一种方式真的很淘气吗?我真的看不到一个巨大的缺点(除了框架中的一些自动加入机制)这似乎更有意义 - 我的代码可以处理高尔夫球手的加入/合并等关系......

只是确保我没有遗漏一些明显的东西。

非常感谢

尼克

【问题讨论】:

    标签: database schema


    【解决方案1】:

    在我看来,第一种方式并不调皮,但不那么优雅,更容易改变。如果我必须选择,我会选择对 RDBMS 更“友好”的第二种方式。我想你也可以从round_group_golfers 中删除id,因为(round_group_id, golfer_id) 可以是主键。

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 2012-03-06
      • 2013-01-18
      • 1970-01-01
      • 2017-09-20
      • 2018-03-24
      • 1970-01-01
      • 2014-07-15
      相关资源
      最近更新 更多