gpt4 book ai didi

sql - 一个属性可以指定一个表而不是另一个表吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:43 25 4
gpt4 key购买 nike

我正在创建一个体育统计数据库。有了它,我想为许多类型的运动编目游戏/比赛统计数据。例如,该数据库可以告诉您卡罗莱纳黑豹队在 09-10 赛季(橄榄球)的达阵次数,或者迈阿密热火队在上一场比赛(篮球)的罚球次数。

我在设计一个名为 Matches 的更基本的表时遇到了问题。 Matches 表包含以下列:

  • ID(PK match_id)
  • 比赛日期 (play_date)
  • 在表 Performances 中引用团队表现的 ID(FK team_1_performance_idteam_2_performance_id)。

性能表包含:

  • ID(PK perf_id)
  • 团队 ID(FK team_id)
  • 最重要的是,所有其他统计数据,例如:击球次数 (*)
  • 平均每次冲球码数 (*)
  • 三分球命中率 (*)

(*)问题是,如何使性能表与相应的运动相关?例如,棒球比赛有罢工,但足球和曲棍球没有(我能想到的任何其他运动也没有)。我不希望我的 Performance 表有一个罢工列,因为它只与部分记录相关。

或者我呢?也许我的设计应该完全不同?你会怎么做?

现在,我不知道这是否可行,但我的一个想法是在 Matches 中包含某种性能表 ID 列,它引用不同的性能表。这样当我查询一场比赛的表现时,它会查看特定的表格。这就是这个问题的标题(Can an attribute designate one table over another?)的来源。想象一下“SELECT team_1_performance.strikes FROM Matches INNER JOIN appropriate_performance_table AS team_1_performance WHERE Matches.performance_table_id = 'Baseball'”如果可能的话,我如何指定 appropriate_performance_table?

我的另一个想法是为所有运动创建比赛表,如 Rugby_Matches 或 Football_Matches,然后为这些运动创建各自的性能表,如 Rugby_Perfomances 或 Football_Performances。这看起来像是很多表,代表了一些相似的东西。

如果可以,请尽量让您的回答针对 MySQL。

谢谢!

最佳答案

创建向下的数据,而不是交叉。

所以你会有

性能表包含:

  • ID(PK perf_id)
  • 团队 ID(FK team_id)
  • 性能统计类型
  • 性能统计值

或者类似的东西。

然后您还必须创建一个规则表,它将特定的Performance Stat Types链接到特定的Sport Types

这样一来,您还可以轻松添加新的性能统计类型,而不会严重影响您的数据库架构。

然后您还可以实现显示顺序,如果您愿意,甚至可以显示分组。

关于sql - 一个属性可以指定一个表而不是另一个表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940327/

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