如果我有一个带有电子邮件和登录详细信息等的用户表,如果用户只属于一个团队,我可以创建一个名为team
的新列,但是如果该用户在多个团队上你构造它吗?
我能想到的最好的方法是为该特定用户提供一个称为PlayersTeams
的表,但按大规模制作似乎是要创建的大量表。这是我想出的最好的方法,但是我认为这里经验丰富的可能对我有更好的建议。
只有一个团队:
PlayerID email TeamID
1 John@abc.xyz 123
2 sarah@pqr.stu 456
3 peter@asd.jkl 789
多个团队:
PlayerID TeamID
1 123
1 456
1 789
2 123
2 789
3 456
3 789
我对此表示怀疑,但是我应该有一个特定的用户数据库,然后一旦登录用户,然后切换到团队数据库?
您要寻找的是多到多的关系。
使用第三个(接线)表是完成此情况的正确方法。示例表结构:
player: player_id, email
team: team_id, name
player_teams: player_id, team_id
问题是团队和球员之间的关系是许多与许多关系(一个团队由零,一个或多个球员组成,一个球员可以属于零,一个或多个团队)。
解决许多关系到许多关系的唯一方法是通过协会表(例如,您的本能导致您进入的Playerteam表)。
协会表的好处是,您可以添加加法列,例如位置,泽西岛号码等...
关联表将由两个表的主要键和外键返回原始表...
PlayerTeam
----------------------
PlayerID same datatype and foreign key references to player(player_id)
TeamID same datatype and foriend key references to team(TeamID)
team_number -- possible additional column for this association
position -- possible additional column for this association
建议创建主键(playerId,teamID)