为玩家和锦标赛设计架构

时间:2012-07-02 20:49:47

标签: mysql sql database-design

我是SQL的初学者,我有一个简单的MySQL数据库,其中包含两个表:

  1. 玩家(身份证,姓名)
  2. 锦标赛(身份证,姓名,参赛者)
  3. 我想保存每场锦标赛参赛者的信息。我的第一个想法是participants应该包含id表中的大量players字段,但这似乎不太好。

    我该如何以正确的方式设计?

2 个答案:

答案 0 :(得分:7)

制作另一个名为Participants的表,其中包含两个字段。 Player_ID和Tournament_ID。此表可以包含尽可能多的行来关联谁在何时播放,并且您可以根据需要交叉引用它。

答案 1 :(得分:3)

从第二个表中删除“参与者”并添加第三个表:TournamentPlayers(playerid,tournamentid)。

您应该避免在一个字段中存储多个值。这将打破数据库设计的第一种常规形式(1NF),该形式表明只有原子值可以存储在一个字段中。关系数据库系统不适合处理非规范化数据,并且很难为非1NF表编写查询。