DB结构 - 属于多个团队的用户



如果我有一个带有电子邮件和登录详细信息等的用户表,如果用户只属于一个团队,我可以创建一个名为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)

最新更新