gpt4 book ai didi

mysql - 如何构建关系数据库?数据

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

我需要跟踪得分以及他们是针对谁得分的。以前,我使用如下所示的平面文件数据库(那是一团糟)来完成此操作:

03611100025
00001000000
21011000000
00003000000
00021000000
10001050000
00001402000
00001000100
00001013050
00001000100
00001000000

每个团队都有一行和一列,我想整个事情变成了某种图表。现在我也可以在 MySQL 上做到这一点,但它会变得臃肿并且会迫使每一行都有荒谬的列数。

我觉得我一定是错过了一些其他更简单的方法来做到这一点。有人可以帮忙吗?

最佳答案

有 2 个表,Team 和 Game,其中 Team 有一个队名和一个队 ID,而 game 有两个队 ID(队 1 和队 2)和比赛的比分。然后,您在 Game 和 Team 表之间有外键(为了完整性)。这将以最小的模式和非常简单的结构反射(reflect)出谁演奏了谁以及乐谱是什么。

Team
|-------------------------|
| Primary (int)| id |
| (chr)| name |
|-------------------------|

Game
|-------------------------|
| Primary (int)| team1 |
| Primary (int)| team2 |
| (int)| score1 |
| (int)| score2 |
|-------------------------|

因此,一些示例数据如下所示:

Team
|------------------|
| id | name |
|------------------|
| 1 | Blue Devils |
| 2 | Cardinals |
| 3 | Fish |
| 4 | Lemmings |
|------------------|

Game
|---------------------------------|
| team1 | team2 | score1 | score2 |
|---------------------------------|
| 1 | 2 | 7 | 8 |
| 1 | 4 | 2 | 25 |
| 2 | 3 | 8 | 2 |
| 3 | 4 | 17 | 18 |
|---------------------------------|

此数据表明 team 1 (Blue Devils) 与 team 2 (Cardinals) 的比分是 7 比 8。其余数据类似。

如果您不需要跟踪团队名称,则可以将该字段省略,但这通常是有用的信息。

因此,使用此架构,您可以通过如下查询获得特定团队的分数

SELECT * FROM Game g 
INNER JOIN Team t on t.team1 = g.id

如果需要,您还可以添加其他信息,例如比赛发生的时间(日期),以及任何其他信息,例如有关比赛或球队的其他统计数据。

关于mysql - 如何构建关系数据库?数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058876/

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