数据库设计。一对多的额外属性

时间:2012-08-01 03:55:48

标签: sql normalization one-to-many foreign-key-relationship

假设我们有一个Player表和一个Team表以及它们之间的一对多关系(Player只是一个Team的成员或者无成员)

所以我在team_id表中有一个可为空的Player字段,引用了Team表。

但是现在我必须存储关于球员在球队中的位置的额外信息。像:

  • isCaptain
  • number
  • 等...

实现这个的正确(正常)方式是什么?

我最好的想法是额外的表格:

Player一对一(NULL)PlayerTeam多对一(非空)Team

2 个答案:

答案 0 :(得分:3)

我建议您自己建议制作新表:

id | player_id | team_id | role_id | number

然后使player_id唯一,team_id不为空。

这将保持播放器表的清洁并使数据库规范化。

答案 1 :(得分:0)

如果玩家只能拥有一个团队,您可以/应该直接在Player上存储该信息。

另一方面,如果您计划存储历史信息,Player - Team可能会成为多对多,在这种情况下,PlayerTeam联接表将是放置这些信息的正确位置。