database - 数据库模式 - 规范化或分组
问题描述
我有一个包含一组玩家的快速数据库模式,我的问题是如何最好地表示这一点。该数据库用于高尔夫预测网站。每场锦标赛都有一个三人组的高尔夫球手名单,这些三人组在一系列 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
为了完成上下文简介,用户可以预测哪些 gofler 将赢得该组,因此:
user_prediction
---------------
id:
user_id:
round_group_id:
golfer_id:
这显然适用于两种模式选择。我知道允许我扩展到 4 个(甚至 2 个)等组的优势,以及规范化方面,但它真的有必要/第一种方式真的很淘气吗?我真的看不到一个巨大的缺点(除了框架中的一些自动加入机制)这似乎更有意义 - 我的代码可以处理高尔夫球手的加入/合并等关系......
只是确保我没有在这里遗漏一些明显的东西。
非常感谢
缺口
解决方案
在我看来,第一种方式并不调皮,但不那么优雅,更容易改变。如果我必须选择,我会选择对 RDBMS 更“友好”的第二种方式。我想您也可以从中删除id
,round_group_golfers
因为(round_group_id, golfer_id)
可以是主键。
推荐阅读
- yii2 - Yii2 UrlManager 字符串规则
- html - Bootstrap 4在单元格中右对齐
- django - 我无法保存与用户对象相关的对象
- c - 如何在 GCC 中获得无符号整数溢出而不是环绕的警告?
- wcf - WCF 将消息编码从 Utf-16 更改为 Utf-8
- docker - Swagger-UI (Docker) - “试用”时不维护基本路径
- rest - 为 Rest Api 调用问题构建参数
- r - 到图例文本ggplot的距离
- cakephp - CakePHP 3.6.x CSRF 令牌不匹配
- sql - 在 SQL 中选择 SEQUENCE:FROM 关键字未在预期的位置找到