国际象棋中的数据库设计和规范化

标签 database database-design entity-relationship normalization database-normalization

我想知道我的数据库/表设计的更好方法是什么。如图所示,我有参加比赛的球员。一个玩家打多场比赛,一场比赛被多人打,所以是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/

相关文章:

SQL 条件关系

mysql - 外键在双向关系中的作用

Mysql存储过程太慢

mysql - 'unique' 列字段是否暗示了 MySQL 的索引,如果是,为什么?

python - 通过 python 将空白单元格保持为空白而不是无

java - 不传参数删除db中包含父子关系的多个表的所有数据【Spring boot】

数据库约束——保留还是忽略?

database-design - Cassandra 按 map 查询

php - 在 Laravel 5.3 中创建相关模型实例时出错

java - 基本 Java MVC : Beans and associative entities with attributes