我有一个相对简单的数据库,其中包含 Player
表(单个字段 username
)和 Game
(单个字段 date
)一个。作为Player
可参加多个Game
和一个 Game
可多人播放Player
,我用many-to-many
关系其中额外的列 score
添加到连接表中以存储 Player
的分数在 Game
.
在我的 Java 代码中,我显然有一个 Player
带字段的类 username
和一个 Game
一个带字段date
。但是,我不知道是否应该为连接表创建第三个类,或者是否应该添加 List<Player>
Game
内的属性类以及 List<Integer>
的列表存储分数。
编辑:示例
Player
表:
player_id player_name
1 Bob
2 Lea
3 John
Game
表:
game_id game_date
1 20/08/2017
2 19/08/2017
Joined
表:
game_id player_id score
1 1 50
1 2 35
2 1 50
2 3 29
最佳答案
我不会为 joined
创建单独的类 table 。我会选择 Map<Player, Integer>
在 Game
类保存游戏中的玩家及其各自的分数。
像这样(简单,没有错误检查):
class Game {
Map<Player, Integer> playerScores = new HashMap<>();
void addPlayer(Player p) {
playerScores.put(p, 0);
}
void incrementScore(Player p, int increment) {
int newScore = getScore(p) + increment;
playerScores.put(p, newScore);
}
int getScore(Player p) {
return playerScores.get(p);
}
// etc...
}
关于数据库架构中的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782406/