假设我们有一个Player
表和一个Team
表以及它们之间的一对多关系(Player
只是一个Team
的成员或者无成员)
所以我在team_id
表中有一个可为空的Player
字段,引用了Team
表。
但是现在我必须存储关于球员在球队中的位置的额外信息。像:
isCaptain
number
实现这个的正确(正常)方式是什么?
我最好的想法是额外的表格:
Player
一对一(NULL)PlayerTeam
多对一(非空)Team
答案 0 :(得分:3)
我建议您自己建议制作新表:
id | player_id | team_id | role_id | number
然后使player_id唯一,team_id不为空。
这将保持播放器表的清洁并使数据库规范化。
答案 1 :(得分:0)
如果玩家只能拥有一个团队,您可以/应该直接在Player
上存储该信息。
另一方面,如果您计划存储历史信息,Player
- Team
可能会成为多对多,在这种情况下,PlayerTeam
联接表将是放置这些信息的正确位置。