【问题标题】:Saving points history in database在数据库中保存点历史记录
【发布时间】:2013-02-22 21:23:17
【问题描述】:

我有一个会员网站,每个用户每天都可以对足球比赛进行多次投注。这个想法是总结每一天的点,计算它们并将它们显示在图表中(使用谷歌图表API)。到目前为止一切都很好。每天都会为每个用户计算新积分,并与过去几天的积分一起显示在图表上。这样用户就可以在曲线或图形中看到他过去的结果。我唯一的猜测是制作一个带有 ID - 用户名 - 点数 - 回合的表格。我不希望我的数据库因我的表和查询构造不佳而受到影响。

所以我的问题是:我应该如何在我的数据库中进行设置?

这是我现在的桌子:


表 -> 成员
ID
名字

用户名
密码

(我虚构的桌子)。

表 -> MEMBERS_POINTS
ID
用户名
积分
回合


所以我设置了一个查询,从所需的回合中获取用户积分。这是好方法吗?这会减慢我的数据库速度吗?每个用户将玩 30 轮,如果有几个用户,表格可能会包含数千行。

找一个帖子here,但我没有任何答案,我有一些不同的想法。

编辑

这是一个会员网站,每个注册用户都必须一次下所有 60 个赌注,这 60 个赌注在 30 天内分配(我称之为回合)。每轮包括 2 个投注,最多 6 分。总分将与领导者一起显示,并与每天的获胜者一起显示。每个用户都应该能够以图表的形式查看他或她过去的分数。

1 位用户 = 60 次投注 = 30 天(回合。总积分和每天的积分记录。

【问题讨论】:

  • 我肯定有一个日期时间字段,表示您的 members_point 表中的点和回合发生时间,因此您可以按天、按周、按月等查询...
  • 回合数与天数有何关系?用户可以有多个 30 轮的“游戏”吗?您确实需要解释要表示的单个离散对象以及它们之间的关系。我想您还需要每轮投注/行动的表格吗?
  • 尝试用现实世界的术语来解释(例如“应用程序将有任意数量的成员,每个成员可以有很多游戏,每个游戏可以有很多轮,每轮可以有 X 个投注/行动,每轮需要 1 天。我想在每场比赛、每轮和/或每天为每个用户汇总积分”)您的基本起点应该是您拥有的任何单个项目(用户、需要以一对多或多对多的方式与其他项目相关的游戏,回合)应该有自己的表格。

标签: mysql database database-design


【解决方案1】:

这里发生了几件事。

首先,您似乎很关心性能。从性能的角度来看,您提到的设计应该没问题(尽管见下文) - 数据库非常擅长处理大量数据。在 MySQL 上,这样的设计可以增长到数百万条记录,而不会出现任何真正的性能问题。

不过,其次是设计问题。你真的应该read up 进行数据库设计 - 在一个问题中回答太大 - 但是你的 member_points 表应该链接到 member.id 列(假设这是主键),而不是用户名 - 如果用户更改了他们的用户名,你必须更新他们所有的 member_points 记录。

【讨论】:

  • 谢谢!关于 id 列和设计结构的大量输入。
猜你喜欢
  • 2012-02-10
  • 2023-03-11
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多