mysql多表vs 1表

mysql多表vs 1表,mysql,multiple-tables,Mysql,Multiple Tables,我正在制作一个简单的记分系统,每个用户都可以拥有许多不同游戏的统计数据 但我不知道每个用户应该有自己的分数表,还是有一个包含所有分数的大表,其中有一个userid列 多个表: 表名:[用户id]\u分数 游戏id |高分|最后一分|平均分| 单表: user|id | game|id | high|u score | last|u score | average|u score肯定有一个表,其中userID是字段之一。这样处理多个表是非常困难的(而且是不必要的) 您可能希望至少有一个索引包含us

我正在制作一个简单的记分系统,每个用户都可以拥有许多不同游戏的统计数据 但我不知道每个用户应该有自己的分数表,还是有一个包含所有分数的大表,其中有一个userid列

多个表:

表名:[用户id]\u分数

游戏id |高分|最后一分|平均分|

单表:


user|id | game|id | high|u score | last|u score | average|u score

肯定有一个表,其中userID是字段之一。这样处理多个表是非常困难的(而且是不必要的)


您可能希望至少有一个索引包含userId字段,以便通过查询快速找到每个userId的记录。

一定要保留一个包含所有userId的表。通常,您不想使用任何涉及在表名中生成数据(userid)的解决方案(也有例外,但很少有例外)。

您可能需要:
用户表用户信息[],用户id
游戏桌游戏信息[],游戏id
保存用户id、游戏id、分数、插入日期的用户\u游戏\u联接表

这样,你就有了所有的数据,可以通过游戏、用户、游戏和用户、平均值等等获得高分


始终可扩展地构建。你永远不知道什么时候你需要改进你的代码,如果你不把它放在我们的权利开始的话,重做一个数据库是一个真正的PITA。

使用一个表和一个围绕
用户id
游戏id
的复合主键。您可能还想在
game\u id
周围创建一个补充索引,以便快速查找游戏的高分。(如果
user\u id
也不是标准的一部分,则复合键就不够用。)


使用“每个用户一张表”的方法可能会带来一些麻烦。

+1(我会提高投票率,但我在另一个问题上放弃了所有的提高投票率)从示例表中的一些字段判断,我认为您建议的复合键不起作用;在我看来,
game\u id
这里指的不是游戏事件(如周日的足球赛),而是游戏标题(如俄罗斯方块)。列名向我暗示,他将为每个用户存储一条游戏组合记录。但如果这不是真的,那么,是的,主键必须被更改。现在当我读到它时,它似乎也可以被更改+1无论如何!呵呵