gpt4 book ai didi

mysql - SQL为每个用户存储大量数据

转载 作者:行者123 更新时间:2023-11-29 01:16:21 24 4
gpt4 key购买 nike

我正在开发一个网站,人们可以在其中玩小游戏。在每场比赛结束时,用户将获得一个分数,我希望将其存储在带有时间戳的 MySQL 数据库中。这将使我能够以更好的方式进一步展示数据。

我使用 Facebook 登录系统,所以我目前有一个包含用户 ID、姓名和 Facebook ID 的表。目前我有一个看起来像这样的表:

ID------Name------UID
1 Bob 123123
2 Marley 23134

然后,对于每个用户,我将需要这样的东西:

Game1Time    Game1Score   Game2Time   Game2Score etc....
3292 400 10 7824
129 32 101 231

我看过其他一些相关的帖子,似乎人们普遍认为为每个用户都有一个表是个坏主意,但对我来说,这似乎是最简单的方法。

我也可以这样做,将所有数据存储在一个表中:

ID------Name------UID-------Game1Time-----Game1Score----Game2Time-----Game2Score etc...
1 Bob 123123 3291, 129 400, 32 10, 101 7824, 231
2 Marley 23134

但是当人们玩很多同一个游戏时,这似乎会引起问题。

我觉得我缺少一些聪明的方法来做这件事,所以如果你有任何建议,请告诉我。我是 SQL 的新手,所以我可能遗漏了一些愚蠢的东西

最佳答案

我会在这里推荐一些规范化。

您的用户表没问题。创建一个游戏表来存储有关游戏的信息。创建一个表,其中包含有关用户、游戏和结果的信息。类似以下内容:

create table users (
id int primary key,
name varchar(100),
uid int
);

create table games (
id int primary key,
name varchar(100)
);

create table users_games (
id int primary key,
userid int,
gameid int,
startdate datetime,
enddate datetime,
score bigint,
constraint fk_users_games_userid foreign key (userid) references users(id),
constraint fk_users_games_gameid foreign key (gameid) references games(id)
);

使用开始日期和结束日期,您可以计算用户在游戏中的时间。您可以在一天中的给定时间运行有关不同用户的统计信息,并根据 users_games 表生成更多报告。

您可以根据需要在 users_games 上创建索引。那张 table 可以变大,没问题。如果您愿意,可以使用按用户 ID 进行分区,或者系统地归档数据,因为数据太陈旧而无法定期使用。

示例模式在这里:http://sqlfiddle.com/#!9/315a5 .

关于mysql - SQL为每个用户存储大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com