运动评分系统的数据库设计

时间:2016-08-20 16:03:46

标签: mysql database database-design

我正在为我的朋友开发数据库评分系统。我有游戏的表和第二个表运动名称(footbal,tenis,floorball)。我想存储几十个游戏,但我不知道如何根据特定的分数需求设计数据库。

例如:
足球比分 - 1:2,2:2(上半场和下半场)
Tenis集 - 6:4,7:6
Floorbal - 1:0,3:0,3:2(比赛的第1,第2和第3部分)

我需要将此分数链接到游戏桌,但我需要特定的表格列来存储每个游戏的分数。

我想:

  1. 多个表和外键,但这在mysql中是不可能的。
  2. 然后我考虑将数据存储在一行json中,然后根据运动特别解析它,但这可能不是一个很好的解决方案。
  3. 从我的角度来看,唯一的问题是:

    如何根据运动类型创建以不同格式存储分数的表格?

    感谢您的帮助

2 个答案:

答案 0 :(得分:0)

E.g:

vec <- c("5T", "14S", "1A", "12N")

gtools::mixedsort(vec)
# [1] "1A"  "5T"  "12N" "14S"

答案 1 :(得分:0)

你提到MySQL,所以你似乎想要开发一个关系数据库。

第一步是定义关系。根据你的例子。

  1. 游戏有一项运动。
  2. 一项运动有零个或多个游戏。
  3. 游戏有一个或多个句点分数。
  4. 一段时间得分有一场比赛。
  5. 基于这些关系,我们可以定义3个表。

    Sport
    -----
    Sport ID
    Sport name
    ...
    
    Game
    ----
    Game ID
    Sport ID
    Game name
    
    PeriodScore
    -----------
    PeriodScore ID
    Game ID
    Period
    Score
    

    主要ID字段称为盲密钥。它们是自动递增整数。他们唯一的目的是将游戏与运动联系在一起,并且比赛时期与游戏相关。否则,它们毫无意义。主ID字段是其各自表的主要(聚类)键。

    游戏桌中的运动ID是外键。这个关键点指向Sport表,因此您可以获得这项运动的名称。如果你想要一个特定运动的游戏列表,你可以在(运动ID,游戏ID)上创建一个独特的索引。

    PeriodScore表中的游戏ID是另一个外键。您必须在(游戏ID,PeriodScore ID)上创建唯一索引,以便您可以按正确顺序检索期间分数。

    如果要创建关系数据库,首先要定义关系,然后执行normalization的过程。