mysql中的外键

时间:2017-01-29 16:23:57

标签: mysql sql database

我怀疑关联某些表的方式。我有这些表:

  • 用户表:用户名(主键)

  • 团队表:team_name(主键),用户名(外键引用用户(用户名))

通过这种关系,我认为用户可以拥有多个团队。

  • 组表:group_name(主键)

我希望一个团队可以有很多团队,但这些团队必须是不同的用户,因此用户的两个团队不能属于同一个团队。

我曾想过以这种方式与三张桌子建立关系:

  • Group_teams表:( group_name,username,team_name)。此表将具有复合主键(group_name和username),这样我就可以确保用户不能在同一组中拥有多个团队。

另外,我认为我应该创建一个复合外键引用User(用户名)和Team(team_name)来控制用户团队的存在。最后,我应该创建另一个外键引用组(group_name)来控制组的存在。

我不确定是否会这样,因为我尝试这样做时会出错。你能帮助我并告诉我你的意见吗?

2 个答案:

答案 0 :(得分:1)

如果用户(最多)只能访问一个团队,那么你就拥有0/1的关系。

最简单的方法是在TeamId表中使用Users。这将是Teams的外键引用。

不需要第三个表来表示这种关系。

答案 1 :(得分:0)

无需重现username表中的Group_teams字段,只需group_name& team_name

在插入新行之前,在Group_teams表格上创建一个触发器,检查更多其他具有相同username的团队。

查看问题" How do you check constraints from another table when entering a row into a table?",特别是this answer from Jim V描述此类设置。