首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计跟踪运动员位置的数据库

如何设计跟踪运动员位置的数据库
EN

Database Administration用户
提问于 2014-07-31 01:57:08
回答 1查看 1.3K关注 0票数 1

我正在为一个体育(终极)跟踪项目建立一个数据库。基本上,程序的“原始数据”将是所有球员在同一时间内的位置和ID。但在我看来,我目前的做法似乎过于复杂。

主表games在每个团队中都有7-10个玩家in的列,与players表中包含的in匹配。它还为每个球员在球场上的位置设置了一列。但是这会创建一个列超过28-40列的表!

我对设计自己的数据库相当陌生,所以我可能缺少一些基本的东西,但是有更简单的方法吗?

(对于我想要处理的数据,我确实需要在每个时间戳上记录每个球员的位置)

澄清:“位置”是指球场上的物理位置,而不是球员位置的名称。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-07-31 09:00:18

听起来你的设计不太对。你可能需要这样(我想这是为了足球?):

TeamName TeamID,TeamName.

玩家桌- TeamID,PlayerName,PlayerPreferredPosition.

位置表- PositionID,PositionName,PositionType (后/中/向前/目标保持等)

游戏表- GameID,GameLocation,HomeTeam (FK队),AwayTeam (FK队),MatchStartTime

GamePlayPosition - GameID (FK游戏),PlayerID (FK Player),PositionID (FK位置),TimeStart,TimeEnd

这样你就可以知道球员在什么位置比赛,在任何时候的比赛。

编辑:如果你想要使用一个网格,并准确地指出玩家在那里花费的时间,我建议进行以下更改,但上面的内容仍然是正确的。

在GamePlayPosition表中添加一个代理键-- GamePlayPositionID,将其用作主键。然后添加另一张表:

ExactPlayPosition - GamePlayPositionID (FK),XPosition (小int),YPosition (小int),GameTime (日期时间?)可能是一个整数,表示游戏时间中经过的秒,如果使用游戏时间进行日期时间计算,则更容易比较游戏的相对位置。

您之所以有这样的另一个表,是因为它会有大量的数据,您希望它在行宽方面尽可能小。您将添加大约3600 (比赛中的秒)乘以10 (比赛中的#球员)= 36k记录,如果你不包括休息。如果追踪两队球员,比如说每场比赛有75k记录,比如说超过50场比赛.你知道这个主意。

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

https://dba.stackexchange.com/questions/72809

复制
相关文章

相似问题

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