我应该为这些数据使用单独的表吗?

时间:2014-02-23 05:17:26

标签: mysql database

这是一个项目的后端,我一直致力于乐趣,存储用户的拳击比赛记分卡。我是否应该为每个拳击比赛(约25列)设置一个单独的表格,或者我应该将每个拳击比赛存储在同一个表格中并添加一个列,表示该行适合哪个拳击比赛?

做出这个决定时,有哪些好的标准可以练习?我将通过平均给定比赛的所有轮次并返回任何给定轮次的所有用户的平均分数来访问该表。这种类型的访问使我认为每个匹配的单独表格是可取的,因为这样我在尝试平均某个匹配的分数时不会搜索任何不需要的匹配。

2 个答案:

答案 0 :(得分:2)

标准方法是识别模型中的每个“实体”。

实体是

的人,地点,事物,概念或事件
  1. 可以唯一标识
  2. 我们可以存储有关和
  3. 的信息
  4. 对企业或企业非常重要
  5. 实体作为表实现,表中的每一行代表实体的单个实例。

    在示例中,听起来像“拳击比赛”是一个实体。下一步是确定唯一标识符是什么,无论是单列还是列组合,并计划在其上定义UNIQUE INDEX。

    除了自然键之外,我们通常还会引入代理id列,该列用作每个实体表的主键。 (我会注意到,关于代理密钥是否可取是有两种思路:有些人选择使用自然密钥作为主要密钥并且后来被该决定烧毁,然后有那些避风港他们决定使用自然键作为主键,但却被烧毁了。)

    理想的主键具有以下特征:

    1. simple(单个属性是简单的本机数据类型,例如int)
    2. 唯一(一个值只标识一行,没有两行具有相同的值)
    3. 匿名(没有可见或隐藏的信息)
    4. 不可变(一旦分配值,就不会更改)

答案 1 :(得分:1)

您不应该将每个匹配放在自己的表中。这意味着您需要一个未知数量的表,这表明您没有正确建模问题。