首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建关系型数据库?数据

如何构建关系型数据库?数据
EN

Stack Overflow用户
提问于 2010-01-14 01:34:25
回答 2查看 240关注 0票数 1

我需要跟踪得分,以及他们是谁得分。以前,我使用的是一个平面文件数据库(那是一堆乱七八糟的),如下所示:

代码语言:javascript
复制
03611100025
00001000000
21011000000
00003000000
00021000000
10001050000
00001402000
00001000100
00001013050
00001000100
00001000000

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

我觉得我一定是错过了一些其他更简单的方法来做这件事。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2010-01-14 01:35:43

有两个表,Team和Game,其中Team有一个团队名称和一个团队ID,而game有两个团队ID (team 1和team 2)和游戏的得分。然后,在Game和Team表之间有外键(为了完整性)。这将通过一个最小的模式和一个非常简单的结构来反映谁玩了谁,比分是多少。

代码语言:javascript
复制
Team
|-------------------------|
| Primary (int)| id       |
|         (chr)| name     |
|-------------------------|

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

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

代码语言:javascript
复制
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 |
|---------------------------------|

这个数据表明,1队(蓝魔)与2队(红雀队)的比分是7比8,其余的数据是相似的。

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

因此,使用此模式,您可以使用如下查询获得特定团队的得分

代码语言:javascript
复制
SELECT * FROM Game g 
 INNER JOIN Team t on t.team1 = g.id

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

票数 5
EN

Stack Overflow用户

发布于 2010-01-14 21:28:06

第一个回答是正确的。如果您将数据组织到关系中,并为每个关系创建一个表,则处理数据将容易得多。你需要在关系数据库设计方面做的背景知识将教你更多关于这方面的知识。

如果您使用响应中的团队和游戏结构,您仍然可以将该结构转换为您在问题中想象的那种结构。这个过程被称为“交叉表”或“旋转”,它在教程中有很好的记录。

虽然从关系结构转移到交叉表结构很容易,但要从另一种结构转移到另一种结构却非常困难。针对交叉表数据编写其他查询也很困难。一个例子可能是找出每支球队的最高分。如果你把你的数据放在数据库里,迟早你会想要用它做不止一件事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2058876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档