我想知道我的数据库/表设计的更好方法是什么。如图所示,我有参加比赛的球员。一个玩家打多场比赛,一场比赛被多人打,所以是n:m的关系。这可能会导致 thress 表 player(id, firstname), player_to_match(playerid, matchid), match(id)。 在我的例子中,玩家的数量永远不会改变,它总是两个 (n=2)。以下哪种设计更好?
(1)
player_to_match(matchid, playerid)
每个 map 有两行和一个单元格冗余(matchid)
(2)
匹配(匹配ID,玩家ID1,玩家ID2)
正如我所说,每场比赛的玩家人数永远不会改变
谢谢
卢卡斯
[具有两个实体的 ERM 图:玩家(ID,名字),比赛(ID),n:m 从玩家到比赛的关联,标题为“plays”] http://fs1.directupload.net/images/141210/rmeuutpg.png
最佳答案
我会坚持使用选项 (1)。这将使回答诸如“球员 X 打了多少场比赛?”之类的简单问题变得更加容易。使用选项 (2),您必须查询两列的值 X 才能回答该问题,这开始变得难看。
关于国际象棋中的数据库设计和规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412026/