gpt4 book ai didi

MySQL - 我什么时候应该为相似的数据使用不同的表?

转载 作者:行者123 更新时间:2023-11-29 00:21:24 24 4
gpt4 key购买 nike

假设我正在逐场存储运动项目的信息:篮球、足球和棒球。数据基本符契约(Contract)一个模型:

|  play_id  |  play_type_id  |  play_description_id  |  player1_id  | player2_id  |  player3_id  |

这些是每项运动都会共享的基本栏目,但还会有更多栏目。有些列只会被某些运动使用——比如 player3_id 会被橄榄球用来表示谁进行了铲球,但篮球从来不会用到——不会有很多这些限制使用的列,但有一些。

每个游戏可能有 300 到 1000 行(最高估计值),因此该表最终可能会增长到数十亿。

我的问题是:

  1. 我是否应该从每项运动的不同表格开始,即使会有大约 90% 的列重叠?
  2. 我应该在什么时候考虑对表进行分区?我该怎么做?我正在考虑存档 2012 赛季的所有比赛(无论是运动专用表还是全包表)。

抱歉,如果我的帖子不够简洁。这都是一个假设的情况,我只是想弄清楚拥有一张大 table 的缺点是什么,显然性能是一个考虑因素,但在什么时候 table 的大小值得被划分。因为这不是一个真正的项目,所以很难确定拥有这样一张 table 的好处是什么。所以再次抱歉,如果这是一个愚蠢的问题。

编辑/附加问题:顺便说一句,我以前没有使用过 noSQL 数据库,但是对于这样的项目我应该考虑吗?可以说读取速度很高,返回时间至关重要,但它还需要能够运行复杂的查询,例如“在夜间比赛中,球员 A 在球员 B 之外击中了多少个地滚球, 2002 年至 2013 年间?”

最佳答案

我会把它分开放在多个表中。这样它更灵活。

如果您想进行一些统计,您将能够执行比只有一张表时更复杂的查询

它可能是这样的

播放器

ID | FIRSTNAME | LASTNAME | DATE_OF_BIRTH
-----------------------------------------
1 | michael | Jordan | 12.5.65

table 运动

ID | NAME       | DESCRIPTION
------------------------------------------
1 | Basketball | Best sport in the world
2 | Golf | Nice sport too

PLAYER_SPORT

SPORT_ID | PLAYER_ID | PLAYER_POSITION_ID
--------------------------------------------
1 | 1 | 1 /* Michael Jordan play Basketball */
2 | 1 | NULL /* Michael Jordan play also Golf */

表格PLAYER_POSITION

ID | POSITION    | DESCRIPTION       | SPORT_ID
-------------------------------------------
1 | Middlefield | Any description.. | 1

关于MySQL - 我什么时候应该为相似的数据使用不同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com