需要帮助创建数据库的结构

时间:2014-01-23 12:36:26

标签: mysql sql database database-design data-structures

我正在开发一个处理统计数据的网站,用于体育比赛。 I.E我的网站将让用户快速查找哪个(或多个)玩家在游戏/赛季中获得的得分最多,或者1个玩家的记录是针对其他玩家或团队的。

之前游戏的我的数据显示如下 enter image description here

当您点击一轮时。示例round4 game1(飓风与十字军)将显示该游戏的统计数据以及该游戏(两个团队)的所有玩家统计数据。因此:

enter image description here

enter image description here

此外,游戏统计信息也会显示如下: enter image description here

现在我尝试将其上传到数据库,以便用户可以:

  1. 将1名球员记录与其他球员记录进行比较
  2. 比较1个球员与特定球队的比赛记录
  3. 将球队记录与其他球队记录进行比较
  4. 显示最佳和最差玩家和团队统计数据
  5. 这个问题让我忙了3天,我现在正处于这个阶段,我开始把头发拉出来。我只是无法获得将表格链接在一起的有效方法。

    我应该为每个匹配创建一个表吗?或者我应该为所有比赛创建1个表,为所有玩家创建1个表吗?如果是这样,我作为主键使用什么?

    我知道这是一个很长的问题所以,如果有人花时间仔细阅读这个谢谢你,如果有人能指出我正确的方向或只是给我一个意见,那将非常感激。我刚刚完全被这个问题困住了。

3 个答案:

答案 0 :(得分:1)

以最低适用级别捕获统计信息。您希望将数据库规范化的原则应用于初始设计。这为您提供了最直接的数据捕获方案,同时为您提供了最大的报告灵活性。

一旦您确切地确定了所需的报告并确定了您可能面临的性能挑战,那么您可以应用非规范化来创建报告数据仓库表。

考虑以下逻辑数据模型:

ERD

答案 1 :(得分:0)

如果希望教学如何钓鱼....

写出您认为自己拥有的实体以及他们拥有的属性。属性可能是另一个实体。例如,Team实体具有Name属性和多个Player属性。但是Player也是一个具有Name属性的实体,可能还有一些Statistics属性。

这将为您提供表(实体)及其列(属性)的起点。如果属性也是实体,则从属性到实体绘制一条线:这些是您的关系。然后获取将数据放入第三范式(3NF)的示例,并按照示例将步骤应用到图表中。完成后,您将获得良好的数据库设计。

干杯 -

答案 2 :(得分:0)

您应该将所有“游戏”表加入一个表中。只需添加所需的额外信息:

列:

  • gameId - int - 游戏ID,表名的前部分
  • 得分A - 第一队得分
  • 得分B - 第二队得分
  • teamAId - 第一个团队的ID,列的前名称
  • teamBId - 第二个团队的ID,以前的列名

这也可以让您一次性对所有游戏进行更有趣的搜索和统计。更好的是,您拥有的灵活结构可用于未来可能出现的任何数量的游戏和团队。