我怀疑关联某些表的方式。我有这些表:
用户表:用户名(主键)
团队表:team_name(主键),用户名(外键引用用户(用户名))
通过这种关系,我认为用户可以拥有多个团队。
我希望一个团队可以有很多团队,但这些团队必须是不同的用户,因此用户的两个团队不能属于同一个团队。
我曾想过以这种方式与三张桌子建立关系:
另外,我认为我应该创建一个复合外键引用User(用户名)和Team(team_name)来控制用户团队的存在。最后,我应该创建另一个外键引用组(group_name)来控制组的存在。
我不确定是否会这样,因为我尝试这样做时会出错。你能帮助我并告诉我你的意见吗?
答案 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描述此类设置。