【发布时间】:2011-09-06 18:21:42
【问题描述】:
希望这些表格的目的是显而易见的,但以防万一,这里有一个简单的解释:我基本上希望存储比赛的结果(8 球池等),但也逐帧记录结果。我遇到的问题是,随着应用程序的增长,我打算允许不同的游戏类型,因此,每帧中使用的评分系统会有所不同。我认为下面的解决方案可以工作,但对我来说似乎不太正确,感谢所有建议。
有没有比使用下表更明智的方法:
# 玩家
- 身份证
- 姓名
- 昵称
# NormalMatches
- 身份证
- 玩家A
- 玩家B
# 正常帧数
- 身份证
- match_id
- playerAWon (BOOL)
# ScoringPoolMatches
- 身份证
- 玩家A
- 玩家B
# ScoringPoolFrames
- 身份证
- match_id
- playerA_cue_ball_potted
- playerB_cue_ball_potted
- playerA_balls_potted
- playerB_balls_potted
- playerA_balls_remaining
- playerB_balls_remaining
(编辑:修改 ScoringPoolFrame 表以更好地了解问题所在。)
非常感谢。
【问题讨论】:
-
你是对的。确实缺少一些东西。至少没有机制来记录分数的来源(什么变体)和/或以其他方式区分它。我怀疑缺少某种形式的“游戏”实体。
-
我会根据帧结果计算匹配结果。在正常比赛中,只有帧的获胜者很重要,所以我会循环查看谁赢得的最多(我在这里使用布尔值来节省空间 - 如果 playerA 获胜,则为 true,否则为 false)。问题是对于一场得分比赛,每个球员可能有不同的分数。即玩家 A 可能在一帧中获得 10 分,而玩家 B 可能获得 20 分。我必须如何计算比赛的获胜者有一个明显的不同。
-
想想模型和模型存储的东西——就是这样:) 例如,考虑这些问题:数据是如何放入的?模型是否准确地代表了输入的数据?模型中的数据是否包含以后查询所需的所有信息?模型是否包含可以删除的派生信息? (例如,模型是否正常化?)
-
@pst 在这种情况下,像我所做的那样将每个实体分开不是更好吗?我展示的方法本质上允许添加未来的变化。我只是认为查询可能会变得非常大(因为试图获取玩家玩过的所有游戏需要查询多个表)。另一方面,如果我只查询一个游戏类型,那么如果将数据分成不同的匹配类型,查询肯定会更快吗?
标签: mysql sqlite database-design relational-database entity-relationship